From a.beregalov@gmail.com Fri May 1 15:33:32 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n41KXV8p027412 for ; Fri, 1 May 2009 15:33:32 -0500 X-ASG-Debug-ID: 1241210011-090a01270000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f177.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EB1F51D042F8 for ; Fri, 1 May 2009 13:33:32 -0700 (PDT) Received: from mail-fx0-f177.google.com (mail-fx0-f177.google.com [209.85.220.177]) by cuda.sgi.com with ESMTP id Als8ftV5hsujw3K4 for ; Fri, 01 May 2009 13:33:32 -0700 (PDT) Received: by fxm25 with SMTP id 25so2497056fxm.20 for ; Fri, 01 May 2009 13:33:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type:content-transfer-encoding; bh=zKasdxEGf5BS41o8vyRmowyFHz4wLCL336kZ+Iezj6Y=; b=VuexbjKw4j6A52DCReiuglV1cn85rmU9pZfekYBgAHvLObmEpOEXlUMZ7AukAeiNcW rFD4DRhHuAwpQHLLrrnqa+ajgsBuzgazQ745jbQO+qwZk34xK5ee/YHSTW8HkO0gOcFx +SUbpCcI/111YcaJBUQW/ukjWQu2QskpQgPRo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; b=Bd1/sHwz+SVNMuA34U1LyYV0iKzuyun09knNND+rjw+1KhRAkC5ntXayt6oIJeeSUy MdWBL6P8g6FI072RpT2SWX60KI2Bw2CRvIi3Nl4NDcKXKIadJKzPUxKgRaz2PaK/x4qa KTurTZ2bRJzs/qcRzp/P8MZhQV4BlPoUHygac= MIME-Version: 1.0 Received: by 10.204.71.68 with SMTP id g4mr2946639bkj.135.1241210010963; Fri, 01 May 2009 13:33:30 -0700 (PDT) Date: Sat, 2 May 2009 00:33:30 +0400 Message-ID: X-ASG-Orig-Subj: 2.6.30-rc4: xfs_fsr hangs Subject: 2.6.30-rc4: xfs_fsr hangs From: Alexander Beregalov To: Linux Kernel Mailing List , Kernel Testers List , xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail-fx0-f177.google.com[209.85.220.177] X-Barracuda-Start-Time: 1241210012 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0280 1.0000 -1.8399 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.84 X-Barracuda-Spam-Status: No, SCORE=-1.84 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.24648 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean # xfs_db -r /dev/sdc1 xfs_db> frag actual 23805, ideal 22890, fragmentation factor 3.84% # xfs_fsr -v /dev/sdc1 /mnt/c start inode=0 ino=158 extents before:3 after:1 DONE ino=158 then it hangs INFO: task xfs_fsr:2403 blocked for more than 120 seconds. "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. xfs_fsr D 00000000 4492 2403 1928 f3cc9dec 00000046 00000001 00000000 f3cc9de8 ec976680 ec976900 f2d06a50 ec976680 00000001 f2d06a50 f2d06a4c ffffffff f2d06a4c ec976680 f3cc9df4 c0447892 f3cc9e20 c04498ad f3cc9e28 f2d06a50 f2d06a74 f3cc9e44 00000246 Call Trace: [] schedule+0x12/0x30 [] rwsem_down_failed_common+0x6d/0x180 [] rwsem_down_write_failed+0x1d/0x30 [] call_rwsem_down_write_failed+0x6/0x8 [] ? xfs_ilock+0xee/0x100 [] ? down_write_nested+0x76/0x90 [] ? xfs_ilock+0xee/0x100 [] xfs_ilock+0xee/0x100 [] xfs_inactive+0x334/0x540 [] ? inotify_inode_is_dead+0x1b/0x80 [] xfs_fs_clear_inode+0x1f/0x30 [] clear_inode+0x8b/0x110 [] generic_delete_inode+0xe6/0x120 [] ? _spin_lock+0x66/0x70 [] generic_drop_inode+0x15f/0x230 [] ? _atomic_dec_and_lock+0x18/0x40 [] iput+0x47/0x50 [] dentry_iput+0x6f/0xc0 [] d_kill+0x24/0x50 [] dput+0x5b/0x120 [] __fput+0x162/0x240 [] fput+0x1f/0x30 [] filp_close+0x47/0x70 [] sys_close+0x6c/0xd0 [] sysenter_do_call+0x12/0x36 INFO: lockdep is turned off. From felixb@sgi.com Fri May 1 17:04:33 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n41M4XOD029887 for ; Fri, 1 May 2009 17:04:33 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id 0FF4F8F8071 for ; Fri, 1 May 2009 15:04:32 -0700 (PDT) Received: from eagdhcp-232-184.americas.sgi.com (eagdhcp-232-184.americas.sgi.com [128.162.232.184]) by estes.americas.sgi.com (Postfix) with ESMTP id E13007000103; Fri, 1 May 2009 17:04:31 -0500 (CDT) Cc: xfs@oss.sgi.com Message-Id: From: Felix Blyakher To: Christoph Hellwig In-Reply-To: <20090429144734.GA15044@infradead.org> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v926) Subject: Re: release.sh, take two Date: Fri, 1 May 2009 17:04:31 -0500 References: <20090429141108.GA14578@infradead.org> <20090429144734.GA15044@infradead.org> X-Mailer: Apple Mail (2.926) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Apr 29, 2009, at 9:47 AM, Christoph Hellwig wrote: > On Wed, Apr 29, 2009 at 10:11:08AM -0400, Christoph Hellwig wrote: >> A new release script, now using Makepkgs to simply things. Needs to >> be run from the repository directory. >> >> Anyone fine with commiting a copy to each of the repositories? > > And now with actual content: Looks good. We should also add release.sh to .gitignore. Felix > > > > #!/bin/sh > > . VERSION > > version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION} > date=`date +"%-d %B %Y"` > > echo "Updating CHANGES" > sed -e "s/${version}.*/${version} (${date})/" doc/CHANGES > doc/ > CHANGES.tmp && \ > mv doc/CHANGES.tmp doc/CHANGES > > echo "Commiting CHANGES update to git" > git-commit -a -m "${version} release" > > echo "Tagging git repository" > git-tag v${version} > > echo "Creating source tarball in build/tar/" > ./Makepkgs > > echo "Done." > echo "Please remember to push out tags using \"git push --tags\"" > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From felixb@sgi.com Fri May 1 17:34:39 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n41MYdj1030535 for ; Fri, 1 May 2009 17:34:39 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id 538603040DA for ; Fri, 1 May 2009 15:34:38 -0700 (PDT) Received: from eagdhcp-232-184.americas.sgi.com (eagdhcp-232-184.americas.sgi.com [128.162.232.184]) by estes.americas.sgi.com (Postfix) with ESMTP id 3427C7000103; Fri, 1 May 2009 17:34:38 -0500 (CDT) Cc: Christoph Hellwig , xfs@oss.sgi.com Message-Id: <65D7E102-E6EB-4555-9279-5436A54FA227@sgi.com> From: Felix Blyakher To: Felix Blyakher In-Reply-To: Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v926) Subject: Re: release.sh, take two Date: Fri, 1 May 2009 17:34:37 -0500 References: <20090429141108.GA14578@infradead.org> <20090429144734.GA15044@infradead.org> X-Mailer: Apple Mail (2.926) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On May 1, 2009, at 5:04 PM, Felix Blyakher wrote: > > On Apr 29, 2009, at 9:47 AM, Christoph Hellwig wrote: > >> On Wed, Apr 29, 2009 at 10:11:08AM -0400, Christoph Hellwig wrote: >>> A new release script, now using Makepkgs to simply things. Needs to >>> be run from the repository directory. >>> >>> Anyone fine with commiting a copy to each of the repositories? >> >> And now with actual content: > > Looks good. > We should also add release.sh to .gitignore. Sandeen corrected me on this. release.sh will be in repo. I just ran 'git clean', and was disappointed to see it removed. So, it's all good. Felix > > > Felix > >> >> >> >> #!/bin/sh >> >> . VERSION >> >> version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION} >> date=`date +"%-d %B %Y"` >> >> echo "Updating CHANGES" >> sed -e "s/${version}.*/${version} (${date})/" doc/CHANGES > doc/ >> CHANGES.tmp && \ >> mv doc/CHANGES.tmp doc/CHANGES >> >> echo "Commiting CHANGES update to git" >> git-commit -a -m "${version} release" >> >> echo "Tagging git repository" >> git-tag v${version} >> >> echo "Creating source tarball in build/tar/" >> ./Makepkgs >> >> echo "Done." >> echo "Please remember to push out tags using \"git push --tags\"" >> >> _______________________________________________ >> 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 From BATV+059a4d5e7d5bac9ba89c+2078+infradead.org+hch@bombadil.srs.infradead.org Sat May 2 01:51:40 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00, SUBJECT_FUZZY_TION autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n426pbLb044331 for ; Sat, 2 May 2009 01:51:40 -0500 X-ASG-Debug-ID: 1241247098-19ed00730000-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 992EA1D05635 for ; Fri, 1 May 2009 23:51:38 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id lKQzfWLYrYo87Jle for ; Fri, 01 May 2009 23:51:38 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M094T-0004SI-SJ; Sat, 02 May 2009 06:51:37 +0000 Date: Sat, 2 May 2009 02:51:37 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsdump: add .gitignore Subject: Re: [PATCH] xfsdump: add .gitignore Message-ID: <20090502065137.GA12536@infradead.org> References: <20090429135050.GC30808@infradead.org> <49F8621B.4060103@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49F8621B.4060103@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: 1241247099 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Apr 29, 2009 at 09:20:11AM -0500, Eric Sandeen wrote: > could add cscope/ here too, but, *shrug* We don't have it in the other gitignore files either. I don't mind adding it, but we should add it to all at the same time. From htd@fancy-poultry.org Sat May 2 05:10:12 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n42AABEt050864 for ; Sat, 2 May 2009 05:10:12 -0500 X-ASG-Debug-ID: 1241259230-284f024b0000-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 BFD5B146A2C6 for ; Sat, 2 May 2009 03:13:50 -0700 (PDT) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.186]) by cuda.sgi.com with ESMTP id TnD20fOdXDtxCVwL for ; Sat, 02 May 2009 03:13:50 -0700 (PDT) Received: from liesel.fancy-poultry.org (ti400720a080-1931.bb.online.no [83.108.199.141]) by mrelayeu.kundenserver.de (node=mreu2) with ESMTP (Nemesis) id 0MKv5w-1M0CAa1YB0-0001oH; Sat, 02 May 2009 12:10:09 +0200 Received: by liesel.fancy-poultry.org (Postfix, from userid 1000) id 6D76210740A0C; Sat, 2 May 2009 12:14:05 +0200 (CEST) Date: Sat, 2 May 2009 12:14:05 +0200 From: Heinz Diehl To: linux-kernel@vger.kernel.org Cc: Alexander Beregalov , Kernel Testers List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.30-rc4: xfs_fsr hangs Subject: Re: 2.6.30-rc4: xfs_fsr hangs Message-ID: <20090502101405.GA6145@fancy-poultry.org> Reply-To: linux-kernel@vger.kernel.org References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Organization: private site User-Agent: Mutt/1.5.19+20090405 (GNU/Linux) X-Provags-ID: V01U2FsdGVkX19cgp2K9Ko3pvHs3Q2/qyDAw8E8TAQA2ZAnuqk V4dZi3Wnxj8XpH5VIwvNtdjWkuHgMY1MWV+mafU7R/smfZKSXE uvz1NilNy2sgzRg9kfiPTNRxtqflRFh X-Barracuda-Connect: moutng.kundenserver.de[212.227.126.186] X-Barracuda-Start-Time: 1241259232 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0561 1.0000 -1.6616 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.66 X-Barracuda-Spam-Status: No, SCORE=-1.66 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.24697 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 01.05.2009, Alexander Beregalov wrote: > # xfs_db -r /dev/sdc1 > xfs_db> frag > actual 23805, ideal 22890, fragmentation factor 3.84% > # xfs_fsr -v /dev/sdc1 > /mnt/c start inode=0 > ino=158 > extents before:3 after:1 DONE ino=158 > > then it hangs I can't confirm this here on my systems: liesel:~ # uname -a Linux liesel 2.6.30-rc4 #1 SMP PREEMPT Sat May 2 11:49:13 CEST 2009 x86_64 x86_64 x86_64 GNU/Linux liesel:~ # xfs_db -r /dev/sdc1 xfs_db> frag actual 42974, ideal 42842, fragmentation factor 0.31% xfs_db> quit liesel:~ # xfs_fsr -v /dev/sdc1 /home start inode=0 ino=248755507 ino=248755507 already fully defragmented. ino=536871160 extents before:2 after:1 DONE ino=536871160 ino=536875693 extents before:3 after:1 DONE ino=536875693 ino=615920545 extents before:2 after:1 DONE ino=615920545 ino=615920557 extents before:2 after:1 DONE ino=615920557 ino=1092324584 extents before:4 after:1 DONE ino=1092324584 liesel:~ # From a.beregalov@gmail.com Sat May 2 13:35:19 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n42IZIlM065973 for ; Sat, 2 May 2009 13:35:19 -0500 X-ASG-Debug-ID: 1241289540-487b01330000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f177.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9E3AB146AB0E for ; Sat, 2 May 2009 11:39:01 -0700 (PDT) Received: from mail-fx0-f177.google.com (mail-fx0-f177.google.com [209.85.220.177]) by cuda.sgi.com with ESMTP id ceXBPIeYPltJfLWS for ; Sat, 02 May 2009 11:39:01 -0700 (PDT) Received: by fxm25 with SMTP id 25so2848105fxm.20 for ; Sat, 02 May 2009 11:35:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=n807j94Hj4DDs8hXgy/34OMTphtWytj7z+lUrm08vo0=; b=sdpEQdSBxyk/6/Zqrz19HOYoic2epOzG1DY5yviad00u8JtjpbeVkCMMU53IUjoFm8 B7KSNwFiQjjpKZzjHBSsB6fVgF5pgd0QJU+jVd8j5KlEz45XmDbslCMbPkg2A/wOBi08 zCjk42CfCMrJk1HU3d7o7/IfDrxtgqNT6jyQ8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=TQF4f5QiVUADtcYG6wKnyU8xUL1qGwaU1DYwjbCv6S11WAYsqcdi/nF+x6GEYCFBZF N+Oejy3v4oJj0iWb1tlAjwGvdGB3hGDWhNYVZ8rE3TzsmkNlP+drOXfELVPG2tpwGSdh ilXbs75yaXRf3+Bb7V0f6cYEgVrGUTR1yjGPE= MIME-Version: 1.0 Received: by 10.204.64.67 with SMTP id d3mr3859902bki.142.1241289317651; Sat, 02 May 2009 11:35:17 -0700 (PDT) In-Reply-To: <20090502101405.GA6145@fancy-poultry.org> References: <20090502101405.GA6145@fancy-poultry.org> Date: Sat, 2 May 2009 22:35:17 +0400 Message-ID: X-ASG-Orig-Subj: Re: 2.6.30-rc4: xfs_fsr hangs Subject: Re: 2.6.30-rc4: xfs_fsr hangs From: Alexander Beregalov To: linux-kernel@vger.kernel.org, Heinz Diehl Cc: Kernel Testers List , xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-fx0-f177.google.com[209.85.220.177] X-Barracuda-Start-Time: 1241289542 X-Barracuda-Bayes: INNOCENT GLOBAL 0.3907 1.0000 -0.0245 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= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.24730 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 2009/5/2 Heinz Diehl : > On 01.05.2009, Alexander Beregalov wrote: > >> # xfs_db -r /dev/sdc1 >> xfs_db> frag >> actual 23805, ideal 22890, fragmentation factor 3.84% >> # xfs_fsr -v /dev/sdc1 >> /mnt/c start inode=3D0 >> ino=3D158 >> extents before:3 after:1 DONE ino=3D158 >> >> =C2=A0then it hangs > > I can't confirm this here on my systems: > > liesel:~ # uname -a > Linux liesel 2.6.30-rc4 #1 SMP PREEMPT Sat May 2 11:49:13 CEST 2009 x86_6= 4 x86_64 x86_64 GNU/Linux I have this problem on two x86_32 hosts. It runs for about a minute and then hangs. vmstat 1: 0 1 80 30856 12284 1289452 0 0 16384 16380 224 301 0 5 0= 95 0 1 80 32020 12196 1287884 0 0 25984 16380 290 470 0 11 0= 89 0 1 80 30732 12132 1289648 0 0 23168 32760 286 413 0 6 0= 94 0 1 80 32220 12128 1287620 0 0 16384 16380 220 303 0 8 0= 92 1 0 80 198312 12108 1137956 0 0 14472 14628 223 284 0 10 3= 87 0 0 80 1118144 12108 218216 0 0 0 0 63 33 0 38 62= 0 0 0 80 1118144 12108 218216 0 0 0 0 24 26 0 0 10= 0 0 0 0 80 1118144 12108 218216 0 0 0 0 36 28 0 1 99= 0 0 0 80 1118144 12108 218216 0 0 0 0 36 32 1 1 98= 0 0 0 80 1118144 12108 218216 0 0 0 0 78 66 0 1 99= 0 From sandeen@sandeen.net Sat May 2 13:56:35 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n42IuZBV066550 for ; Sat, 2 May 2009 13:56:35 -0500 X-ASG-Debug-ID: 1241290595-79b403110000-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 A62131D06381 for ; Sat, 2 May 2009 11:56:36 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id gdfqnfNBcEktr5oB for ; Sat, 02 May 2009 11:56:36 -0700 (PDT) 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 A0F28A9B0D7; Sat, 2 May 2009 13:56:34 -0500 (CDT) Message-ID: <49FC9762.6010109@sandeen.net> Date: Sat, 02 May 2009 13:56:34 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Alexander Beregalov CC: linux-kernel@vger.kernel.org, Heinz Diehl , Kernel Testers List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.30-rc4: xfs_fsr hangs Subject: Re: 2.6.30-rc4: xfs_fsr hangs References: <20090502101405.GA6145@fancy-poultry.org> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1241290596 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.24731 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Alexander Beregalov wrote: > 2009/5/2 Heinz Diehl : >> On 01.05.2009, Alexander Beregalov wrote: >> >>> # xfs_db -r /dev/sdc1 >>> xfs_db> frag >>> actual 23805, ideal 22890, fragmentation factor 3.84% >>> # xfs_fsr -v /dev/sdc1 >>> /mnt/c start inode=0 >>> ino=158 >>> extents before:3 after:1 DONE ino=158 >>> >>> then it hangs >> I can't confirm this here on my systems: >> >> liesel:~ # uname -a >> Linux liesel 2.6.30-rc4 #1 SMP PREEMPT Sat May 2 11:49:13 CEST 2009 x86_64 x86_64 x86_64 GNU/Linux > > I have this problem on two x86_32 hosts. > It runs for about a minute and then hangs. echo w > /proc/sysrq-trigger dmesg would show all the sleeping processes... -Eric From a.beregalov@gmail.com Sat May 2 13:59:34 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n42IxXqJ066629 for ; Sat, 2 May 2009 13:59:34 -0500 X-ASG-Debug-ID: 1241290996-487a01fe0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f226.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9FEA3146ACF7 for ; Sat, 2 May 2009 12:03:16 -0700 (PDT) Received: from mail-bw0-f226.google.com (mail-bw0-f226.google.com [209.85.218.226]) by cuda.sgi.com with ESMTP id YBA2BQhshuvCasiX for ; Sat, 02 May 2009 12:03:16 -0700 (PDT) Received: by bwz26 with SMTP id 26so2830858bwz.20 for ; Sat, 02 May 2009 11:59:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=RrNhnQjghgiZTH6O3JAdjwXPh7WGJQlI7zzo7POx+QE=; b=CIfL81JoJ0NGpdLN12yRb4WrZrNy/cMd8U/q8KOvXcyRcsXrxMwLWoNneXpCaAs28C hGfsmQeHAVIkTQNq3w/9XX3JC4iF4aFL8yLqCZ04ps62nAfnyqtb/mx6EqqPk2IX3r/i gdc8UTLwDUfAzWhZfoF/Yl58JUHqXUl9x7ivY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=cMOIyYhGDlgMQYabL2GFAhQdnVcAm0gLghe6doQPX1VpBCHwUdfxIzOvs9dtOlbJIn ExXBs/6Fsfty/PAprrWvJlUx0VcersoMG9dL4ks6Zzs0vvdFtQBf3bgGnz85cRQH2et5 NP9z5cRh2/PLxCXNfMjak30oS991Me5f/rRT4= MIME-Version: 1.0 Received: by 10.204.119.129 with SMTP id z1mr3863246bkq.67.1241290773144; Sat, 02 May 2009 11:59:33 -0700 (PDT) In-Reply-To: <49FC9762.6010109@sandeen.net> References: <20090502101405.GA6145@fancy-poultry.org> <49FC9762.6010109@sandeen.net> Date: Sat, 2 May 2009 22:59:33 +0400 Message-ID: X-ASG-Orig-Subj: Re: 2.6.30-rc4: xfs_fsr hangs Subject: Re: 2.6.30-rc4: xfs_fsr hangs From: Alexander Beregalov To: Eric Sandeen Cc: linux-kernel@vger.kernel.org, Heinz Diehl , Kernel Testers List , xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-bw0-f226.google.com[209.85.218.226] X-Barracuda-Start-Time: 1241290997 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0080 1.0000 -1.9689 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.97 X-Barracuda-Spam-Status: No, SCORE=-1.97 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.24730 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 2009/5/2 Eric Sandeen : > Alexander Beregalov wrote: >> 2009/5/2 Heinz Diehl : >>> On 01.05.2009, Alexander Beregalov wrote: >>> >>>> # xfs_db -r /dev/sdc1 >>>> xfs_db> frag >>>> actual 23805, ideal 22890, fragmentation factor 3.84% >>>> # xfs_fsr -v /dev/sdc1 >>>> /mnt/c start inode=3D0 >>>> ino=3D158 >>>> extents before:3 after:1 DONE ino=3D158 >>>> >>>> =C2=A0then it hangs >>> I can't confirm this here on my systems: >>> >>> liesel:~ # uname -a >>> Linux liesel 2.6.30-rc4 #1 SMP PREEMPT Sat May 2 11:49:13 CEST 2009 x86= _64 x86_64 x86_64 GNU/Linux >> >> I have this problem on two x86_32 hosts. >> It runs for about a minute and then hangs. > > echo w > /proc/sysrq-trigger > dmesg > > would show all the sleeping processes... It is the same as I posted already: SysRq : Show Blocked State task PC stack pid father xfs_fsr D 00000000 5304 3393 1 ef479dec 00000046 00000001 00000000 ef479de8 f2a58000 f2a58280 f3123830 f2a58000 00000001 f3123830 f312382c ffffffff f312382c f2a58000 ef479df4 c0447892 ef479e20 c04498ad ef479e28 f3123830 f3123854 ef479e44 00000246 Call Trace: [] schedule+0x12/0x30 [] rwsem_down_failed_common+0x6d/0x180 [] rwsem_down_write_failed+0x1d/0x30 [] call_rwsem_down_write_failed+0x6/0x8 [] ? xfs_ilock+0xee/0x100 [] ? down_write_nested+0x76/0x90 [] ? xfs_ilock+0xee/0x100 [] xfs_ilock+0xee/0x100 [] xfs_inactive+0x334/0x540 [] ? inotify_inode_is_dead+0x1b/0x80 [] xfs_fs_clear_inode+0x1f/0x30 [] clear_inode+0x8b/0x110 [] generic_delete_inode+0xe6/0x120 [] ? _spin_lock+0x66/0x70 [] generic_drop_inode+0x15f/0x230 [] ? _atomic_dec_and_lock+0x18/0x40 [] iput+0x47/0x50 [] dentry_iput+0x6f/0xc0 [] d_kill+0x24/0x50 [] dput+0x5b/0x120 [] __fput+0x162/0x240 [] fput+0x1f/0x30 [] filp_close+0x47/0x70 [] sys_close+0x6c/0xd0 [] sysenter_do_call+0x12/0x36 From sandeen@sandeen.net Sat May 2 15:14:00 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n42KDx38068910 for ; Sat, 2 May 2009 15:14:00 -0500 X-ASG-Debug-ID: 1241295463-028601960000-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 EC866146ADE0 for ; Sat, 2 May 2009 13:17:43 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id H1AX5C0yxWZHDw98 for ; Sat, 02 May 2009 13:17:43 -0700 (PDT) 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 7A0CF10237FE; Sat, 2 May 2009 15:14:00 -0500 (CDT) Message-ID: <49FCA988.2050600@sandeen.net> Date: Sat, 02 May 2009 15:14:00 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Alexander Beregalov CC: linux-kernel@vger.kernel.org, Heinz Diehl , Kernel Testers List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.30-rc4: xfs_fsr hangs Subject: Re: 2.6.30-rc4: xfs_fsr hangs References: <20090502101405.GA6145@fancy-poultry.org> <49FC9762.6010109@sandeen.net> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1241295463 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.24736 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Alexander Beregalov wrote: > 2009/5/2 Eric Sandeen : >> Alexander Beregalov wrote: >>> 2009/5/2 Heinz Diehl : >>>> On 01.05.2009, Alexander Beregalov wrote: >>>> >>>>> # xfs_db -r /dev/sdc1 >>>>> xfs_db> frag >>>>> actual 23805, ideal 22890, fragmentation factor 3.84% >>>>> # xfs_fsr -v /dev/sdc1 >>>>> /mnt/c start inode=0 >>>>> ino=158 >>>>> extents before:3 after:1 DONE ino=158 >>>>> >>>>> then it hangs >>>> I can't confirm this here on my systems: >>>> >>>> liesel:~ # uname -a >>>> Linux liesel 2.6.30-rc4 #1 SMP PREEMPT Sat May 2 11:49:13 CEST 2009 x86_64 x86_64 x86_64 GNU/Linux >>> I have this problem on two x86_32 hosts. >>> It runs for about a minute and then hangs. >> echo w > /proc/sysrq-trigger >> dmesg >> >> would show all the sleeping processes... > It is the same as I posted already: hum, only 1 thread, interesting... Thanks, -Eric From edt@aei.ca Sat May 2 20:47:55 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n431lsLe078312 for ; Sat, 2 May 2009 20:47:54 -0500 X-ASG-Debug-ID: 1241315275-734601880000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail001.aei.ca (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 451F41D06B63 for ; Sat, 2 May 2009 18:47:55 -0700 (PDT) Received: from mail001.aei.ca (mail001.aei.ca [206.123.6.130]) by cuda.sgi.com with ESMTP id qlF1u51IIKv3g9G0 for ; Sat, 02 May 2009 18:47:55 -0700 (PDT) Received: (qmail 5851 invoked by uid 89); 3 May 2009 01:47:54 -0000 Received: by simscan 1.2.0 ppid: 5838, pid: 5848, t: 0.0039s scanners: regex: 1.2.0 attach: 1.2.0 Received: from mail002.aei.ca (HELO mail002.contact.net) (206.123.6.132) by 0 with (DHE-RSA-AES256-SHA encrypted) SMTP; 3 May 2009 01:47:54 -0000 Received: (qmail 16987 invoked by uid 89); 3 May 2009 01:47:54 -0000 Received: by simscan 1.2.0 ppid: 16977, pid: 16982, t: 0.4942s scanners: regex: 1.2.0 attach: 1.2.0 clamav: 0.95.1/m: spam: 3.2.5 Received: from 254-78.162.dsl.aei.ca (HELO grover.localnet) (edt@aei.ca@216.162.78.254) by mail.aei.ca with ESMTPA; 3 May 2009 01:47:53 -0000 From: Ed Tomlinson To: Eric Sandeen X-ASG-Orig-Subj: Re: 2.6.30-rc4: xfs_fsr hangs Subject: Re: 2.6.30-rc4: xfs_fsr hangs Date: Sat, 2 May 2009 21:47:51 -0400 User-Agent: KMail/1.11.2 (Linux/2.6.30-rc3-crc; KDE/4.2.2; x86_64; ; ) Cc: Alexander Beregalov , linux-kernel@vger.kernel.org, Heinz Diehl , Kernel Testers List , xfs@oss.sgi.com References: <49FCA988.2050600@sandeen.net> In-Reply-To: <49FCA988.2050600@sandeen.net> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200905022147.52216.edt@aei.ca> X-Barracuda-Connect: mail001.aei.ca[206.123.6.130] X-Barracuda-Start-Time: 1241315276 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.24756 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Saturday 02 May 2009 16:14:00 Eric Sandeen wrote: > Alexander Beregalov wrote: > > 2009/5/2 Eric Sandeen : > >> Alexander Beregalov wrote: > >>> 2009/5/2 Heinz Diehl : > >>>> On 01.05.2009, Alexander Beregalov wrote: > >>>> > >>>>> # xfs_db -r /dev/sdc1 > >>>>> xfs_db> frag > >>>>> actual 23805, ideal 22890, fragmentation factor 3.84% > >>>>> # xfs_fsr -v /dev/sdc1 > >>>>> /mnt/c start inode=0 > >>>>> ino=158 > >>>>> extents before:3 after:1 DONE ino=158 > >>>>> > >>>>> then it hangs > >>>> I can't confirm this here on my systems: > >>>> > >>>> liesel:~ # uname -a > >>>> Linux liesel 2.6.30-rc4 #1 SMP PREEMPT Sat May 2 11:49:13 CEST 2009 x86_64 x86_64 x86_64 GNU/Linux > >>> I have this problem on two x86_32 hosts. > >>> It runs for about a minute and then hangs. > >> echo w > /proc/sysrq-trigger > >> dmesg > >> > >> would show all the sleeping processes... > > It is the same as I posted already: > > hum, only 1 thread, interesting... I have also had strange stalls with rc4 (but not with rc3). In one case sysrq would just print the title of commands no data would follow. Do not know if this is related but it may be that this is not just an xfs issue. Ed Tomlinson From sandeen@sandeen.net Sat May 2 23:58:49 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_28, J_CHICKENPOX_47,J_CHICKENPOX_54 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n434wn10081749 for ; Sat, 2 May 2009 23:58:49 -0500 X-ASG-Debug-ID: 1241326730-4bf302f80000-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 2D32A25B417 for ; Sat, 2 May 2009 21:58:50 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id oCWwWhIY4nUkZ7K9 for ; Sat, 02 May 2009 21:58:50 -0700 (PDT) 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 25488A9B0B1; Sat, 2 May 2009 23:58:49 -0500 (CDT) Message-ID: <49FD2488.70503@sandeen.net> Date: Sat, 02 May 2009 23:58:48 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Alexander Beregalov CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.30-rc4: xfs_fsr hangs Subject: Re: 2.6.30-rc4: xfs_fsr hangs References: <20090502101405.GA6145@fancy-poultry.org> <49FC9762.6010109@sandeen.net> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1241326731 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.24768 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Alexander Beregalov wrote: > 2009/5/2 Eric Sandeen : >> Alexander Beregalov wrote: >>> 2009/5/2 Heinz Diehl : >>>> On 01.05.2009, Alexander Beregalov wrote: >>>> >>>>> # xfs_db -r /dev/sdc1 >>>>> xfs_db> frag >>>>> actual 23805, ideal 22890, fragmentation factor 3.84% >>>>> # xfs_fsr -v /dev/sdc1 >>>>> /mnt/c start inode=0 >>>>> ino=158 >>>>> extents before:3 after:1 DONE ino=158 >>>>> >>>>> then it hangs >>>> I can't confirm this here on my systems: >>>> >>>> liesel:~ # uname -a >>>> Linux liesel 2.6.30-rc4 #1 SMP PREEMPT Sat May 2 11:49:13 CEST 2009 x86_64 x86_64 x86_64 GNU/Linux >>> I have this problem on two x86_32 hosts. >>> It runs for about a minute and then hangs. >> echo w > /proc/sysrq-trigger >> dmesg >> >> would show all the sleeping processes... > It is the same as I posted already: (trimming cc's) Does this happen if you try to defrag a single file? i.e. something like: # for I in `seq 10 -1 0`; do dd if=/dev/zero of=fragfile bs=4k count=1 seek=$I conv=notrunc oflag=sync done # xfs_fsr fragfile I'm guessing it requires some activity on the files that are being defragmented, but maybe worth a test (the test passes fine for me, though). -Eric From a.beregalov@gmail.com Sun May 3 02:15:26 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_28, J_CHICKENPOX_47,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n437FQTL089052 for ; Sun, 3 May 2009 02:15:26 -0500 X-ASG-Debug-ID: 1241334926-701c03890000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f177.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6BE0D1D06CFB for ; Sun, 3 May 2009 00:15:26 -0700 (PDT) Received: from mail-fx0-f177.google.com (mail-fx0-f177.google.com [209.85.220.177]) by cuda.sgi.com with ESMTP id rUvUAVeCoa95pMgl for ; Sun, 03 May 2009 00:15:26 -0700 (PDT) Received: by fxm25 with SMTP id 25so3034645fxm.20 for ; Sun, 03 May 2009 00:15:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=2oURuy8ptydRJUORvJtxienLvs6x8CU9ILfb12wl4e8=; b=H/qSbyeu1NU0ww6NwfxH/0yin0AM0dQD8opcKSGYcM9csPesJGkfjYV0K3mzwFc8S6 9+23a9oQ60yLiTgHwqaThkZxEwHLeYcVwgP4s1/g5ndaZiRsLPY1yVqk2jttWCKXxnp0 I3PqVrqC4WNf3A8TBGOK31JB9WTAF0183E3Xg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=tlrzQ3aXKdpvRBaM9K66/IpY+hOKptif3zUZHMFqjMbpcnbU285hZtwQ85wZjLP4d+ 8ztx7iK609CO/usEx0V7xUKCw2nE5XmiRBYFCiD3kH0EE89CKGv+Im/rSMs+2w0cTTcG 17AiUFHDQ21f/WHYrbx1YC5QrsfWSBT4FQnI8= MIME-Version: 1.0 Received: by 10.204.59.18 with SMTP id j18mr4317655bkh.206.1241334925844; Sun, 03 May 2009 00:15:25 -0700 (PDT) In-Reply-To: <49FD2488.70503@sandeen.net> References: <20090502101405.GA6145@fancy-poultry.org> <49FC9762.6010109@sandeen.net> <49FD2488.70503@sandeen.net> Date: Sun, 3 May 2009 11:15:25 +0400 Message-ID: X-ASG-Orig-Subj: Re: 2.6.30-rc4: xfs_fsr hangs Subject: Re: 2.6.30-rc4: xfs_fsr hangs From: Alexander Beregalov To: Eric Sandeen Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-fx0-f177.google.com[209.85.220.177] X-Barracuda-Start-Time: 1241334928 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0538 1.0000 -1.6762 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.68 X-Barracuda-Spam-Status: No, SCORE=-1.68 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.24776 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 2009/5/3 Eric Sandeen : > Alexander Beregalov wrote: >> 2009/5/2 Eric Sandeen : >>> Alexander Beregalov wrote: >>>> 2009/5/2 Heinz Diehl : >>>>> On 01.05.2009, Alexander Beregalov wrote: >>>>> >>>>>> # xfs_db -r /dev/sdc1 >>>>>> xfs_db> frag >>>>>> actual 23805, ideal 22890, fragmentation factor 3.84% >>>>>> # xfs_fsr -v /dev/sdc1 >>>>>> /mnt/c start inode=3D0 >>>>>> ino=3D158 >>>>>> extents before:3 after:1 DONE ino=3D158 >>>>>> >>>>>> =C2=A0then it hangs >>>>> I can't confirm this here on my systems: >>>>> >>>>> liesel:~ # uname -a >>>>> Linux liesel 2.6.30-rc4 #1 SMP PREEMPT Sat May 2 11:49:13 CEST 2009 x= 86_64 x86_64 x86_64 GNU/Linux >>>> I have this problem on two x86_32 hosts. >>>> It runs for about a minute and then hangs. >>> echo w > /proc/sysrq-trigger >>> dmesg >>> >>> would show all the sleeping processes... >> It is the same as I posted already: > > (trimming cc's) > > Does this happen if you try to defrag a single file? =C2=A0i.e. something= like: Yes, it does. > > # for I in `seq 10 -1 0`; do > =C2=A0dd if=3D/dev/zero of=3Dfragfile bs=3D4k count=3D1 seek=3D$I conv=3D= notrunc oflag=3Dsync > done > > # xfs_fsr fragfile > > I'm guessing it requires some activity on the files that are being > defragmented, but maybe worth a test (the test passes fine for me, though= ). > > -Eric > > From BATV+490b9acfafa5d1595c3a+2079+infradead.org+hch@bombadil.srs.infradead.org Sun May 3 02:19:31 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n437JTd5089190 for ; Sun, 3 May 2009 02:19:31 -0500 X-ASG-Debug-ID: 1241335171-3b6a00d70000-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 DB91325B7FD; Sun, 3 May 2009 00:19:31 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id w7V1WgnZxQwJi5Jr; Sun, 03 May 2009 00:19:31 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M0Vz0-0007ej-DF; Sun, 03 May 2009 07:19:30 +0000 Date: Sun, 3 May 2009 03:19:30 -0400 From: Christoph Hellwig To: Felix Blyakher Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: release.sh, take two Subject: Re: release.sh, take two Message-ID: <20090503071930.GA25756@infradead.org> References: <20090429141108.GA14578@infradead.org> <20090429144734.GA15044@infradead.org> <65D7E102-E6EB-4555-9279-5436A54FA227@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <65D7E102-E6EB-4555-9279-5436A54FA227@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: 1241335171 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Ok, I've commited it to the xfsprogs-dev, xfsdump-dev and dmapi-dev repositories. As far as I'm converned we are now ready for a release. From sandeen@sandeen.net Sun May 3 09:30:41 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n43EUeO5105876 for ; Sun, 3 May 2009 09:30:41 -0500 X-ASG-Debug-ID: 1241361268-6eff00290000-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 902D0146C18E for ; Sun, 3 May 2009 07:34:28 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 2VNCSFkmbcnKCBjd for ; Sun, 03 May 2009 07:34:28 -0700 (PDT) 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 6055CAA60F5; Sun, 3 May 2009 09:30:39 -0500 (CDT) Message-ID: <49FDAA8E.80205@sandeen.net> Date: Sun, 03 May 2009 09:30:38 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Alexander Beregalov CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.30-rc4: xfs_fsr hangs Subject: Re: 2.6.30-rc4: xfs_fsr hangs References: <20090502101405.GA6145@fancy-poultry.org> <49FC9762.6010109@sandeen.net> <49FD2488.70503@sandeen.net> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1241361269 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.24801 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Alexander Beregalov wrote: > 2009/5/3 Eric Sandeen : ... >> Does this happen if you try to defrag a single file? i.e. something like: > Yes, it does. Oh, interesting. I didn't really expect that. The testcase I provided worked for me. Maybe you can provide your kernel .config and I'll try on a 32-bit box (I only tested 64-bit so far). Thanks, -Eric From a.beregalov@gmail.com Sun May 3 15:33:05 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n43KX4uV132691 for ; Sun, 3 May 2009 15:33:04 -0500 X-ASG-Debug-ID: 1241383008-6b1f00e70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f226.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3C832146CA3B for ; Sun, 3 May 2009 13:36:49 -0700 (PDT) Received: from mail-bw0-f226.google.com (mail-bw0-f226.google.com [209.85.218.226]) by cuda.sgi.com with ESMTP id 8Hi4mejzOYxyKmjz for ; Sun, 03 May 2009 13:36:49 -0700 (PDT) Received: by bwz26 with SMTP id 26so3286184bwz.20 for ; Sun, 03 May 2009 13:33:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=Z7IbnjzZIUi15JKkB3iN9bAEAKULWZT81HyvM16woRY=; b=ZbPNcAd+cUHl3F8Vc/avqfQIcvtzhSr6LL9J3z0h7QMK7yENzcx+AZsc4xb41NDtFC dFsW687/PZMbhKap4jajFY4KoSNAWxwGDkbunaKhAm7wZKvDurTR5YyOWSu9cdqxEJPQ 1WELYIheJ7m83fJi+5530F9KQTgbGFtt2S9gc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=K2el/LOFad3jO+R2ptMhuXuhK7bWqnDfmPNyQ298NfRy3oeN5NmQnvZSxh4Mw63J9P IdWdoH2B4v+IGI2GxOfp8XmxyE2scK4y10mzLEyl/BMijZ8owEDVa1hoGDebm7Z2u6N+ zVJa+5CfAdYzixQLKtkW92yh+utxbIlGSiufE= MIME-Version: 1.0 Received: by 10.204.117.141 with SMTP id r13mr4944361bkq.207.1241382780293; Sun, 03 May 2009 13:33:00 -0700 (PDT) In-Reply-To: <49FDAA8E.80205@sandeen.net> References: <20090502101405.GA6145@fancy-poultry.org> <49FC9762.6010109@sandeen.net> <49FD2488.70503@sandeen.net> <49FDAA8E.80205@sandeen.net> Date: Mon, 4 May 2009 00:33:00 +0400 Message-ID: X-ASG-Orig-Subj: Re: 2.6.30-rc4: xfs_fsr hangs Subject: Re: 2.6.30-rc4: xfs_fsr hangs From: Alexander Beregalov To: Eric Sandeen Cc: xfs@oss.sgi.com Content-Type: multipart/mixed; boundary=001636c599f6a65338046907f308 X-Barracuda-Connect: mail-bw0-f226.google.com[209.85.218.226] X-Barracuda-Start-Time: 1241383014 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2855 1.0000 -0.4109 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.41 X-Barracuda-Spam-Status: No, SCORE=-0.41 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.24825 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --001636c599f6a65338046907f308 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable 2009/5/3 Eric Sandeen : > Alexander Beregalov wrote: >> 2009/5/3 Eric Sandeen : > ... > >>> Does this happen if you try to defrag a single file? =C2=A0i.e. somethi= ng like: >> Yes, it does. > > Oh, interesting. =C2=A0I didn't really expect that. =C2=A0The testcase I = provided > worked for me. =C2=A0Maybe you can provide your kernel .config and I'll t= ry > on a 32-bit box (I only tested 64-bit so far). Attached. --001636c599f6a65338046907f308 Content-Type: application/octet-stream; name=config Content-Disposition: attachment; filename=config Content-Transfer-Encoding: base64 X-Attachment-Id: f_fua7810z0 IwojIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0CiMgTGlu dXgga2VybmVsIHZlcnNpb246IDIuNi4zMC1yYzQKIyBTdW4gTWF5ICAzIDAwOjAxOjA4IDIwMDkK IwojIENPTkZJR182NEJJVCBpcyBub3Qgc2V0CkNPTkZJR19YODZfMzI9eQojIENPTkZJR19YODZf NjQgaXMgbm90IHNldApDT05GSUdfWDg2PXkKQ09ORklHX0FSQ0hfREVGQ09ORklHPSJhcmNoL3g4 Ni9jb25maWdzL2kzODZfZGVmY29uZmlnIgpDT05GSUdfR0VORVJJQ19USU1FPXkKQ09ORklHX0dF TkVSSUNfQ01PU19VUERBVEU9eQpDT05GSUdfQ0xPQ0tTT1VSQ0VfV0FUQ0hET0c9eQpDT05GSUdf R0VORVJJQ19DTE9DS0VWRU5UUz15CkNPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTX0JST0FEQ0FT VD15CkNPTkZJR19MT0NLREVQX1NVUFBPUlQ9eQpDT05GSUdfU1RBQ0tUUkFDRV9TVVBQT1JUPXkK Q09ORklHX0hBVkVfTEFURU5DWVRPUF9TVVBQT1JUPXkKQ09ORklHX0ZBU1RfQ01QWENIR19MT0NB TD15CkNPTkZJR19NTVU9eQpDT05GSUdfWk9ORV9ETUE9eQpDT05GSUdfR0VORVJJQ19JU0FfRE1B PXkKQ09ORklHX0dFTkVSSUNfSU9NQVA9eQpDT05GSUdfR0VORVJJQ19CVUc9eQpDT05GSUdfR0VO RVJJQ19IV0VJR0hUPXkKQ09ORklHX0FSQ0hfTUFZX0hBVkVfUENfRkRDPXkKIyBDT05GSUdfUldT RU1fR0VORVJJQ19TUElOTE9DSyBpcyBub3Qgc2V0CkNPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09S SVRITT15CkNPTkZJR19BUkNIX0hBU19DUFVfSURMRV9XQUlUPXkKQ09ORklHX0dFTkVSSUNfQ0FM SUJSQVRFX0RFTEFZPXkKIyBDT05GSUdfR0VORVJJQ19USU1FX1ZTWVNDQUxMIGlzIG5vdCBzZXQK Q09ORklHX0FSQ0hfSEFTX0NQVV9SRUxBWD15CkNPTkZJR19BUkNIX0hBU19ERUZBVUxUX0lETEU9 eQpDT05GSUdfQVJDSF9IQVNfQ0FDSEVfTElORV9TSVpFPXkKQ09ORklHX0hBVkVfU0VUVVBfUEVS X0NQVV9BUkVBPXkKQ09ORklHX0hBVkVfRFlOQU1JQ19QRVJfQ1BVX0FSRUE9eQojIENPTkZJR19I QVZFX0NQVU1BU0tfT0ZfQ1BVX01BUCBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX0hJQkVSTkFUSU9O X1BPU1NJQkxFPXkKQ09ORklHX0FSQ0hfU1VTUEVORF9QT1NTSUJMRT15CiMgQ09ORklHX1pPTkVf RE1BMzIgaXMgbm90IHNldApDT05GSUdfQVJDSF9QT1BVTEFURVNfTk9ERV9NQVA9eQojIENPTkZJ R19BVURJVF9BUkNIIGlzIG5vdCBzZXQKQ09ORklHX0FSQ0hfU1VQUE9SVFNfT1BUSU1JWkVEX0lO TElOSU5HPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfREVCVUdfUEFHRUFMTE9DPXkKQ09ORklHX0dF TkVSSUNfSEFSRElSUVM9eQpDT05GSUdfR0VORVJJQ19IQVJESVJRU19OT19fRE9fSVJRPXkKQ09O RklHX0dFTkVSSUNfSVJRX1BST0JFPXkKQ09ORklHX1g4Nl8zMl9MQVpZX0dTPXkKQ09ORklHX0tU SU1FX1NDQUxBUj15CkNPTkZJR19ERUZDT05GSUdfTElTVD0iL2xpYi9tb2R1bGVzLyRVTkFNRV9S RUxFQVNFLy5jb25maWciCgojCiMgR2VuZXJhbCBzZXR1cAojCkNPTkZJR19FWFBFUklNRU5UQUw9 eQpDT05GSUdfQlJPS0VOX09OX1NNUD15CkNPTkZJR19MT0NLX0tFUk5FTD15CkNPTkZJR19JTklU X0VOVl9BUkdfTElNSVQ9MzIKQ09ORklHX0xPQ0FMVkVSU0lPTj0iIgpDT05GSUdfTE9DQUxWRVJT SU9OX0FVVE89eQpDT05GSUdfSEFWRV9LRVJORUxfR1pJUD15CkNPTkZJR19IQVZFX0tFUk5FTF9C WklQMj15CkNPTkZJR19IQVZFX0tFUk5FTF9MWk1BPXkKIyBDT05GSUdfS0VSTkVMX0daSVAgaXMg bm90IHNldAojIENPTkZJR19LRVJORUxfQlpJUDIgaXMgbm90IHNldApDT05GSUdfS0VSTkVMX0xa TUE9eQpDT05GSUdfU1dBUD15CkNPTkZJR19TWVNWSVBDPXkKQ09ORklHX1NZU1ZJUENfU1lTQ1RM PXkKIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKIyBDT05GSUdfQlNEX1BST0NFU1Nf QUNDVCBpcyBub3Qgc2V0CiMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0CiMgQ09ORklHX0FV RElUIGlzIG5vdCBzZXQKCiMKIyBSQ1UgU3Vic3lzdGVtCiMKIyBDT05GSUdfQ0xBU1NJQ19SQ1Ug aXMgbm90IHNldAojIENPTkZJR19UUkVFX1JDVSBpcyBub3Qgc2V0CkNPTkZJR19QUkVFTVBUX1JD VT15CkNPTkZJR19SQ1VfVFJBQ0U9eQojIENPTkZJR19UUkVFX1JDVV9UUkFDRSBpcyBub3Qgc2V0 CkNPTkZJR19QUkVFTVBUX1JDVV9UUkFDRT15CkNPTkZJR19JS0NPTkZJRz15CkNPTkZJR19JS0NP TkZJR19QUk9DPXkKQ09ORklHX0xPR19CVUZfU0hJRlQ9MTgKQ09ORklHX0hBVkVfVU5TVEFCTEVf U0NIRURfQ0xPQ0s9eQojIENPTkZJR19HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiMgQ09ORklHX0NH Uk9VUFMgaXMgbm90IHNldAojIENPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyIGlzIG5vdCBzZXQK IyBDT05GSUdfUkVMQVkgaXMgbm90IHNldApDT05GSUdfTkFNRVNQQUNFUz15CiMgQ09ORklHX1VU U19OUyBpcyBub3Qgc2V0CiMgQ09ORklHX0lQQ19OUyBpcyBub3Qgc2V0CiMgQ09ORklHX1VTRVJf TlMgaXMgbm90IHNldAojIENPTkZJR19QSURfTlMgaXMgbm90IHNldAojIENPTkZJR19ORVRfTlMg aXMgbm90IHNldAojIENPTkZJR19CTEtfREVWX0lOSVRSRCBpcyBub3Qgc2V0CiMgQ09ORklHX0ND X09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKQ09ORklHX1NZU0NUTD15CkNPTkZJR19BTk9O X0lOT0RFUz15CiMgQ09ORklHX0VNQkVEREVEIGlzIG5vdCBzZXQKQ09ORklHX1VJRDE2PXkKQ09O RklHX1NZU0NUTF9TWVNDQUxMPXkKQ09ORklHX0tBTExTWU1TPXkKQ09ORklHX0tBTExTWU1TX0FM TD15CiMgQ09ORklHX0tBTExTWU1TX0VYVFJBX1BBU1MgaXMgbm90IHNldAojIENPTkZJR19TVFJJ UF9BU01fU1lNUyBpcyBub3Qgc2V0CkNPTkZJR19IT1RQTFVHPXkKQ09ORklHX1BSSU5USz15CkNP TkZJR19CVUc9eQpDT05GSUdfRUxGX0NPUkU9eQpDT05GSUdfUENTUEtSX1BMQVRGT1JNPXkKQ09O RklHX0JBU0VfRlVMTD15CkNPTkZJR19GVVRFWD15CkNPTkZJR19FUE9MTD15CkNPTkZJR19TSUdO QUxGRD15CkNPTkZJR19USU1FUkZEPXkKQ09ORklHX0VWRU5URkQ9eQpDT05GSUdfU0hNRU09eQpD T05GSUdfQUlPPXkKQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQ09ORklHX1BDSV9RVUlSS1M9 eQpDT05GSUdfU0xVQl9ERUJVRz15CiMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldAojIENP TkZJR19TTEFCIGlzIG5vdCBzZXQKQ09ORklHX1NMVUI9eQojIENPTkZJR19TTE9CIGlzIG5vdCBz ZXQKIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qg c2V0CkNPTkZJR19IQVZFX09QUk9GSUxFPXkKIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0CkNP TkZJR19IQVZFX0VGRklDSUVOVF9VTkFMSUdORURfQUNDRVNTPXkKQ09ORklHX0hBVkVfSU9SRU1B UF9QUk9UPXkKQ09ORklHX0hBVkVfS1BST0JFUz15CkNPTkZJR19IQVZFX0tSRVRQUk9CRVM9eQpD T05GSUdfSEFWRV9BUkNIX1RSQUNFSE9PSz15CkNPTkZJR19IQVZFX0RNQV9BUElfREVCVUc9eQoj IENPTkZJR19TTE9XX1dPUksgaXMgbm90IHNldApDT05GSUdfSEFWRV9HRU5FUklDX0RNQV9DT0hF UkVOVD15CkNPTkZJR19TTEFCSU5GTz15CkNPTkZJR19SVF9NVVRFWEVTPXkKQ09ORklHX0JBU0Vf U01BTEw9MApDT05GSUdfTU9EVUxFUz15CkNPTkZJR19NT0RVTEVfRk9SQ0VfTE9BRD15CkNPTkZJ R19NT0RVTEVfVU5MT0FEPXkKQ09ORklHX01PRFVMRV9GT1JDRV9VTkxPQUQ9eQojIENPTkZJR19N T0RWRVJTSU9OUyBpcyBub3Qgc2V0CiMgQ09ORklHX01PRFVMRV9TUkNWRVJTSU9OX0FMTCBpcyBu b3Qgc2V0CkNPTkZJR19CTE9DSz15CiMgQ09ORklHX0xCRCBpcyBub3Qgc2V0CiMgQ09ORklHX0JM S19ERVZfQlNHIGlzIG5vdCBzZXQKIyBDT05GSUdfQkxLX0RFVl9JTlRFR1JJVFkgaXMgbm90IHNl dAoKIwojIElPIFNjaGVkdWxlcnMKIwpDT05GSUdfSU9TQ0hFRF9OT09QPXkKIyBDT05GSUdfSU9T Q0hFRF9BUyBpcyBub3Qgc2V0CiMgQ09ORklHX0lPU0NIRURfREVBRExJTkUgaXMgbm90IHNldApD T05GSUdfSU9TQ0hFRF9DRlE9eQojIENPTkZJR19ERUZBVUxUX0FTIGlzIG5vdCBzZXQKIyBDT05G SUdfREVGQVVMVF9ERUFETElORSBpcyBub3Qgc2V0CkNPTkZJR19ERUZBVUxUX0NGUT15CiMgQ09O RklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CkNPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImNmcSIK IyBDT05GSUdfRlJFRVpFUiBpcyBub3Qgc2V0CgojCiMgUHJvY2Vzc29yIHR5cGUgYW5kIGZlYXR1 cmVzCiMKQ09ORklHX1RJQ0tfT05FU0hPVD15CkNPTkZJR19OT19IWj15CiMgQ09ORklHX0hJR0hf UkVTX1RJTUVSUyBpcyBub3Qgc2V0CkNPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTX0JVSUxEPXkK IyBDT05GSUdfU01QIGlzIG5vdCBzZXQKIyBDT05GSUdfU1BBUlNFX0lSUSBpcyBub3Qgc2V0CiMg Q09ORklHX1g4Nl9NUFBBUlNFIGlzIG5vdCBzZXQKIyBDT05GSUdfWDg2X0VYVEVOREVEX1BMQVRG T1JNIGlzIG5vdCBzZXQKQ09ORklHX1NDSEVEX09NSVRfRlJBTUVfUE9JTlRFUj15CiMgQ09ORklH X1BBUkFWSVJUX0dVRVNUIGlzIG5vdCBzZXQKIyBDT05GSUdfTUVNVEVTVCBpcyBub3Qgc2V0CiMg Q09ORklHX00zODYgaXMgbm90IHNldAojIENPTkZJR19NNDg2IGlzIG5vdCBzZXQKIyBDT05GSUdf TTU4NiBpcyBub3Qgc2V0CiMgQ09ORklHX001ODZUU0MgaXMgbm90IHNldAojIENPTkZJR19NNTg2 TU1YIGlzIG5vdCBzZXQKIyBDT05GSUdfTTY4NiBpcyBub3Qgc2V0CiMgQ09ORklHX01QRU5USVVN SUkgaXMgbm90IHNldAojIENPTkZJR19NUEVOVElVTUlJSSBpcyBub3Qgc2V0CiMgQ09ORklHX01Q RU5USVVNTSBpcyBub3Qgc2V0CiMgQ09ORklHX01QRU5USVVNNCBpcyBub3Qgc2V0CiMgQ09ORklH X01LNiBpcyBub3Qgc2V0CkNPTkZJR19NSzc9eQojIENPTkZJR19NSzggaXMgbm90IHNldAojIENP TkZJR19NQ1JVU09FIGlzIG5vdCBzZXQKIyBDT05GSUdfTUVGRklDRU9OIGlzIG5vdCBzZXQKIyBD T05GSUdfTVdJTkNISVBDNiBpcyBub3Qgc2V0CiMgQ09ORklHX01XSU5DSElQM0QgaXMgbm90IHNl dAojIENPTkZJR19NR0VPREVHWDEgaXMgbm90IHNldAojIENPTkZJR19NR0VPREVfTFggaXMgbm90 IHNldAojIENPTkZJR19NQ1lSSVhJSUkgaXMgbm90IHNldAojIENPTkZJR19NVklBQzNfMiBpcyBu b3Qgc2V0CiMgQ09ORklHX01WSUFDNyBpcyBub3Qgc2V0CiMgQ09ORklHX01QU0MgaXMgbm90IHNl dAojIENPTkZJR19NQ09SRTIgaXMgbm90IHNldAojIENPTkZJR19HRU5FUklDX0NQVSBpcyBub3Qg c2V0CiMgQ09ORklHX1g4Nl9HRU5FUklDIGlzIG5vdCBzZXQKQ09ORklHX1g4Nl9DUFU9eQpDT05G SUdfWDg2X0wxX0NBQ0hFX0JZVEVTPTY0CkNPTkZJR19YODZfSU5URVJOT0RFX0NBQ0hFX0JZVEVT PTY0CkNPTkZJR19YODZfQ01QWENIRz15CkNPTkZJR19YODZfTDFfQ0FDSEVfU0hJRlQ9NgpDT05G SUdfWDg2X1hBREQ9eQpDT05GSUdfWDg2X1dQX1dPUktTX09LPXkKQ09ORklHX1g4Nl9JTlZMUEc9 eQpDT05GSUdfWDg2X0JTV0FQPXkKQ09ORklHX1g4Nl9QT1BBRF9PSz15CkNPTkZJR19YODZfSU5U RUxfVVNFUkNPUFk9eQpDT05GSUdfWDg2X1VTRV9QUFJPX0NIRUNLU1VNPXkKQ09ORklHX1g4Nl9V U0VfM0ROT1c9eQpDT05GSUdfWDg2X1RTQz15CkNPTkZJR19YODZfQ01PVj15CkNPTkZJR19YODZf TUlOSU1VTV9DUFVfRkFNSUxZPTQKQ09ORklHX1g4Nl9ERUJVR0NUTE1TUj15CkNPTkZJR19DUFVf U1VQX0lOVEVMPXkKQ09ORklHX0NQVV9TVVBfQ1lSSVhfMzI9eQpDT05GSUdfQ1BVX1NVUF9BTUQ9 eQpDT05GSUdfQ1BVX1NVUF9DRU5UQVVSPXkKQ09ORklHX0NQVV9TVVBfVFJBTlNNRVRBXzMyPXkK Q09ORklHX0NQVV9TVVBfVU1DXzMyPXkKIyBDT05GSUdfWDg2X0RTIGlzIG5vdCBzZXQKQ09ORklH X0hQRVRfVElNRVI9eQpDT05GSUdfSFBFVF9FTVVMQVRFX1JUQz15CkNPTkZJR19ETUk9eQojIENP TkZJR19JT01NVV9IRUxQRVIgaXMgbm90IHNldApDT05GSUdfSU9NTVVfQVBJPXkKQ09ORklHX05S X0NQVVM9MQojIENPTkZJR19QUkVFTVBUX05PTkUgaXMgbm90IHNldAojIENPTkZJR19QUkVFTVBU X1ZPTFVOVEFSWSBpcyBub3Qgc2V0CkNPTkZJR19QUkVFTVBUPXkKQ09ORklHX1g4Nl9VUF9BUElD PXkKQ09ORklHX1g4Nl9VUF9JT0FQSUM9eQpDT05GSUdfWDg2X0xPQ0FMX0FQSUM9eQpDT05GSUdf WDg2X0lPX0FQSUM9eQojIENPTkZJR19YODZfUkVST1VURV9GT1JfQlJPS0VOX0JPT1RfSVJRUyBp cyBub3Qgc2V0CkNPTkZJR19YODZfTUNFPXkKQ09ORklHX1g4Nl9NQ0VfTk9ORkFUQUw9eQojIENP TkZJR19YODZfTUNFX1A0VEhFUk1BTCBpcyBub3Qgc2V0CkNPTkZJR19WTTg2PXkKIyBDT05GSUdf VE9TSElCQSBpcyBub3Qgc2V0CiMgQ09ORklHX0k4SyBpcyBub3Qgc2V0CiMgQ09ORklHX1g4Nl9S RUJPT1RGSVhVUFMgaXMgbm90IHNldAojIENPTkZJR19NSUNST0NPREUgaXMgbm90IHNldAojIENP TkZJR19YODZfTVNSIGlzIG5vdCBzZXQKIyBDT05GSUdfWDg2X0NQVUlEIGlzIG5vdCBzZXQKQ09O RklHX1g4Nl9DUFVfREVCVUc9eQojIENPTkZJR19OT0hJR0hNRU0gaXMgbm90IHNldApDT05GSUdf SElHSE1FTTRHPXkKIyBDT05GSUdfSElHSE1FTTY0RyBpcyBub3Qgc2V0CkNPTkZJR19QQUdFX09G RlNFVD0weEMwMDAwMDAwCkNPTkZJR19ISUdITUVNPXkKIyBDT05GSUdfQVJDSF9QSFlTX0FERFJf VF82NEJJVCBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKQ09ORklHX0FS Q0hfU1BBUlNFTUVNX0VOQUJMRT15CkNPTkZJR19BUkNIX1NFTEVDVF9NRU1PUllfTU9ERUw9eQpD T05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CkNPTkZJR19GTEFUTUVNX01BTlVBTD15CiMgQ09O RklHX0RJU0NPTlRJR01FTV9NQU5VQUwgaXMgbm90IHNldAojIENPTkZJR19TUEFSU0VNRU1fTUFO VUFMIGlzIG5vdCBzZXQKQ09ORklHX0ZMQVRNRU09eQpDT05GSUdfRkxBVF9OT0RFX01FTV9NQVA9 eQpDT05GSUdfU1BBUlNFTUVNX1NUQVRJQz15CkNPTkZJR19QQUdFRkxBR1NfRVhURU5ERUQ9eQpD T05GSUdfU1BMSVRfUFRMT0NLX0NQVVM9NAojIENPTkZJR19QSFlTX0FERFJfVF82NEJJVCBpcyBu b3Qgc2V0CkNPTkZJR19aT05FX0RNQV9GTEFHPTEKQ09ORklHX0JPVU5DRT15CkNPTkZJR19WSVJU X1RPX0JVUz15CkNPTkZJR19VTkVWSUNUQUJMRV9MUlU9eQpDT05GSUdfSEFWRV9NTE9DSz15CkNP TkZJR19IQVZFX01MT0NLRURfUEFHRV9CSVQ9eQojIENPTkZJR19ISUdIUFRFIGlzIG5vdCBzZXQK IyBDT05GSUdfWDg2X0NIRUNLX0JJT1NfQ09SUlVQVElPTiBpcyBub3Qgc2V0CiMgQ09ORklHX1g4 Nl9SRVNFUlZFX0xPV182NEsgaXMgbm90IHNldAojIENPTkZJR19NQVRIX0VNVUxBVElPTiBpcyBu b3Qgc2V0CkNPTkZJR19NVFJSPXkKQ09ORklHX01UUlJfU0FOSVRJWkVSPXkKQ09ORklHX01UUlJf U0FOSVRJWkVSX0VOQUJMRV9ERUZBVUxUPTAKQ09ORklHX01UUlJfU0FOSVRJWkVSX1NQQVJFX1JF R19OUl9ERUZBVUxUPTEKQ09ORklHX1g4Nl9QQVQ9eQojIENPTkZJR19FRkkgaXMgbm90IHNldApD T05GSUdfU0VDQ09NUD15CiMgQ09ORklHX0NDX1NUQUNLUFJPVEVDVE9SIGlzIG5vdCBzZXQKQ09O RklHX0haXzEwMD15CiMgQ09ORklHX0haXzI1MCBpcyBub3Qgc2V0CiMgQ09ORklHX0haXzMwMCBp cyBub3Qgc2V0CiMgQ09ORklHX0haXzEwMDAgaXMgbm90IHNldApDT05GSUdfSFo9MTAwCiMgQ09O RklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiMgQ09ORklHX0tFWEVDIGlzIG5vdCBzZXQKIyBD T05GSUdfQ1JBU0hfRFVNUCBpcyBub3Qgc2V0CkNPTkZJR19QSFlTSUNBTF9TVEFSVD0weDEwMDAw MAojIENPTkZJR19SRUxPQ0FUQUJMRSBpcyBub3Qgc2V0CkNPTkZJR19QSFlTSUNBTF9BTElHTj0w eDEwMDAwMAojIENPTkZJR19DT01QQVRfVkRTTyBpcyBub3Qgc2V0CiMgQ09ORklHX0NNRExJTkVf Qk9PTCBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CgojCiMg UG93ZXIgbWFuYWdlbWVudCBhbmQgQUNQSSBvcHRpb25zCiMKQ09ORklHX1BNPXkKIyBDT05GSUdf UE1fREVCVUcgaXMgbm90IHNldAojIENPTkZJR19TVVNQRU5EIGlzIG5vdCBzZXQKIyBDT05GSUdf SElCRVJOQVRJT04gaXMgbm90IHNldApDT05GSUdfQUNQST15CiMgQ09ORklHX0FDUElfUFJPQ0ZT IGlzIG5vdCBzZXQKIyBDT05GSUdfQUNQSV9QUk9DRlNfUE9XRVIgaXMgbm90IHNldAojIENPTkZJ R19BQ1BJX1NZU0ZTX1BPV0VSIGlzIG5vdCBzZXQKIyBDT05GSUdfQUNQSV9QUk9DX0VWRU5UIGlz IG5vdCBzZXQKIyBDT05GSUdfQUNQSV9BQyBpcyBub3Qgc2V0CiMgQ09ORklHX0FDUElfQkFUVEVS WSBpcyBub3Qgc2V0CiMgQ09ORklHX0FDUElfQlVUVE9OIGlzIG5vdCBzZXQKIyBDT05GSUdfQUNQ SV9GQU4gaXMgbm90IHNldApDT05GSUdfQUNQSV9ET0NLPXkKQ09ORklHX0FDUElfUFJPQ0VTU09S PXkKQ09ORklHX0FDUElfVEhFUk1BTD15CiMgQ09ORklHX0FDUElfQ1VTVE9NX0RTRFQgaXMgbm90 IHNldApDT05GSUdfQUNQSV9CTEFDS0xJU1RfWUVBUj0wCiMgQ09ORklHX0FDUElfREVCVUcgaXMg bm90IHNldAojIENPTkZJR19BQ1BJX1BDSV9TTE9UIGlzIG5vdCBzZXQKQ09ORklHX1g4Nl9QTV9U SU1FUj15CiMgQ09ORklHX0FDUElfQ09OVEFJTkVSIGlzIG5vdCBzZXQKIyBDT05GSUdfQUNQSV9T QlMgaXMgbm90IHNldAoKIwojIENQVSBGcmVxdWVuY3kgc2NhbGluZwojCiMgQ09ORklHX0NQVV9G UkVRIGlzIG5vdCBzZXQKQ09ORklHX0NQVV9JRExFPXkKQ09ORklHX0NQVV9JRExFX0dPVl9MQURE RVI9eQpDT05GSUdfQ1BVX0lETEVfR09WX01FTlU9eQoKIwojIEJ1cyBvcHRpb25zIChQQ0kgZXRj LikKIwpDT05GSUdfUENJPXkKIyBDT05GSUdfUENJX0dPQklPUyBpcyBub3Qgc2V0CiMgQ09ORklH X1BDSV9HT01NQ09ORklHIGlzIG5vdCBzZXQKIyBDT05GSUdfUENJX0dPRElSRUNUIGlzIG5vdCBz ZXQKIyBDT05GSUdfUENJX0dPT0xQQyBpcyBub3Qgc2V0CkNPTkZJR19QQ0lfR09BTlk9eQpDT05G SUdfUENJX0JJT1M9eQpDT05GSUdfUENJX0RJUkVDVD15CkNPTkZJR19QQ0lfTU1DT05GSUc9eQpD T05GSUdfUENJX0RPTUFJTlM9eQpDT05GSUdfRE1BUj15CkNPTkZJR19ETUFSX0RFRkFVTFRfT049 eQpDT05GSUdfRE1BUl9HRlhfV0E9eQpDT05GSUdfRE1BUl9GTE9QUFlfV0E9eQojIENPTkZJR19Q Q0lFUE9SVEJVUyBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX1NVUFBPUlRTX01TST15CkNPTkZJR19Q Q0lfTVNJPXkKIyBDT05GSUdfUENJX0xFR0FDWSBpcyBub3Qgc2V0CiMgQ09ORklHX1BDSV9ERUJV RyBpcyBub3Qgc2V0CiMgQ09ORklHX1BDSV9TVFVCIGlzIG5vdCBzZXQKQ09ORklHX0hUX0lSUT15 CiMgQ09ORklHX1BDSV9JT1YgaXMgbm90IHNldApDT05GSUdfSVNBX0RNQV9BUEk9eQojIENPTkZJ R19JU0EgaXMgbm90IHNldAojIENPTkZJR19NQ0EgaXMgbm90IHNldAojIENPTkZJR19TQ3gyMDAg aXMgbm90IHNldAojIENPTkZJR19PTFBDIGlzIG5vdCBzZXQKIyBDT05GSUdfUENDQVJEIGlzIG5v dCBzZXQKIyBDT05GSUdfSE9UUExVR19QQ0kgaXMgbm90IHNldAoKIwojIEV4ZWN1dGFibGUgZmls ZSBmb3JtYXRzIC8gRW11bGF0aW9ucwojCkNPTkZJR19CSU5GTVRfRUxGPXkKIyBDT05GSUdfQ09S RV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldApDT05GSUdfSEFWRV9BT1VUPXkK IyBDT05GSUdfQklORk1UX0FPVVQgaXMgbm90IHNldAojIENPTkZJR19CSU5GTVRfTUlTQyBpcyBu b3Qgc2V0CkNPTkZJR19IQVZFX0FUT01JQ19JT01BUD15CkNPTkZJR19ORVQ9eQoKIwojIE5ldHdv cmtpbmcgb3B0aW9ucwojCkNPTkZJR19QQUNLRVQ9eQpDT05GSUdfUEFDS0VUX01NQVA9eQpDT05G SUdfVU5JWD15CiMgQ09ORklHX05FVF9LRVkgaXMgbm90IHNldApDT05GSUdfSU5FVD15CiMgQ09O RklHX0lQX01VTFRJQ0FTVCBpcyBub3Qgc2V0CiMgQ09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUiBp cyBub3Qgc2V0CkNPTkZJR19JUF9GSUJfSEFTSD15CiMgQ09ORklHX0lQX1BOUCBpcyBub3Qgc2V0 CiMgQ09ORklHX05FVF9JUElQIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX0lQR1JFIGlzIG5vdCBz ZXQKIyBDT05GSUdfQVJQRCBpcyBub3Qgc2V0CiMgQ09ORklHX1NZTl9DT09LSUVTIGlzIG5vdCBz ZXQKIyBDT05GSUdfSU5FVF9BSCBpcyBub3Qgc2V0CiMgQ09ORklHX0lORVRfRVNQIGlzIG5vdCBz ZXQKIyBDT05GSUdfSU5FVF9JUENPTVAgaXMgbm90IHNldAojIENPTkZJR19JTkVUX1hGUk1fVFVO TkVMIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5FVF9UVU5ORUwgaXMgbm90IHNldAojIENPTkZJR19J TkVUX1hGUk1fTU9ERV9UUkFOU1BPUlQgaXMgbm90IHNldAojIENPTkZJR19JTkVUX1hGUk1fTU9E RV9UVU5ORUwgaXMgbm90IHNldAojIENPTkZJR19JTkVUX1hGUk1fTU9ERV9CRUVUIGlzIG5vdCBz ZXQKQ09ORklHX0lORVRfTFJPPXkKIyBDT05GSUdfSU5FVF9ESUFHIGlzIG5vdCBzZXQKIyBDT05G SUdfVENQX0NPTkdfQURWQU5DRUQgaXMgbm90IHNldApDT05GSUdfVENQX0NPTkdfQ1VCSUM9eQpD T05GSUdfREVGQVVMVF9UQ1BfQ09ORz0iY3ViaWMiCiMgQ09ORklHX1RDUF9NRDVTSUcgaXMgbm90 IHNldAojIENPTkZJR19JUFY2IGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUV09SS19TRUNNQVJLIGlz IG5vdCBzZXQKIyBDT05GSUdfTkVURklMVEVSIGlzIG5vdCBzZXQKIyBDT05GSUdfSVBfRENDUCBp cyBub3Qgc2V0CiMgQ09ORklHX0lQX1NDVFAgaXMgbm90IHNldAojIENPTkZJR19USVBDIGlzIG5v dCBzZXQKIyBDT05GSUdfQVRNIGlzIG5vdCBzZXQKIyBDT05GSUdfQlJJREdFIGlzIG5vdCBzZXQK IyBDT05GSUdfTkVUX0RTQSBpcyBub3Qgc2V0CiMgQ09ORklHX1ZMQU5fODAyMVEgaXMgbm90IHNl dAojIENPTkZJR19ERUNORVQgaXMgbm90IHNldAojIENPTkZJR19MTEMyIGlzIG5vdCBzZXQKIyBD T05GSUdfSVBYIGlzIG5vdCBzZXQKIyBDT05GSUdfQVRBTEsgaXMgbm90IHNldAojIENPTkZJR19Y MjUgaXMgbm90IHNldAojIENPTkZJR19MQVBCIGlzIG5vdCBzZXQKIyBDT05GSUdfRUNPTkVUIGlz IG5vdCBzZXQKIyBDT05GSUdfV0FOX1JPVVRFUiBpcyBub3Qgc2V0CiMgQ09ORklHX1BIT05FVCBp cyBub3Qgc2V0CiMgQ09ORklHX05FVF9TQ0hFRCBpcyBub3Qgc2V0CiMgQ09ORklHX0RDQiBpcyBu b3Qgc2V0CgojCiMgTmV0d29yayB0ZXN0aW5nCiMKIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qg c2V0CiMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQK IyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiMgQ09ORklHX0JUIGlzIG5vdCBzZXQKIyBDT05GSUdf QUZfUlhSUEMgaXMgbm90IHNldAojIENPTkZJR19XSVJFTEVTUyBpcyBub3Qgc2V0CiMgQ09ORklH X1dJTUFYIGlzIG5vdCBzZXQKIyBDT05GSUdfUkZLSUxMIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVU XzlQIGlzIG5vdCBzZXQKCiMKIyBEZXZpY2UgRHJpdmVycwojCgojCiMgR2VuZXJpYyBEcml2ZXIg T3B0aW9ucwojCkNPTkZJR19VRVZFTlRfSEVMUEVSX1BBVEg9Im4iCkNPTkZJR19TVEFOREFMT05F PXkKIyBDT05GSUdfUFJFVkVOVF9GSVJNV0FSRV9CVUlMRCBpcyBub3Qgc2V0CkNPTkZJR19GV19M T0FERVI9eQojIENPTkZJR19GSVJNV0FSRV9JTl9LRVJORUwgaXMgbm90IHNldApDT05GSUdfRVhU UkFfRklSTVdBUkU9IiIKQ09ORklHX0RFQlVHX0RSSVZFUj15CkNPTkZJR19ERUJVR19ERVZSRVM9 eQojIENPTkZJR19TWVNfSFlQRVJWSVNPUiBpcyBub3Qgc2V0CiMgQ09ORklHX0NPTk5FQ1RPUiBp cyBub3Qgc2V0CiMgQ09ORklHX01URCBpcyBub3Qgc2V0CiMgQ09ORklHX1BBUlBPUlQgaXMgbm90 IHNldApDT05GSUdfUE5QPXkKQ09ORklHX1BOUF9ERUJVR19NRVNTQUdFUz15CgojCiMgUHJvdG9j b2xzCiMKQ09ORklHX1BOUEFDUEk9eQpDT05GSUdfQkxLX0RFVj15CiMgQ09ORklHX0JMS19ERVZf RkQgaXMgbm90IHNldAojIENPTkZJR19CTEtfQ1BRX0RBIGlzIG5vdCBzZXQKIyBDT05GSUdfQkxL X0NQUV9DSVNTX0RBIGlzIG5vdCBzZXQKIyBDT05GSUdfQkxLX0RFVl9EQUM5NjAgaXMgbm90IHNl dAojIENPTkZJR19CTEtfREVWX1VNRU0gaXMgbm90IHNldAojIENPTkZJR19CTEtfREVWX0NPV19D T01NT04gaXMgbm90IHNldAojIENPTkZJR19CTEtfREVWX0xPT1AgaXMgbm90IHNldAojIENPTkZJ R19CTEtfREVWX05CRCBpcyBub3Qgc2V0CiMgQ09ORklHX0JMS19ERVZfU1g4IGlzIG5vdCBzZXQK IyBDT05GSUdfQkxLX0RFVl9VQiBpcyBub3Qgc2V0CiMgQ09ORklHX0JMS19ERVZfUkFNIGlzIG5v dCBzZXQKIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiMgQ09ORklHX0FUQV9PVkVS X0VUSCBpcyBub3Qgc2V0CiMgQ09ORklHX0JMS19ERVZfSEQgaXMgbm90IHNldAojIENPTkZJR19N SVNDX0RFVklDRVMgaXMgbm90IHNldApDT05GSUdfSEFWRV9JREU9eQojIENPTkZJR19JREUgaXMg bm90IHNldAoKIwojIFNDU0kgZGV2aWNlIHN1cHBvcnQKIwojIENPTkZJR19SQUlEX0FUVFJTIGlz IG5vdCBzZXQKQ09ORklHX1NDU0k9eQpDT05GSUdfU0NTSV9ETUE9eQojIENPTkZJR19TQ1NJX1RH VCBpcyBub3Qgc2V0CiMgQ09ORklHX1NDU0lfTkVUTElOSyBpcyBub3Qgc2V0CkNPTkZJR19TQ1NJ X1BST0NfRlM9eQoKIwojIFNDU0kgc3VwcG9ydCB0eXBlIChkaXNrLCB0YXBlLCBDRC1ST00pCiMK Q09ORklHX0JMS19ERVZfU0Q9eQojIENPTkZJR19DSFJfREVWX1NUIGlzIG5vdCBzZXQKIyBDT05G SUdfQ0hSX0RFVl9PU1NUIGlzIG5vdCBzZXQKIyBDT05GSUdfQkxLX0RFVl9TUiBpcyBub3Qgc2V0 CkNPTkZJR19DSFJfREVWX1NHPXkKIyBDT05GSUdfQ0hSX0RFVl9TQ0ggaXMgbm90IHNldAoKIwoj IFNvbWUgU0NTSSBkZXZpY2VzIChlLmcuIENEIGp1a2Vib3gpIHN1cHBvcnQgbXVsdGlwbGUgTFVO cwojCkNPTkZJR19TQ1NJX01VTFRJX0xVTj15CiMgQ09ORklHX1NDU0lfQ09OU1RBTlRTIGlzIG5v dCBzZXQKIyBDT05GSUdfU0NTSV9MT0dHSU5HIGlzIG5vdCBzZXQKIyBDT05GSUdfU0NTSV9TQ0FO X0FTWU5DIGlzIG5vdCBzZXQKQ09ORklHX1NDU0lfV0FJVF9TQ0FOPW0KCiMKIyBTQ1NJIFRyYW5z cG9ydHMKIwojIENPTkZJR19TQ1NJX1NQSV9BVFRSUyBpcyBub3Qgc2V0CiMgQ09ORklHX1NDU0lf RkNfQVRUUlMgaXMgbm90IHNldAojIENPTkZJR19TQ1NJX0lTQ1NJX0FUVFJTIGlzIG5vdCBzZXQK IyBDT05GSUdfU0NTSV9TQVNfTElCU0FTIGlzIG5vdCBzZXQKIyBDT05GSUdfU0NTSV9TUlBfQVRU UlMgaXMgbm90IHNldAojIENPTkZJR19TQ1NJX0xPV0xFVkVMIGlzIG5vdCBzZXQKIyBDT05GSUdf U0NTSV9ESCBpcyBub3Qgc2V0CiMgQ09ORklHX1NDU0lfT1NEX0lOSVRJQVRPUiBpcyBub3Qgc2V0 CkNPTkZJR19BVEE9eQojIENPTkZJR19BVEFfTk9OU1RBTkRBUkQgaXMgbm90IHNldApDT05GSUdf QVRBX0FDUEk9eQojIENPTkZJR19TQVRBX1BNUCBpcyBub3Qgc2V0CiMgQ09ORklHX1NBVEFfQUhD SSBpcyBub3Qgc2V0CiMgQ09ORklHX1NBVEFfU0lMMjQgaXMgbm90IHNldApDT05GSUdfQVRBX1NG Rj15CiMgQ09ORklHX1NBVEFfU1ZXIGlzIG5vdCBzZXQKIyBDT05GSUdfQVRBX1BJSVggaXMgbm90 IHNldAojIENPTkZJR19TQVRBX01WIGlzIG5vdCBzZXQKIyBDT05GSUdfU0FUQV9OViBpcyBub3Qg c2V0CiMgQ09ORklHX1BEQ19BRE1BIGlzIG5vdCBzZXQKIyBDT05GSUdfU0FUQV9RU1RPUiBpcyBu b3Qgc2V0CiMgQ09ORklHX1NBVEFfUFJPTUlTRSBpcyBub3Qgc2V0CiMgQ09ORklHX1NBVEFfU1g0 IGlzIG5vdCBzZXQKQ09ORklHX1NBVEFfU0lMPXkKIyBDT05GSUdfU0FUQV9TSVMgaXMgbm90IHNl dAojIENPTkZJR19TQVRBX1VMSSBpcyBub3Qgc2V0CiMgQ09ORklHX1NBVEFfVklBIGlzIG5vdCBz ZXQKIyBDT05GSUdfU0FUQV9WSVRFU1NFIGlzIG5vdCBzZXQKIyBDT05GSUdfU0FUQV9JTklDMTYy WCBpcyBub3Qgc2V0CiMgQ09ORklHX1BBVEFfQUNQSSBpcyBub3Qgc2V0CiMgQ09ORklHX1BBVEFf QUxJIGlzIG5vdCBzZXQKQ09ORklHX1BBVEFfQU1EPXkKIyBDT05GSUdfUEFUQV9BUlRPUCBpcyBu b3Qgc2V0CiMgQ09ORklHX1BBVEFfQVRJSVhQIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFUQV9DTUQ2 NDBfUENJIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFUQV9DTUQ2NFggaXMgbm90IHNldAojIENPTkZJ R19QQVRBX0NTNTUyMCBpcyBub3Qgc2V0CiMgQ09ORklHX1BBVEFfQ1M1NTMwIGlzIG5vdCBzZXQK IyBDT05GSUdfUEFUQV9DUzU1MzUgaXMgbm90IHNldAojIENPTkZJR19QQVRBX0NTNTUzNiBpcyBu b3Qgc2V0CiMgQ09ORklHX1BBVEFfQ1lQUkVTUyBpcyBub3Qgc2V0CiMgQ09ORklHX1BBVEFfRUZB UiBpcyBub3Qgc2V0CiMgQ09ORklHX0FUQV9HRU5FUklDIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFU QV9IUFQzNjYgaXMgbm90IHNldAojIENPTkZJR19QQVRBX0hQVDM3WCBpcyBub3Qgc2V0CiMgQ09O RklHX1BBVEFfSFBUM1gyTiBpcyBub3Qgc2V0CiMgQ09ORklHX1BBVEFfSFBUM1gzIGlzIG5vdCBz ZXQKIyBDT05GSUdfUEFUQV9JVDgyMVggaXMgbm90IHNldAojIENPTkZJR19QQVRBX0lUODIxMyBp cyBub3Qgc2V0CiMgQ09ORklHX1BBVEFfSk1JQ1JPTiBpcyBub3Qgc2V0CiMgQ09ORklHX1BBVEFf VFJJRkxFWCBpcyBub3Qgc2V0CiMgQ09ORklHX1BBVEFfTUFSVkVMTCBpcyBub3Qgc2V0CiMgQ09O RklHX1BBVEFfTVBJSVggaXMgbm90IHNldAojIENPTkZJR19QQVRBX09MRFBJSVggaXMgbm90IHNl dAojIENPTkZJR19QQVRBX05FVENFTEwgaXMgbm90IHNldAojIENPTkZJR19QQVRBX05JTkpBMzIg aXMgbm90IHNldAojIENPTkZJR19QQVRBX05TODc0MTAgaXMgbm90IHNldAojIENPTkZJR19QQVRB X05TODc0MTUgaXMgbm90IHNldAojIENPTkZJR19QQVRBX09QVEkgaXMgbm90IHNldAojIENPTkZJ R19QQVRBX09QVElETUEgaXMgbm90IHNldAojIENPTkZJR19QQVRBX1BEQ19PTEQgaXMgbm90IHNl dAojIENPTkZJR19QQVRBX1JBRElTWVMgaXMgbm90IHNldAojIENPTkZJR19QQVRBX1JaMTAwMCBp cyBub3Qgc2V0CiMgQ09ORklHX1BBVEFfU0MxMjAwIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFUQV9T RVJWRVJXT1JLUyBpcyBub3Qgc2V0CkNPTkZJR19QQVRBX1BEQzIwMjdYPXkKIyBDT05GSUdfUEFU QV9TSUw2ODAgaXMgbm90IHNldAojIENPTkZJR19QQVRBX1NJUyBpcyBub3Qgc2V0CiMgQ09ORklH X1BBVEFfVklBIGlzIG5vdCBzZXQKIyBDT05GSUdfUEFUQV9XSU5CT05EIGlzIG5vdCBzZXQKIyBD T05GSUdfUEFUQV9TQ0ggaXMgbm90IHNldAojIENPTkZJR19NRCBpcyBub3Qgc2V0CiMgQ09ORklH X0ZVU0lPTiBpcyBub3Qgc2V0CgojCiMgSUVFRSAxMzk0IChGaXJlV2lyZSkgc3VwcG9ydAojCgoj CiMgRW5hYmxlIG9ubHkgb25lIG9mIHRoZSB0d28gc3RhY2tzLCB1bmxlc3MgeW91IGtub3cgd2hh dCB5b3UgYXJlIGRvaW5nCiMKIyBDT05GSUdfRklSRVdJUkUgaXMgbm90IHNldAojIENPTkZJR19J RUVFMTM5NCBpcyBub3Qgc2V0CiMgQ09ORklHX0kyTyBpcyBub3Qgc2V0CiMgQ09ORklHX01BQ0lO VE9TSF9EUklWRVJTIGlzIG5vdCBzZXQKQ09ORklHX05FVERFVklDRVM9eQojIENPTkZJR19DT01Q QVRfTkVUX0RFVl9PUFMgaXMgbm90IHNldAojIENPTkZJR19EVU1NWSBpcyBub3Qgc2V0CiMgQ09O RklHX0JPTkRJTkcgaXMgbm90IHNldAojIENPTkZJR19NQUNWTEFOIGlzIG5vdCBzZXQKIyBDT05G SUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKIyBDT05GSUdf VkVUSCBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9TQjEwMDAgaXMgbm90IHNldAojIENPTkZJR19B UkNORVQgaXMgbm90IHNldAojIENPTkZJR19QSFlMSUIgaXMgbm90IHNldApDT05GSUdfTkVUX0VU SEVSTkVUPXkKQ09ORklHX01JST15CiMgQ09ORklHX0hBUFBZTUVBTCBpcyBub3Qgc2V0CiMgQ09O RklHX1NVTkdFTSBpcyBub3Qgc2V0CiMgQ09ORklHX0NBU1NJTkkgaXMgbm90IHNldAojIENPTkZJ R19ORVRfVkVORE9SXzNDT00gaXMgbm90IHNldAojIENPTkZJR19FVEhPQyBpcyBub3Qgc2V0CiMg Q09ORklHX0RORVQgaXMgbm90IHNldAojIENPTkZJR19ORVRfVFVMSVAgaXMgbm90IHNldAojIENP TkZJR19IUDEwMCBpcyBub3Qgc2V0CiMgQ09ORklHX0lCTV9ORVdfRU1BQ19aTUlJIGlzIG5vdCBz ZXQKIyBDT05GSUdfSUJNX05FV19FTUFDX1JHTUlJIGlzIG5vdCBzZXQKIyBDT05GSUdfSUJNX05F V19FTUFDX1RBSCBpcyBub3Qgc2V0CiMgQ09ORklHX0lCTV9ORVdfRU1BQ19FTUFDNCBpcyBub3Qg c2V0CiMgQ09ORklHX0lCTV9ORVdfRU1BQ19OT19GTE9XX0NUUkwgaXMgbm90IHNldAojIENPTkZJ R19JQk1fTkVXX0VNQUNfTUFMX0NMUl9JQ0lOVFNUQVQgaXMgbm90IHNldAojIENPTkZJR19JQk1f TkVXX0VNQUNfTUFMX0NPTU1PTl9FUlIgaXMgbm90IHNldApDT05GSUdfTkVUX1BDST15CiMgQ09O RklHX1BDTkVUMzIgaXMgbm90IHNldAojIENPTkZJR19BTUQ4MTExX0VUSCBpcyBub3Qgc2V0CiMg Q09ORklHX0FEQVBURUNfU1RBUkZJUkUgaXMgbm90IHNldAojIENPTkZJR19CNDQgaXMgbm90IHNl dApDT05GSUdfRk9SQ0VERVRIPXkKQ09ORklHX0ZPUkNFREVUSF9OQVBJPXkKIyBDT05GSUdfRTEw MCBpcyBub3Qgc2V0CiMgQ09ORklHX0ZFQUxOWCBpcyBub3Qgc2V0CiMgQ09ORklHX05BVFNFTUkg aXMgbm90IHNldAojIENPTkZJR19ORTJLX1BDSSBpcyBub3Qgc2V0CiMgQ09ORklHXzgxMzlDUCBp cyBub3Qgc2V0CiMgQ09ORklHXzgxMzlUT08gaXMgbm90IHNldAojIENPTkZJR19SNjA0MCBpcyBu b3Qgc2V0CiMgQ09ORklHX1NJUzkwMCBpcyBub3Qgc2V0CiMgQ09ORklHX0VQSUMxMDAgaXMgbm90 IHNldAojIENPTkZJR19TTVNDOTQyMCBpcyBub3Qgc2V0CiMgQ09ORklHX1NVTkRBTkNFIGlzIG5v dCBzZXQKIyBDT05GSUdfVExBTiBpcyBub3Qgc2V0CiMgQ09ORklHX1ZJQV9SSElORSBpcyBub3Qg c2V0CiMgQ09ORklHX1NDOTIwMzEgaXMgbm90IHNldAojIENPTkZJR19BVEwyIGlzIG5vdCBzZXQK Q09ORklHX05FVERFVl8xMDAwPXkKIyBDT05GSUdfQUNFTklDIGlzIG5vdCBzZXQKIyBDT05GSUdf REwySyBpcyBub3Qgc2V0CkNPTkZJR19FMTAwMD15CiMgQ09ORklHX0UxMDAwRSBpcyBub3Qgc2V0 CiMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CiMgQ09ORklHX0lHQiBpcyBub3Qgc2V0CiMgQ09O RklHX0lHQlZGIGlzIG5vdCBzZXQKIyBDT05GSUdfTlM4MzgyMCBpcyBub3Qgc2V0CiMgQ09ORklH X0hBTUFDSEkgaXMgbm90IHNldAojIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldAojIENPTkZJ R19SODE2OSBpcyBub3Qgc2V0CiMgQ09ORklHX1NJUzE5MCBpcyBub3Qgc2V0CiMgQ09ORklHX1NL R0UgaXMgbm90IHNldAojIENPTkZJR19TS1kyIGlzIG5vdCBzZXQKIyBDT05GSUdfVklBX1ZFTE9D SVRZIGlzIG5vdCBzZXQKIyBDT05GSUdfVElHT04zIGlzIG5vdCBzZXQKIyBDT05GSUdfQk5YMiBp cyBub3Qgc2V0CiMgQ09ORklHX1FMQTNYWFggaXMgbm90IHNldAojIENPTkZJR19BVEwxIGlzIG5v dCBzZXQKIyBDT05GSUdfQVRMMUUgaXMgbm90IHNldAojIENPTkZJR19BVEwxQyBpcyBub3Qgc2V0 CiMgQ09ORklHX0pNRSBpcyBub3Qgc2V0CiMgQ09ORklHX05FVERFVl8xMDAwMCBpcyBub3Qgc2V0 CiMgQ09ORklHX1RSIGlzIG5vdCBzZXQKCiMKIyBXaXJlbGVzcyBMQU4KIwojIENPTkZJR19XTEFO X1BSRTgwMjExIGlzIG5vdCBzZXQKIyBDT05GSUdfV0xBTl84MDIxMSBpcyBub3Qgc2V0CgojCiMg RW5hYmxlIFdpTUFYIChOZXR3b3JraW5nIG9wdGlvbnMpIHRvIHNlZSB0aGUgV2lNQVggZHJpdmVy cwojCgojCiMgVVNCIE5ldHdvcmsgQWRhcHRlcnMKIwojIENPTkZJR19VU0JfQ0FUQyBpcyBub3Qg c2V0CiMgQ09ORklHX1VTQl9LQVdFVEggaXMgbm90IHNldAojIENPTkZJR19VU0JfUEVHQVNVUyBp cyBub3Qgc2V0CiMgQ09ORklHX1VTQl9SVEw4MTUwIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX1VT Qk5FVCBpcyBub3Qgc2V0CiMgQ09ORklHX1dBTiBpcyBub3Qgc2V0CiMgQ09ORklHX0ZEREkgaXMg bm90IHNldAojIENPTkZJR19ISVBQSSBpcyBub3Qgc2V0CiMgQ09ORklHX1BQUCBpcyBub3Qgc2V0 CiMgQ09ORklHX1NMSVAgaXMgbm90IHNldAojIENPTkZJR19ORVRfRkMgaXMgbm90IHNldApDT05G SUdfTkVUQ09OU09MRT15CkNPTkZJR19ORVRDT05TT0xFX0RZTkFNSUM9eQpDT05GSUdfTkVUUE9M TD15CkNPTkZJR19ORVRQT0xMX1RSQVA9eQpDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUj15CiMg Q09ORklHX0lTRE4gaXMgbm90IHNldAojIENPTkZJR19QSE9ORSBpcyBub3Qgc2V0CgojCiMgSW5w dXQgZGV2aWNlIHN1cHBvcnQKIwpDT05GSUdfSU5QVVQ9eQojIENPTkZJR19JTlBVVF9GRl9NRU1M RVNTIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5QVVRfUE9MTERFViBpcyBub3Qgc2V0CgojCiMgVXNl cmxhbmQgaW50ZXJmYWNlcwojCkNPTkZJR19JTlBVVF9NT1VTRURFVj15CkNPTkZJR19JTlBVVF9N T1VTRURFVl9QU0FVWD15CkNPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWD0xMDI0CkNPTkZJ R19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWT03NjgKIyBDT05GSUdfSU5QVVRfSk9ZREVWIGlzIG5v dCBzZXQKIyBDT05GSUdfSU5QVVRfRVZERVYgaXMgbm90IHNldAojIENPTkZJR19JTlBVVF9FVkJV RyBpcyBub3Qgc2V0CgojCiMgSW5wdXQgRGV2aWNlIERyaXZlcnMKIwpDT05GSUdfSU5QVVRfS0VZ Qk9BUkQ9eQpDT05GSUdfS0VZQk9BUkRfQVRLQkQ9eQojIENPTkZJR19LRVlCT0FSRF9TVU5LQkQg aXMgbm90IHNldAojIENPTkZJR19LRVlCT0FSRF9MS0tCRCBpcyBub3Qgc2V0CiMgQ09ORklHX0tF WUJPQVJEX1hUS0JEIGlzIG5vdCBzZXQKIyBDT05GSUdfS0VZQk9BUkRfTkVXVE9OIGlzIG5vdCBz ZXQKIyBDT05GSUdfS0VZQk9BUkRfU1RPV0FXQVkgaXMgbm90IHNldAojIENPTkZJR19JTlBVVF9N T1VTRSBpcyBub3Qgc2V0CiMgQ09ORklHX0lOUFVUX0pPWVNUSUNLIGlzIG5vdCBzZXQKIyBDT05G SUdfSU5QVVRfVEFCTEVUIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5QVVRfVE9VQ0hTQ1JFRU4gaXMg bm90IHNldAojIENPTkZJR19JTlBVVF9NSVNDIGlzIG5vdCBzZXQKCiMKIyBIYXJkd2FyZSBJL08g cG9ydHMKIwpDT05GSUdfU0VSSU89eQpDT05GSUdfU0VSSU9fSTgwNDI9eQojIENPTkZJR19TRVJJ T19TRVJQT1JUIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSU9fQ1Q4MkM3MTAgaXMgbm90IHNldAoj IENPTkZJR19TRVJJT19QQ0lQUzIgaXMgbm90IHNldApDT05GSUdfU0VSSU9fTElCUFMyPXkKIyBD T05GSUdfU0VSSU9fUkFXIGlzIG5vdCBzZXQKIyBDT05GSUdfR0FNRVBPUlQgaXMgbm90IHNldAoK IwojIENoYXJhY3RlciBkZXZpY2VzCiMKQ09ORklHX1ZUPXkKQ09ORklHX0NPTlNPTEVfVFJBTlNM QVRJT05TPXkKQ09ORklHX1ZUX0NPTlNPTEU9eQpDT05GSUdfSFdfQ09OU09MRT15CiMgQ09ORklH X1ZUX0hXX0NPTlNPTEVfQklORElORyBpcyBub3Qgc2V0CkNPTkZJR19ERVZLTUVNPXkKIyBDT05G SUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKIyBDT05GSUdfTk9aT01JIGlzIG5vdCBz ZXQKCiMKIyBTZXJpYWwgZHJpdmVycwojCkNPTkZJR19TRVJJQUxfODI1MD15CkNPTkZJR19TRVJJ QUxfODI1MF9DT05TT0xFPXkKQ09ORklHX0ZJWF9FQVJMWUNPTl9NRU09eQpDT05GSUdfU0VSSUFM XzgyNTBfUENJPXkKQ09ORklHX1NFUklBTF84MjUwX1BOUD15CkNPTkZJR19TRVJJQUxfODI1MF9O Ul9VQVJUUz00CkNPTkZJR19TRVJJQUxfODI1MF9SVU5USU1FX1VBUlRTPTQKIyBDT05GSUdfU0VS SUFMXzgyNTBfRVhURU5ERUQgaXMgbm90IHNldAoKIwojIE5vbi04MjUwIHNlcmlhbCBwb3J0IHN1 cHBvcnQKIwpDT05GSUdfU0VSSUFMX0NPUkU9eQpDT05GSUdfU0VSSUFMX0NPUkVfQ09OU09MRT15 CkNPTkZJR19DT05TT0xFX1BPTEw9eQojIENPTkZJR19TRVJJQUxfSlNNIGlzIG5vdCBzZXQKQ09O RklHX1VOSVg5OF9QVFlTPXkKIyBDT05GSUdfREVWUFRTX01VTFRJUExFX0lOU1RBTkNFUyBpcyBu b3Qgc2V0CiMgQ09ORklHX0xFR0FDWV9QVFlTIGlzIG5vdCBzZXQKIyBDT05GSUdfSVBNSV9IQU5E TEVSIGlzIG5vdCBzZXQKIyBDT05GSUdfSFdfUkFORE9NIGlzIG5vdCBzZXQKIyBDT05GSUdfTlZS QU0gaXMgbm90IHNldAojIENPTkZJR19SMzk2NCBpcyBub3Qgc2V0CiMgQ09ORklHX0FQUExJQ09N IGlzIG5vdCBzZXQKIyBDT05GSUdfU09OWVBJIGlzIG5vdCBzZXQKIyBDT05GSUdfTVdBVkUgaXMg bm90IHNldAojIENPTkZJR19QQzg3MzZ4X0dQSU8gaXMgbm90IHNldAojIENPTkZJR19OU0NfR1BJ TyBpcyBub3Qgc2V0CiMgQ09ORklHX0NTNTUzNV9HUElPIGlzIG5vdCBzZXQKIyBDT05GSUdfUkFX X0RSSVZFUiBpcyBub3Qgc2V0CkNPTkZJR19IUEVUPXkKQ09ORklHX0hQRVRfTU1BUD15CkNPTkZJ R19IQU5HQ0hFQ0tfVElNRVI9eQojIENPTkZJR19UQ0dfVFBNIGlzIG5vdCBzZXQKIyBDT05GSUdf VEVMQ0xPQ0sgaXMgbm90IHNldApDT05GSUdfREVWUE9SVD15CkNPTkZJR19JMkM9eQpDT05GSUdf STJDX0JPQVJESU5GTz15CkNPTkZJR19JMkNfQ0hBUkRFVj1tCkNPTkZJR19JMkNfSEVMUEVSX0FV VE89eQoKIwojIEkyQyBIYXJkd2FyZSBCdXMgc3VwcG9ydAojCgojCiMgUEMgU01CdXMgaG9zdCBj b250cm9sbGVyIGRyaXZlcnMKIwojIENPTkZJR19JMkNfQUxJMTUzNSBpcyBub3Qgc2V0CiMgQ09O RklHX0kyQ19BTEkxNTYzIGlzIG5vdCBzZXQKIyBDT05GSUdfSTJDX0FMSTE1WDMgaXMgbm90IHNl dAojIENPTkZJR19JMkNfQU1ENzU2IGlzIG5vdCBzZXQKIyBDT05GSUdfSTJDX0FNRDgxMTEgaXMg bm90IHNldAojIENPTkZJR19JMkNfSTgwMSBpcyBub3Qgc2V0CiMgQ09ORklHX0kyQ19JU0NIIGlz IG5vdCBzZXQKIyBDT05GSUdfSTJDX1BJSVg0IGlzIG5vdCBzZXQKQ09ORklHX0kyQ19ORk9SQ0Uy PW0KIyBDT05GSUdfSTJDX05GT1JDRTJfUzQ5ODUgaXMgbm90IHNldAojIENPTkZJR19JMkNfU0lT NTU5NSBpcyBub3Qgc2V0CiMgQ09ORklHX0kyQ19TSVM2MzAgaXMgbm90IHNldAojIENPTkZJR19J MkNfU0lTOTZYIGlzIG5vdCBzZXQKIyBDT05GSUdfSTJDX1ZJQSBpcyBub3Qgc2V0CiMgQ09ORklH X0kyQ19WSUFQUk8gaXMgbm90IHNldAoKIwojIEkyQyBzeXN0ZW0gYnVzIGRyaXZlcnMgKG1vc3Rs eSBlbWJlZGRlZCAvIHN5c3RlbS1vbi1jaGlwKQojCiMgQ09ORklHX0kyQ19PQ09SRVMgaXMgbm90 IHNldAojIENPTkZJR19JMkNfU0lNVEVDIGlzIG5vdCBzZXQKCiMKIyBFeHRlcm5hbCBJMkMvU01C dXMgYWRhcHRlciBkcml2ZXJzCiMKIyBDT05GSUdfSTJDX1BBUlBPUlRfTElHSFQgaXMgbm90IHNl dAojIENPTkZJR19JMkNfVEFPU19FVk0gaXMgbm90IHNldAojIENPTkZJR19JMkNfVElOWV9VU0Ig aXMgbm90IHNldAoKIwojIEdyYXBoaWNzIGFkYXB0ZXIgSTJDL0REQyBjaGFubmVsIGRyaXZlcnMK IwojIENPTkZJR19JMkNfVk9PRE9PMyBpcyBub3Qgc2V0CgojCiMgT3RoZXIgSTJDL1NNQnVzIGJ1 cyBkcml2ZXJzCiMKIyBDT05GSUdfSTJDX1BDQV9QTEFURk9STSBpcyBub3Qgc2V0CiMgQ09ORklH X0kyQ19TVFVCIGlzIG5vdCBzZXQKIyBDT05GSUdfU0N4MjAwX0FDQiBpcyBub3Qgc2V0CgojCiMg TWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CiMKIyBDT05GSUdfRFMxNjgyIGlzIG5vdCBz ZXQKIyBDT05GSUdfU0VOU09SU19QQ0Y4NTc0IGlzIG5vdCBzZXQKIyBDT05GSUdfUENGODU3NSBp cyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfUENBOTUzOSBpcyBub3Qgc2V0CiMgQ09ORklHX1NF TlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfVFNMMjU1MCBpcyBub3Qg c2V0CiMgQ09ORklHX0kyQ19ERUJVR19DT1JFIGlzIG5vdCBzZXQKIyBDT05GSUdfSTJDX0RFQlVH X0FMR08gaXMgbm90IHNldAojIENPTkZJR19JMkNfREVCVUdfQlVTIGlzIG5vdCBzZXQKIyBDT05G SUdfSTJDX0RFQlVHX0NISVAgaXMgbm90IHNldAojIENPTkZJR19TUEkgaXMgbm90IHNldApDT05G SUdfQVJDSF9XQU5UX09QVElPTkFMX0dQSU9MSUI9eQojIENPTkZJR19HUElPTElCIGlzIG5vdCBz ZXQKIyBDT05GSUdfVzEgaXMgbm90IHNldAojIENPTkZJR19QT1dFUl9TVVBQTFkgaXMgbm90IHNl dApDT05GSUdfSFdNT049eQpDT05GSUdfSFdNT05fVklEPW0KIyBDT05GSUdfU0VOU09SU19BQklU VUdVUlUgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FCSVRVR1VSVTMgaXMgbm90IHNldAoj IENPTkZJR19TRU5TT1JTX0FENzQxNCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfQUQ3NDE4 IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19BRE0xMDIxIGlzIG5vdCBzZXQKIyBDT05GSUdf U0VOU09SU19BRE0xMDI1IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19BRE0xMDI2IGlzIG5v dCBzZXQKIyBDT05GSUdfU0VOU09SU19BRE0xMDI5IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09S U19BRE0xMDMxIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19BRE05MjQwIGlzIG5vdCBzZXQK IyBDT05GSUdfU0VOU09SU19BRFQ3NDYyIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19BRFQ3 NDcwIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19BRFQ3NDczIGlzIG5vdCBzZXQKIyBDT05G SUdfU0VOU09SU19BRFQ3NDc1IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19LOFRFTVAgaXMg bm90IHNldAojIENPTkZJR19TRU5TT1JTX0FTQjEwMCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNP UlNfQVRLMDExMCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfQVRYUDEgaXMgbm90IHNldAoj IENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfSTVLX0FN QiBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfRjcxODA1RiBpcyBub3Qgc2V0CiMgQ09ORklH X1NFTlNPUlNfRjcxODgyRkcgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0Y3NTM3NVMgaXMg bm90IHNldAojIENPTkZJR19TRU5TT1JTX0ZTQ0hFUiBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNP UlNfRlNDUE9TIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19GU0NITUQgaXMgbm90IHNldAoj IENPTkZJR19TRU5TT1JTX0c3NjBBIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19HTDUxOFNN IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19HTDUyMFNNIGlzIG5vdCBzZXQKIyBDT05GSUdf U0VOU09SU19DT1JFVEVNUCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfSVQ4NyBpcyBub3Qg c2V0CiMgQ09ORklHX1NFTlNPUlNfTE02MyBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTE03 NSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTE03NyBpcyBub3Qgc2V0CiMgQ09ORklHX1NF TlNPUlNfTE03OCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTE04MCBpcyBub3Qgc2V0CiMg Q09ORklHX1NFTlNPUlNfTE04MyBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTE04NSBpcyBu b3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTE04NyBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNf TE05MCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTE05MiBpcyBub3Qgc2V0CiMgQ09ORklH X1NFTlNPUlNfTE05MyBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTFRDNDIxNSBpcyBub3Qg c2V0CiMgQ09ORklHX1NFTlNPUlNfTFRDNDI0NSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNf TE05NTI0MSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTUFYMTYxOSBpcyBub3Qgc2V0CiMg Q09ORklHX1NFTlNPUlNfTUFYNjY1MCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfUEM4NzM2 MCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfUEM4NzQyNyBpcyBub3Qgc2V0CiMgQ09ORklH X1NFTlNPUlNfUENGODU5MSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfU0lTNTU5NSBpcyBu b3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfRE1FMTczNyBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNP UlNfU01TQzQ3TTEgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1NNU0M0N00xOTIgaXMgbm90 IHNldAojIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldAojIENPTkZJR19TRU5T T1JTX0FEUzc4MjggaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1RITUM1MCBpcyBub3Qgc2V0 CiMgQ09ORklHX1NFTlNPUlNfVklBNjg2QSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfVlQx MjExIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19WVDgyMzEgaXMgbm90IHNldAojIENPTkZJ R19TRU5TT1JTX1c4Mzc4MUQgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1c4Mzc5MUQgaXMg bm90IHNldAojIENPTkZJR19TRU5TT1JTX1c4Mzc5MkQgaXMgbm90IHNldAojIENPTkZJR19TRU5T T1JTX1c4Mzc5MyBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfVzgzTDc4NVRTIGlzIG5vdCBz ZXQKIyBDT05GSUdfU0VOU09SU19XODNMNzg2TkcgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19X ODM2MjdIRj1tCiMgQ09ORklHX1NFTlNPUlNfVzgzNjI3RUhGIGlzIG5vdCBzZXQKIyBDT05GSUdf U0VOU09SU19IREFQUyBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTElTM0xWMDJEIGlzIG5v dCBzZXQKIyBDT05GSUdfU0VOU09SU19BUFBMRVNNQyBpcyBub3Qgc2V0CiMgQ09ORklHX0hXTU9O X0RFQlVHX0NISVAgaXMgbm90IHNldApDT05GSUdfVEhFUk1BTD15CiMgQ09ORklHX1RIRVJNQUxf SFdNT04gaXMgbm90IHNldAojIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CkNPTkZJR19TU0Jf UE9TU0lCTEU9eQoKIwojIFNvbmljcyBTaWxpY29uIEJhY2twbGFuZQojCiMgQ09ORklHX1NTQiBp cyBub3Qgc2V0CgojCiMgTXVsdGlmdW5jdGlvbiBkZXZpY2UgZHJpdmVycwojCiMgQ09ORklHX01G RF9DT1JFIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX1NNNTAxIGlzIG5vdCBzZXQKIyBDT05GSUdf SFRDX1BBU0lDMyBpcyBub3Qgc2V0CiMgQ09ORklHX1RXTDQwMzBfQ09SRSBpcyBub3Qgc2V0CiMg Q09ORklHX01GRF9UTUlPIGlzIG5vdCBzZXQKIyBDT05GSUdfUE1JQ19EQTkwM1ggaXMgbm90IHNl dAojIENPTkZJR19NRkRfV004NDAwIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX1dNODM1MF9JMkMg aXMgbm90IHNldAojIENPTkZJR19NRkRfUENGNTA2MzMgaXMgbm90IHNldAojIENPTkZJR19SRUdV TEFUT1IgaXMgbm90IHNldAoKIwojIE11bHRpbWVkaWEgZGV2aWNlcwojCgojCiMgTXVsdGltZWRp YSBjb3JlIHN1cHBvcnQKIwojIENPTkZJR19WSURFT19ERVYgaXMgbm90IHNldAojIENPTkZJR19E VkJfQ09SRSBpcyBub3Qgc2V0CiMgQ09ORklHX1ZJREVPX01FRElBIGlzIG5vdCBzZXQKCiMKIyBN dWx0aW1lZGlhIGRyaXZlcnMKIwojIENPTkZJR19EQUIgaXMgbm90IHNldAoKIwojIEdyYXBoaWNz IHN1cHBvcnQKIwojIENPTkZJR19BR1AgaXMgbm90IHNldAojIENPTkZJR19EUk0gaXMgbm90IHNl dAojIENPTkZJR19WR0FTVEFURSBpcyBub3Qgc2V0CiMgQ09ORklHX1ZJREVPX09VVFBVVF9DT05U Uk9MIGlzIG5vdCBzZXQKIyBDT05GSUdfRkIgaXMgbm90IHNldAojIENPTkZJR19CQUNLTElHSFRf TENEX1NVUFBPUlQgaXMgbm90IHNldAoKIwojIERpc3BsYXkgZGV2aWNlIHN1cHBvcnQKIwojIENP TkZJR19ESVNQTEFZX1NVUFBPUlQgaXMgbm90IHNldAoKIwojIENvbnNvbGUgZGlzcGxheSBkcml2 ZXIgc3VwcG9ydAojCkNPTkZJR19WR0FfQ09OU09MRT15CiMgQ09ORklHX1ZHQUNPTl9TT0ZUX1ND Uk9MTEJBQ0sgaXMgbm90IHNldApDT05GSUdfRFVNTVlfQ09OU09MRT15CiMgQ09ORklHX1NPVU5E IGlzIG5vdCBzZXQKIyBDT05GSUdfSElEX1NVUFBPUlQgaXMgbm90IHNldApDT05GSUdfVVNCX1NV UFBPUlQ9eQpDT05GSUdfVVNCX0FSQ0hfSEFTX0hDRD15CkNPTkZJR19VU0JfQVJDSF9IQVNfT0hD ST15CkNPTkZJR19VU0JfQVJDSF9IQVNfRUhDST15CkNPTkZJR19VU0I9eQpDT05GSUdfVVNCX0RF QlVHPXkKQ09ORklHX1VTQl9BTk5PVU5DRV9ORVdfREVWSUNFUz15CgojCiMgTWlzY2VsbGFuZW91 cyBVU0Igb3B0aW9ucwojCkNPTkZJR19VU0JfREVWSUNFRlM9eQojIENPTkZJR19VU0JfREVWSUNF X0NMQVNTIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX0RZTkFNSUNfTUlOT1JTIGlzIG5vdCBzZXQK IyBDT05GSUdfVVNCX1NVU1BFTkQgaXMgbm90IHNldAojIENPTkZJR19VU0JfT1RHIGlzIG5vdCBz ZXQKIyBDT05GSUdfVVNCX01PTiBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9XVVNCIGlzIG5vdCBz ZXQKIyBDT05GSUdfVVNCX1dVU0JfQ0JBRiBpcyBub3Qgc2V0CgojCiMgVVNCIEhvc3QgQ29udHJv bGxlciBEcml2ZXJzCiMKIyBDT05GSUdfVVNCX0M2N1gwMF9IQ0QgaXMgbm90IHNldApDT05GSUdf VVNCX0VIQ0lfSENEPXkKIyBDT05GSUdfVVNCX0VIQ0lfUk9PVF9IVUJfVFQgaXMgbm90IHNldApD T05GSUdfVVNCX0VIQ0lfVFRfTkVXU0NIRUQ9eQojIENPTkZJR19VU0JfT1hVMjEwSFBfSENEIGlz IG5vdCBzZXQKIyBDT05GSUdfVVNCX0lTUDExNlhfSENEIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNC X0lTUDE3NjBfSENEIGlzIG5vdCBzZXQKQ09ORklHX1VTQl9PSENJX0hDRD15CiMgQ09ORklHX1VT Ql9PSENJX0JJR19FTkRJQU5fREVTQyBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9PSENJX0JJR19F TkRJQU5fTU1JTyBpcyBub3Qgc2V0CkNPTkZJR19VU0JfT0hDSV9MSVRUTEVfRU5ESUFOPXkKIyBD T05GSUdfVVNCX1VIQ0lfSENEIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX1NMODExX0hDRCBpcyBu b3Qgc2V0CiMgQ09ORklHX1VTQl9SOEE2NjU5N19IQ0QgaXMgbm90IHNldAojIENPTkZJR19VU0Jf V0hDSV9IQ0QgaXMgbm90IHNldAojIENPTkZJR19VU0JfSFdBX0hDRCBpcyBub3Qgc2V0CgojCiMg VVNCIERldmljZSBDbGFzcyBkcml2ZXJzCiMKIyBDT05GSUdfVVNCX0FDTSBpcyBub3Qgc2V0CkNP TkZJR19VU0JfUFJJTlRFUj15CiMgQ09ORklHX1VTQl9XRE0gaXMgbm90IHNldAojIENPTkZJR19V U0JfVE1DIGlzIG5vdCBzZXQKCiMKIyBOT1RFOiBVU0JfU1RPUkFHRSBkZXBlbmRzIG9uIFNDU0kg YnV0IEJMS19ERVZfU0QgbWF5CiMKCiMKIyBhbHNvIGJlIG5lZWRlZDsgc2VlIFVTQl9TVE9SQUdF IEhlbHAgZm9yIG1vcmUgaW5mbwojCiMgQ09ORklHX1VTQl9TVE9SQUdFIGlzIG5vdCBzZXQKIyBD T05GSUdfVVNCX0xJQlVTVUFMIGlzIG5vdCBzZXQKCiMKIyBVU0IgSW1hZ2luZyBkZXZpY2VzCiMK IyBDT05GSUdfVVNCX01EQzgwMCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9NSUNST1RFSyBpcyBu b3Qgc2V0CgojCiMgVVNCIHBvcnQgZHJpdmVycwojCiMgQ09ORklHX1VTQl9TRVJJQUwgaXMgbm90 IHNldAoKIwojIFVTQiBNaXNjZWxsYW5lb3VzIGRyaXZlcnMKIwojIENPTkZJR19VU0JfRU1JNjIg aXMgbm90IHNldAojIENPTkZJR19VU0JfRU1JMjYgaXMgbm90IHNldAojIENPTkZJR19VU0JfQURV VFVYIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX1NFVlNFRyBpcyBub3Qgc2V0CiMgQ09ORklHX1VT Ql9SSU81MDAgaXMgbm90IHNldAojIENPTkZJR19VU0JfTEVHT1RPV0VSIGlzIG5vdCBzZXQKIyBD T05GSUdfVVNCX0xDRCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9CRVJSWV9DSEFSR0UgaXMgbm90 IHNldAojIENPTkZJR19VU0JfTEVEIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX0NZUFJFU1NfQ1k3 QzYzIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX0NZVEhFUk0gaXMgbm90IHNldAojIENPTkZJR19V U0JfSURNT1VTRSBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9GVERJX0VMQU4gaXMgbm90IHNldAoj IENPTkZJR19VU0JfQVBQTEVESVNQTEFZIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX1NJU1VTQlZH QSBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9MRCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9UUkFO Q0VWSUJSQVRPUiBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9JT1dBUlJJT1IgaXMgbm90IHNldAoj IENPTkZJR19VU0JfVEVTVCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9JU0lHSFRGVyBpcyBub3Qg c2V0CiMgQ09ORklHX1VTQl9WU1QgaXMgbm90IHNldAojIENPTkZJR19VU0JfR0FER0VUIGlzIG5v dCBzZXQKCiMKIyBPVEcgYW5kIHJlbGF0ZWQgaW5mcmFzdHJ1Y3R1cmUKIwojIENPTkZJR19OT1Bf VVNCX1hDRUlWIGlzIG5vdCBzZXQKIyBDT05GSUdfVVdCIGlzIG5vdCBzZXQKIyBDT05GSUdfTU1D IGlzIG5vdCBzZXQKIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAojIENPTkZJR19ORVdfTEVE UyBpcyBub3Qgc2V0CiMgQ09ORklHX0FDQ0VTU0lCSUxJVFkgaXMgbm90IHNldAojIENPTkZJR19J TkZJTklCQU5EIGlzIG5vdCBzZXQKIyBDT05GSUdfRURBQyBpcyBub3Qgc2V0CkNPTkZJR19SVENf TElCPXkKQ09ORklHX1JUQ19DTEFTUz15CkNPTkZJR19SVENfSENUT1NZUz15CkNPTkZJR19SVENf SENUT1NZU19ERVZJQ0U9InJ0YzAiCkNPTkZJR19SVENfREVCVUc9eQoKIwojIFJUQyBpbnRlcmZh Y2VzCiMKQ09ORklHX1JUQ19JTlRGX1NZU0ZTPXkKQ09ORklHX1JUQ19JTlRGX1BST0M9eQpDT05G SUdfUlRDX0lOVEZfREVWPXkKIyBDT05GSUdfUlRDX0lOVEZfREVWX1VJRV9FTVVMIGlzIG5vdCBz ZXQKIyBDT05GSUdfUlRDX0RSVl9URVNUIGlzIG5vdCBzZXQKCiMKIyBJMkMgUlRDIGRyaXZlcnMK IwojIENPTkZJR19SVENfRFJWX0RTMTMwNyBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfRFMx Mzc0IGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9EUzE2NzIgaXMgbm90IHNldAojIENPTkZJ R19SVENfRFJWX01BWDY5MDAgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX1JTNUMzNzIgaXMg bm90IHNldAojIENPTkZJR19SVENfRFJWX0lTTDEyMDggaXMgbm90IHNldAojIENPTkZJR19SVENf RFJWX1gxMjA1IGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTYzIGlzIG5vdCBzZXQK IyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTgzIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9NNDFU ODAgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX1MzNTM5MEEgaXMgbm90IHNldAojIENPTkZJ R19SVENfRFJWX0ZNMzEzMCBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfUlg4NTgxIGlzIG5v dCBzZXQKCiMKIyBTUEkgUlRDIGRyaXZlcnMKIwoKIwojIFBsYXRmb3JtIFJUQyBkcml2ZXJzCiMK Q09ORklHX1JUQ19EUlZfQ01PUz15CiMgQ09ORklHX1JUQ19EUlZfRFMxMjg2IGlzIG5vdCBzZXQK IyBDT05GSUdfUlRDX0RSVl9EUzE1MTEgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX0RTMTU1 MyBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfRFMxNzQyIGlzIG5vdCBzZXQKIyBDT05GSUdf UlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfTTQ4VDg2IGlzIG5v dCBzZXQKIyBDT05GSUdfUlRDX0RSVl9NNDhUMzUgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJW X000OFQ1OSBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfQlE0ODAyIGlzIG5vdCBzZXQKIyBD T05GSUdfUlRDX0RSVl9WMzAyMCBpcyBub3Qgc2V0CgojCiMgb24tQ1BVIFJUQyBkcml2ZXJzCiMK IyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiMgQ09ORklHX0FVWERJU1BMQVkgaXMgbm90 IHNldAojIENPTkZJR19VSU8gaXMgbm90IHNldAojIENPTkZJR19TVEFHSU5HIGlzIG5vdCBzZXQK IyBDT05GSUdfWDg2X1BMQVRGT1JNX0RFVklDRVMgaXMgbm90IHNldAoKIwojIEZpcm13YXJlIERy aXZlcnMKIwojIENPTkZJR19FREQgaXMgbm90IHNldApDT05GSUdfRklSTVdBUkVfTUVNTUFQPXkK IyBDT05GSUdfREVMTF9SQlUgaXMgbm90IHNldAojIENPTkZJR19EQ0RCQVMgaXMgbm90IHNldAoj IENPTkZJR19ETUlJRCBpcyBub3Qgc2V0CiMgQ09ORklHX0lTQ1NJX0lCRlRfRklORCBpcyBub3Qg c2V0CgojCiMgRmlsZSBzeXN0ZW1zCiMKIyBDT05GSUdfRVhUMl9GUyBpcyBub3Qgc2V0CiMgQ09O RklHX0VYVDNfRlMgaXMgbm90IHNldAojIENPTkZJR19FWFQ0X0ZTIGlzIG5vdCBzZXQKQ09ORklH X1JFSVNFUkZTX0ZTPXkKQ09ORklHX1JFSVNFUkZTX0NIRUNLPXkKIyBDT05GSUdfUkVJU0VSRlNf UFJPQ19JTkZPIGlzIG5vdCBzZXQKQ09ORklHX1JFSVNFUkZTX0ZTX1hBVFRSPXkKIyBDT05GSUdf UkVJU0VSRlNfRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKIyBDT05GSUdfUkVJU0VSRlNfRlNfU0VD VVJJVFkgaXMgbm90IHNldAojIENPTkZJR19KRlNfRlMgaXMgbm90IHNldAojIENPTkZJR19GU19Q T1NJWF9BQ0wgaXMgbm90IHNldApDT05GSUdfRklMRV9MT0NLSU5HPXkKQ09ORklHX1hGU19GUz15 CiMgQ09ORklHX1hGU19RVU9UQSBpcyBub3Qgc2V0CiMgQ09ORklHX1hGU19QT1NJWF9BQ0wgaXMg bm90IHNldAojIENPTkZJR19YRlNfUlQgaXMgbm90IHNldApDT05GSUdfWEZTX0RFQlVHPXkKIyBD T05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAojIENPTkZJR19CVFJGU19GUyBpcyBub3Qgc2V0CkNP TkZJR19ETk9USUZZPXkKQ09ORklHX0lOT1RJRlk9eQpDT05GSUdfSU5PVElGWV9VU0VSPXkKIyBD T05GSUdfUVVPVEEgaXMgbm90IHNldAojIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAojIENP TkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0Cgoj CiMgQ2FjaGVzCiMKIyBDT05GSUdfRlNDQUNIRSBpcyBub3Qgc2V0CgojCiMgQ0QtUk9NL0RWRCBG aWxlc3lzdGVtcwojCiMgQ09ORklHX0lTTzk2NjBfRlMgaXMgbm90IHNldAojIENPTkZJR19VREZf RlMgaXMgbm90IHNldAoKIwojIERPUy9GQVQvTlQgRmlsZXN5c3RlbXMKIwojIENPTkZJR19NU0RP U19GUyBpcyBub3Qgc2V0CiMgQ09ORklHX1ZGQVRfRlMgaXMgbm90IHNldAojIENPTkZJR19OVEZT X0ZTIGlzIG5vdCBzZXQKCiMKIyBQc2V1ZG8gZmlsZXN5c3RlbXMKIwpDT05GSUdfUFJPQ19GUz15 CkNPTkZJR19QUk9DX0tDT1JFPXkKQ09ORklHX1BST0NfU1lTQ1RMPXkKQ09ORklHX1BST0NfUEFH RV9NT05JVE9SPXkKQ09ORklHX1NZU0ZTPXkKQ09ORklHX1RNUEZTPXkKIyBDT05GSUdfVE1QRlNf UE9TSVhfQUNMIGlzIG5vdCBzZXQKIyBDT05GSUdfSFVHRVRMQkZTIGlzIG5vdCBzZXQKIyBDT05G SUdfSFVHRVRMQl9QQUdFIGlzIG5vdCBzZXQKQ09ORklHX0NPTkZJR0ZTX0ZTPXkKIyBDT05GSUdf TUlTQ19GSUxFU1lTVEVNUyBpcyBub3Qgc2V0CkNPTkZJR19ORVRXT1JLX0ZJTEVTWVNURU1TPXkK Q09ORklHX05GU19GUz15CkNPTkZJR19ORlNfVjM9eQojIENPTkZJR19ORlNfVjNfQUNMIGlzIG5v dCBzZXQKIyBDT05GSUdfTkZTX1Y0IGlzIG5vdCBzZXQKQ09ORklHX05GU0Q9eQpDT05GSUdfTkZT RF9WMz15CiMgQ09ORklHX05GU0RfVjNfQUNMIGlzIG5vdCBzZXQKIyBDT05GSUdfTkZTRF9WNCBp cyBub3Qgc2V0CkNPTkZJR19MT0NLRD15CkNPTkZJR19MT0NLRF9WND15CkNPTkZJR19FWFBPUlRG Uz15CkNPTkZJR19ORlNfQ09NTU9OPXkKQ09ORklHX1NVTlJQQz15CkNPTkZJR19TVU5SUENfR1NT PXkKQ09ORklHX1JQQ1NFQ19HU1NfS1JCNT15CiMgQ09ORklHX1JQQ1NFQ19HU1NfU1BLTTMgaXMg bm90IHNldAojIENPTkZJR19TTUJfRlMgaXMgbm90IHNldAojIENPTkZJR19DSUZTIGlzIG5vdCBz ZXQKIyBDT05GSUdfTkNQX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfQ09EQV9GUyBpcyBub3Qgc2V0 CiMgQ09ORklHX0FGU19GUyBpcyBub3Qgc2V0CgojCiMgUGFydGl0aW9uIFR5cGVzCiMKIyBDT05G SUdfUEFSVElUSU9OX0FEVkFOQ0VEIGlzIG5vdCBzZXQKQ09ORklHX01TRE9TX1BBUlRJVElPTj15 CkNPTkZJR19OTFM9eQpDT05GSUdfTkxTX0RFRkFVTFQ9ImtvaTgtciIKIyBDT05GSUdfTkxTX0NP REVQQUdFXzQzNyBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19DT0RFUEFHRV83MzcgaXMgbm90IHNl dAojIENPTkZJR19OTFNfQ09ERVBBR0VfNzc1IGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0NPREVQ QUdFXzg1MCBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19DT0RFUEFHRV84NTIgaXMgbm90IHNldAoj IENPTkZJR19OTFNfQ09ERVBBR0VfODU1IGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0NPREVQQUdF Xzg1NyBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19DT0RFUEFHRV84NjAgaXMgbm90IHNldAojIENP TkZJR19OTFNfQ09ERVBBR0VfODYxIGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2 MiBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19DT0RFUEFHRV84NjMgaXMgbm90IHNldAojIENPTkZJ R19OTFNfQ09ERVBBR0VfODY0IGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2NSBp cyBub3Qgc2V0CkNPTkZJR19OTFNfQ09ERVBBR0VfODY2PW0KIyBDT05GSUdfTkxTX0NPREVQQUdF Xzg2OSBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19DT0RFUEFHRV85MzYgaXMgbm90IHNldAojIENP TkZJR19OTFNfQ09ERVBBR0VfOTUwIGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0NPREVQQUdFXzkz MiBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19DT0RFUEFHRV85NDkgaXMgbm90IHNldAojIENPTkZJ R19OTFNfQ09ERVBBR0VfODc0IGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0lTTzg4NTlfOCBpcyBu b3Qgc2V0CiMgQ09ORklHX05MU19DT0RFUEFHRV8xMjUwIGlzIG5vdCBzZXQKQ09ORklHX05MU19D T0RFUEFHRV8xMjUxPW0KIyBDT05GSUdfTkxTX0FTQ0lJIGlzIG5vdCBzZXQKIyBDT05GSUdfTkxT X0lTTzg4NTlfMSBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19JU084ODU5XzIgaXMgbm90IHNldAoj IENPTkZJR19OTFNfSVNPODg1OV8zIGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0lTTzg4NTlfNCBp cyBub3Qgc2V0CiMgQ09ORklHX05MU19JU084ODU5XzUgaXMgbm90IHNldAojIENPTkZJR19OTFNf SVNPODg1OV82IGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0lTTzg4NTlfNyBpcyBub3Qgc2V0CiMg Q09ORklHX05MU19JU084ODU5XzkgaXMgbm90IHNldAojIENPTkZJR19OTFNfSVNPODg1OV8xMyBp cyBub3Qgc2V0CiMgQ09ORklHX05MU19JU084ODU5XzE0IGlzIG5vdCBzZXQKIyBDT05GSUdfTkxT X0lTTzg4NTlfMTUgaXMgbm90IHNldApDT05GSUdfTkxTX0tPSThfUj15CiMgQ09ORklHX05MU19L T0k4X1UgaXMgbm90IHNldApDT05GSUdfTkxTX1VURjg9bQojIENPTkZJR19ETE0gaXMgbm90IHNl dAoKIwojIEtlcm5lbCBoYWNraW5nCiMKQ09ORklHX1RSQUNFX0lSUUZMQUdTX1NVUFBPUlQ9eQpD T05GSUdfUFJJTlRLX1RJTUU9eQojIENPTkZJR19FTkFCTEVfV0FSTl9ERVBSRUNBVEVEIGlzIG5v dCBzZXQKIyBDT05GSUdfRU5BQkxFX01VU1RfQ0hFQ0sgaXMgbm90IHNldApDT05GSUdfRlJBTUVf V0FSTj0wCkNPTkZJR19NQUdJQ19TWVNSUT15CiMgQ09ORklHX1VOVVNFRF9TWU1CT0xTIGlzIG5v dCBzZXQKQ09ORklHX0RFQlVHX0ZTPXkKIyBDT05GSUdfSEVBREVSU19DSEVDSyBpcyBub3Qgc2V0 CkNPTkZJR19ERUJVR19LRVJORUw9eQpDT05GSUdfREVCVUdfU0hJUlE9eQpDT05GSUdfREVURUNU X1NPRlRMT0NLVVA9eQojIENPTkZJR19CT09UUEFSQU1fU09GVExPQ0tVUF9QQU5JQyBpcyBub3Qg c2V0CkNPTkZJR19CT09UUEFSQU1fU09GVExPQ0tVUF9QQU5JQ19WQUxVRT0wCkNPTkZJR19ERVRF Q1RfSFVOR19UQVNLPXkKIyBDT05GSUdfQk9PVFBBUkFNX0hVTkdfVEFTS19QQU5JQyBpcyBub3Qg c2V0CkNPTkZJR19CT09UUEFSQU1fSFVOR19UQVNLX1BBTklDX1ZBTFVFPTAKQ09ORklHX1NDSEVE X0RFQlVHPXkKQ09ORklHX1NDSEVEU1RBVFM9eQpDT05GSUdfVElNRVJfU1RBVFM9eQojIENPTkZJ R19ERUJVR19PQkpFQ1RTIGlzIG5vdCBzZXQKQ09ORklHX1NMVUJfREVCVUdfT049eQpDT05GSUdf U0xVQl9TVEFUUz15CkNPTkZJR19ERUJVR19QUkVFTVBUPXkKQ09ORklHX0RFQlVHX1JUX01VVEVY RVM9eQpDT05GSUdfREVCVUdfUElfTElTVD15CkNPTkZJR19SVF9NVVRFWF9URVNURVI9eQpDT05G SUdfREVCVUdfU1BJTkxPQ0s9eQpDT05GSUdfREVCVUdfTVVURVhFUz15CkNPTkZJR19ERUJVR19M T0NLX0FMTE9DPXkKQ09ORklHX1BST1ZFX0xPQ0tJTkc9eQpDT05GSUdfTE9DS0RFUD15CkNPTkZJ R19MT0NLX1NUQVQ9eQpDT05GSUdfREVCVUdfTE9DS0RFUD15CkNPTkZJR19UUkFDRV9JUlFGTEFH Uz15CkNPTkZJR19ERUJVR19TUElOTE9DS19TTEVFUD15CkNPTkZJR19ERUJVR19MT0NLSU5HX0FQ SV9TRUxGVEVTVFM9eQpDT05GSUdfU1RBQ0tUUkFDRT15CiMgQ09ORklHX0RFQlVHX0tPQkpFQ1Qg aXMgbm90IHNldApDT05GSUdfREVCVUdfSElHSE1FTT15CkNPTkZJR19ERUJVR19CVUdWRVJCT1NF PXkKQ09ORklHX0RFQlVHX0lORk89eQpDT05GSUdfREVCVUdfVk09eQpDT05GSUdfREVCVUdfVklS VFVBTD15CkNPTkZJR19ERUJVR19XUklURUNPVU5UPXkKQ09ORklHX0RFQlVHX01FTU9SWV9JTklU PXkKQ09ORklHX0RFQlVHX0xJU1Q9eQpDT05GSUdfREVCVUdfU0c9eQojIENPTkZJR19ERUJVR19O T1RJRklFUlMgaXMgbm90IHNldApDT05GSUdfQVJDSF9XQU5UX0ZSQU1FX1BPSU5URVJTPXkKQ09O RklHX0ZSQU1FX1BPSU5URVI9eQojIENPTkZJR19CT09UX1BSSU5US19ERUxBWSBpcyBub3Qgc2V0 CiMgQ09ORklHX1JDVV9UT1JUVVJFX1RFU1QgaXMgbm90IHNldAojIENPTkZJR19CQUNLVFJBQ0Vf U0VMRl9URVNUIGlzIG5vdCBzZXQKIyBDT05GSUdfREVCVUdfQkxPQ0tfRVhUX0RFVlQgaXMgbm90 IHNldAojIENPTkZJR19GQVVMVF9JTkpFQ1RJT04gaXMgbm90IHNldApDT05GSUdfTEFURU5DWVRP UD15CkNPTkZJR19TWVNDVExfU1lTQ0FMTF9DSEVDSz15CkNPTkZJR19ERUJVR19QQUdFQUxMT0M9 eQpDT05GSUdfVVNFUl9TVEFDS1RSQUNFX1NVUFBPUlQ9eQpDT05GSUdfSEFWRV9GVU5DVElPTl9U UkFDRVI9eQpDT05GSUdfSEFWRV9GVU5DVElPTl9HUkFQSF9UUkFDRVI9eQpDT05GSUdfSEFWRV9G VU5DVElPTl9UUkFDRV9NQ09VTlRfVEVTVD15CkNPTkZJR19IQVZFX0RZTkFNSUNfRlRSQUNFPXkK Q09ORklHX0hBVkVfRlRSQUNFX01DT1VOVF9SRUNPUkQ9eQpDT05GSUdfSEFWRV9GVFJBQ0VfU1lT Q0FMTFM9eQpDT05GSUdfVFJBQ0lOR19TVVBQT1JUPXkKCiMKIyBUcmFjZXJzCiMKIyBDT05GSUdf RlVOQ1RJT05fVFJBQ0VSIGlzIG5vdCBzZXQKIyBDT05GSUdfSVJRU09GRl9UUkFDRVIgaXMgbm90 IHNldAojIENPTkZJR19QUkVFTVBUX1RSQUNFUiBpcyBub3Qgc2V0CiMgQ09ORklHX1NZU1BST0Zf VFJBQ0VSIGlzIG5vdCBzZXQKIyBDT05GSUdfU0NIRURfVFJBQ0VSIGlzIG5vdCBzZXQKIyBDT05G SUdfQ09OVEVYVF9TV0lUQ0hfVFJBQ0VSIGlzIG5vdCBzZXQKIyBDT05GSUdfRVZFTlRfVFJBQ0VS IGlzIG5vdCBzZXQKIyBDT05GSUdfRlRSQUNFX1NZU0NBTExTIGlzIG5vdCBzZXQKIyBDT05GSUdf Qk9PVF9UUkFDRVIgaXMgbm90IHNldAojIENPTkZJR19UUkFDRV9CUkFOQ0hfUFJPRklMSU5HIGlz IG5vdCBzZXQKIyBDT05GSUdfUE9XRVJfVFJBQ0VSIGlzIG5vdCBzZXQKIyBDT05GSUdfU1RBQ0tf VFJBQ0VSIGlzIG5vdCBzZXQKIyBDT05GSUdfS01FTVRSQUNFIGlzIG5vdCBzZXQKIyBDT05GSUdf V09SS1FVRVVFX1RSQUNFUiBpcyBub3Qgc2V0CiMgQ09ORklHX0JMS19ERVZfSU9fVFJBQ0UgaXMg bm90IHNldAojIENPTkZJR19NTUlPVFJBQ0UgaXMgbm90IHNldAojIENPTkZJR19QUk9WSURFX09I Q0kxMzk0X0RNQV9JTklUIGlzIG5vdCBzZXQKQ09ORklHX0RZTkFNSUNfREVCVUc9eQojIENPTkZJ R19ETUFfQVBJX0RFQlVHIGlzIG5vdCBzZXQKIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CkNP TkZJR19IQVZFX0FSQ0hfS0dEQj15CkNPTkZJR19LR0RCPXkKQ09ORklHX0tHREJfU0VSSUFMX0NP TlNPTEU9eQpDT05GSUdfS0dEQl9URVNUUz15CkNPTkZJR19LR0RCX1RFU1RTX09OX0JPT1Q9eQpD T05GSUdfS0dEQl9URVNUU19CT09UX1NUUklORz0iVjFGMTAwIgojIENPTkZJR19TVFJJQ1RfREVW TUVNIGlzIG5vdCBzZXQKQ09ORklHX1g4Nl9WRVJCT1NFX0JPT1RVUD15CkNPTkZJR19FQVJMWV9Q UklOVEs9eQojIENPTkZJR19FQVJMWV9QUklOVEtfREJHUCBpcyBub3Qgc2V0CkNPTkZJR19ERUJV R19TVEFDS09WRVJGTE9XPXkKQ09ORklHX0RFQlVHX1NUQUNLX1VTQUdFPXkKQ09ORklHX1g4Nl9Q VERVTVA9eQojIENPTkZJR19ERUJVR19ST0RBVEEgaXMgbm90IHNldAojIENPTkZJR19ERUJVR19O WF9URVNUIGlzIG5vdCBzZXQKIyBDT05GSUdfNEtTVEFDS1MgaXMgbm90IHNldApDT05GSUdfRE9V QkxFRkFVTFQ9eQpDT05GSUdfSEFWRV9NTUlPVFJBQ0VfU1VQUE9SVD15CkNPTkZJR19JT19ERUxB WV9UWVBFXzBYODA9MApDT05GSUdfSU9fREVMQVlfVFlQRV8wWEVEPTEKQ09ORklHX0lPX0RFTEFZ X1RZUEVfVURFTEFZPTIKQ09ORklHX0lPX0RFTEFZX1RZUEVfTk9ORT0zCkNPTkZJR19JT19ERUxB WV8wWDgwPXkKIyBDT05GSUdfSU9fREVMQVlfMFhFRCBpcyBub3Qgc2V0CiMgQ09ORklHX0lPX0RF TEFZX1VERUxBWSBpcyBub3Qgc2V0CiMgQ09ORklHX0lPX0RFTEFZX05PTkUgaXMgbm90IHNldApD T05GSUdfREVGQVVMVF9JT19ERUxBWV9UWVBFPTAKQ09ORklHX0RFQlVHX0JPT1RfUEFSQU1TPXkK Q09ORklHX0NQQV9ERUJVRz15CkNPTkZJR19PUFRJTUlaRV9JTkxJTklORz15CgojCiMgU2VjdXJp dHkgb3B0aW9ucwojCiMgQ09ORklHX0tFWVMgaXMgbm90IHNldAojIENPTkZJR19TRUNVUklUWSBp cyBub3Qgc2V0CiMgQ09ORklHX1NFQ1VSSVRZRlMgaXMgbm90IHNldAojIENPTkZJR19TRUNVUklU WV9GSUxFX0NBUEFCSUxJVElFUyBpcyBub3Qgc2V0CiMgQ09ORklHX0lNQSBpcyBub3Qgc2V0CkNP TkZJR19DUllQVE89eQoKIwojIENyeXB0byBjb3JlIG9yIGhlbHBlcgojCiMgQ09ORklHX0NSWVBU T19GSVBTIGlzIG5vdCBzZXQKQ09ORklHX0NSWVBUT19BTEdBUEk9eQpDT05GSUdfQ1JZUFRPX0FM R0FQSTI9eQpDT05GSUdfQ1JZUFRPX0FFQUQyPXkKQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9eQpD T05GSUdfQ1JZUFRPX0JMS0NJUEhFUjI9eQpDT05GSUdfQ1JZUFRPX0hBU0g9eQpDT05GSUdfQ1JZ UFRPX0hBU0gyPXkKQ09ORklHX0NSWVBUT19STkcyPXkKQ09ORklHX0NSWVBUT19QQ09NUD15CkNP TkZJR19DUllQVE9fTUFOQUdFUj15CkNPTkZJR19DUllQVE9fTUFOQUdFUjI9eQojIENPTkZJR19D UllQVE9fR0YxMjhNVUwgaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fTlVMTCBpcyBub3Qgc2V0 CkNPTkZJR19DUllQVE9fV09SS1FVRVVFPXkKIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qg c2V0CiMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX1RF U1QgaXMgbm90IHNldAoKIwojIEF1dGhlbnRpY2F0ZWQgRW5jcnlwdGlvbiB3aXRoIEFzc29jaWF0 ZWQgRGF0YQojCiMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAojIENPTkZJR19DUllQVE9f R0NNIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKCiMKIyBCbG9j ayBtb2RlcwojCkNPTkZJR19DUllQVE9fQ0JDPXkKIyBDT05GSUdfQ1JZUFRPX0NUUiBpcyBub3Qg c2V0CiMgQ09ORklHX0NSWVBUT19DVFMgaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fRUNCIGlz IG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19Q Q0JDIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX1hUUyBpcyBub3Qgc2V0CgojCiMgSGFzaCBt b2RlcwojCiMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX1hD QkMgaXMgbm90IHNldAoKIwojIERpZ2VzdAojCiMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90 IHNldAojIENPTkZJR19DUllQVE9fQ1JDMzJDX0lOVEVMIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZ UFRPX01ENCBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fTUQ1PXkKIyBDT05GSUdfQ1JZUFRPX01J Q0hBRUxfTUlDIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX1JNRDEyOCBpcyBub3Qgc2V0CiMg Q09ORklHX0NSWVBUT19STUQxNjAgaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fUk1EMjU2IGlz IG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX1JNRDMyMCBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBU T19TSEExIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX1NIQTI1NiBpcyBub3Qgc2V0CiMgQ09O RklHX0NSWVBUT19TSEE1MTIgaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fVEdSMTkyIGlzIG5v dCBzZXQKIyBDT05GSUdfQ1JZUFRPX1dQNTEyIGlzIG5vdCBzZXQKCiMKIyBDaXBoZXJzCiMKIyBD T05GSUdfQ1JZUFRPX0FFUyBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19BRVNfNTg2IGlzIG5v dCBzZXQKIyBDT05GSUdfQ1JZUFRPX0FOVUJJUyBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19B UkM0IGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX0JMT1dGSVNIIGlzIG5vdCBzZXQKIyBDT05G SUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX0NBU1Q1IGlzIG5v dCBzZXQKIyBDT05GSUdfQ1JZUFRPX0NBU1Q2IGlzIG5vdCBzZXQKQ09ORklHX0NSWVBUT19ERVM9 eQojIENPTkZJR19DUllQVE9fRkNSWVBUIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX0tIQVpB RCBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19TQUxTQTIwIGlzIG5vdCBzZXQKIyBDT05GSUdf Q1JZUFRPX1NBTFNBMjBfNTg2IGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90 IHNldAojIENPTkZJR19DUllQVE9fU0VSUEVOVCBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19U RUEgaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fVFdPRklTSCBpcyBub3Qgc2V0CiMgQ09ORklH X0NSWVBUT19UV09GSVNIXzU4NiBpcyBub3Qgc2V0CgojCiMgQ29tcHJlc3Npb24KIwojIENPTkZJ R19DUllQVE9fREVGTEFURSBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19aTElCIGlzIG5vdCBz ZXQKIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CgojCiMgUmFuZG9tIE51bWJlciBHZW5l cmF0aW9uCiMKIyBDT05GSUdfQ1JZUFRPX0FOU0lfQ1BSTkcgaXMgbm90IHNldAojIENPTkZJR19D UllQVE9fSFcgaXMgbm90IHNldApDT05GSUdfSEFWRV9LVk09eQpDT05GSUdfSEFWRV9LVk1fSVJR Q0hJUD15CiMgQ09ORklHX1ZJUlRVQUxJWkFUSU9OIGlzIG5vdCBzZXQKIyBDT05GSUdfQklOQVJZ X1BSSU5URiBpcyBub3Qgc2V0CgojCiMgTGlicmFyeSByb3V0aW5lcwojCkNPTkZJR19CSVRSRVZF UlNFPXkKQ09ORklHX0dFTkVSSUNfRklORF9GSVJTVF9CSVQ9eQpDT05GSUdfR0VORVJJQ19GSU5E X05FWFRfQklUPXkKQ09ORklHX0dFTkVSSUNfRklORF9MQVNUX0JJVD15CiMgQ09ORklHX0NSQ19D Q0lUVCBpcyBub3Qgc2V0CiMgQ09ORklHX0NSQzE2IGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JDX1Qx MERJRiBpcyBub3Qgc2V0CiMgQ09ORklHX0NSQ19JVFVfVCBpcyBub3Qgc2V0CkNPTkZJR19DUkMz Mj15CiMgQ09ORklHX0NSQzcgaXMgbm90IHNldAojIENPTkZJR19MSUJDUkMzMkMgaXMgbm90IHNl dApDT05GSUdfSEFTX0lPTUVNPXkKQ09ORklHX0hBU19JT1BPUlQ9eQpDT05GSUdfSEFTX0RNQT15 CkNPTkZJR19OTEFUVFI9eQo= --001636c599f6a65338046907f308-- From timothy.shimmin@gmail.com Sun May 3 18:35:39 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,HTML_MESSAGE, LOCAL_GNU_PATCH,SUBJECT_FUZZY_TION autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n43NZdpS141673 for ; Sun, 3 May 2009 18:35:39 -0500 X-ASG-Debug-ID: 1241393740-1a8f02b20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from wf-out-1314.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3264525C827 for ; Sun, 3 May 2009 16:35:40 -0700 (PDT) Received: from wf-out-1314.google.com (wf-out-1314.google.com [209.85.200.170]) by cuda.sgi.com with ESMTP id UECnbCnS8uMboLwD for ; Sun, 03 May 2009 16:35:40 -0700 (PDT) Received: by wf-out-1314.google.com with SMTP id 29so2651170wff.32 for ; Sun, 03 May 2009 16:35:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=lHPafSK7I4cvg2DBjLJVfAeyVLUHi2+aMBPRRaatwFo=; b=LNZq98aNl3H08LXpr9W9eO3m1hahZdrcyDFTlpuD+iSSePtRX1N6HlG89zPRDdELT8 ytTkY7efrNTOjj7ZYkC4/bBWEEHFT+Sf2JEK1xpW/t3h1JpsYiJ6HLStakLv1cjSU+Oh 5VG0HoNoM9RxiCJxcx2DdVIud0FJ+ejlw7D7Q= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=db3Bfcf0V3dZ+IwbJv1FAgiiCTsPEpvW7/vWX32d7+06D1cB6Ax4WFEUZzibIgOQ6b 8Pg7e7Pqp0jsNuTera4PkUsR3BeVLCQCxEaNLXKFmVOgUm1CEiOLSme4Xqj/WBLoAWh2 GbNxQWonEu/zDEtRRQ+SX8QPcsBVc21LIqJhM= MIME-Version: 1.0 Received: by 10.142.156.19 with SMTP id d19mr1997488wfe.6.1241393739781; Sun, 03 May 2009 16:35:39 -0700 (PDT) In-Reply-To: <20090429135050.GC30808@infradead.org> References: <20090429135050.GC30808@infradead.org> Date: Mon, 4 May 2009 09:35:39 +1000 Message-ID: X-ASG-Orig-Subj: Re: [PATCH] xfsdump: add .gitignore Subject: Re: [PATCH] xfsdump: add .gitignore From: Timothy Shimmin To: Christoph Hellwig Cc: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=000e0cd17b9ae2d5f204690a80a9 X-Barracuda-Connect: wf-out-1314.google.com[209.85.200.170] X-Barracuda-Start-Time: 1241393741 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2442 1.0000 -0.6033 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=HTML_MESSAGE, SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.24834 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --000e0cd17b9ae2d5f204690a80a9 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Get rid of the symlinked files by creating a local library for the commonality? ;-)Probably easier said than done - I haven't looked at the code in a while - but I I think the traditional library model is better than a heap of symlinks :) (I realise you just want a .gitignore file but .... ;-) --Tim On Wed, Apr 29, 2009 at 11:50 PM, Christoph Hellwig wrote: > This one is pretty ugly due to all the symlinked files, any better > suggestions? > > > Signed-off-by: Christoph Hellwig > > Index: xfsdump-dev/.gitignore > =================================================================== > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > +++ xfsdump-dev/.gitignore 2009-04-29 15:48:26.996484383 +0200 > @@ -0,0 +1,134 @@ > +# object files > +*.o > + > +# build system > +.census > +Logs/ > +include/config.h > +include/builddefs > +install-sh > + > +# magic diretory symlinks > +#include/disk > +#include/xfs > + > +# Makepgs > +build/src-manifest > +build/xfsdump-*.tar.gz > +doc/CHANGES.gz > +xfsdump-* > + > +# autoconf generated files > +aclocal.m4 > +autom4te.cache/ > +config.guess > +config.log > +config.status > +config.sub > +configure > + > +# libtool > +libtool > +ltmain.sh > +*.lo > +*.la > +.libs > + > +# gettext > +po/xfsdump.pot > +po/*.mo > + > +# quilt stuff > +.pc/ > +patches/ > + > +# binaries > +dump/xfsdump > +invutil/xfsinvutil > +restore/xfsrestore > + > +# @%#% symlinked sourced files > +dump/arch_xlate.[ch] > +dump/cldmgr.[ch] > +dump/content.h > +dump/content_common.[ch] > +dump/content_inode.h > +dump/dlog.[ch] > +dump/drive.[ch] > +dump/drive_minrmt.c > +dump/drive_scsitape.c > +dump/drive_simple.c > +dump/exit.h > +dump/fs.[ch] > +dump/getdents.[ch] > +dump/global.[ch] > +dump/hsmapi.[ch] > +dump/inv_api.c > +dump/inv_core.c > +dump/inv_files.c > +dump/inv_fstab.c > +dump/inv_idx.c > +dump/inv_mgr.c > +dump/inv_priv.h > +dump/inv_stobj.c > +dump/inventory.h > +dump/lock.[ch] > +dump/main.c > +dump/media.h > +dump/mlog.[ch] > +dump/openutil.[ch] > +dump/path.[ch] > +dump/qlock.[ch] > +dump/rec_hdr.h > +dump/ring.[ch] > +dump/sproc.[ch] > +dump/stream.[ch] > +dump/ts_mtio.h > +dump/types.h > +dump/util.[ch] > + > +invutil/global.h > +invutil/inv_files.c > +invutil/inv_priv.h > +invutil/inventory.h > +invutil/mlog.h > +invutil/types.h > +invutil/util.h > + > +restore/arch_xlate.[ch] > +restore/cldmgr.[ch] > +restore/content.h > +restore/content_inode.h > +restore/dlog.[ch] > +restore/drive.[ch] > +restore/drive_minrmt.c > +restore/drive_scsitape.c > +restore/drive_simple.c > +restore/exit.h > +restore/fs.[ch] > +restore/getdents.[ch] > +restore/global.[ch] > +restore/hsmapi.[ch] > +restore/inv_api.c > +restore/inv_core.c > +restore/inv_files.c > +restore/inv_fstab.c > +restore/inv_idx.c > +restore/inv_mgr.c > +restore/inv_priv.h > +restore/inv_stobj.c > +restore/inventory.h > +restore/lock.[ch] > +restore/main.c > +restore/media.h > +restore/mlog.[ch] > +restore/openutil.[ch] > +restore/path.[ch] > +restore/qlock.[ch] > +restore/rec_hdr.h > +restore/ring.[ch] > +restore/sproc.[ch] > +restore/stream.[ch] > +restore/ts_mtio.h > +restore/types.h > +restore/util.[ch] > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > --000e0cd17b9ae2d5f204690a80a9 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Get rid of the symlinked files by creating a local library for the commonal= ity? ;-)
Probably easier said than done - I haven't looked at the c= ode in a while - but I
I think the traditional library model is b= etter than a heap of symlinks :)
(I realise you just want a .gitignore file but .... ;-)

--Tim

On Wed, Apr 29, 2009 at 11= :50 PM, Christoph Hellwig <hch@infradead.org> wrote:
This one is pretty ugly due to all the syml= inked files, any better
suggestions?


Signed-off-by: Christoph Hellwig <hch@lst.= de>

Index: xfsdump-dev/.gitignore
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- /dev/null =A0 1970-01-01 00:00:00.000000000 +0000
+++ xfsdump-dev/.gitignore =A0 =A0 =A02009-04-29 15:48:26.996484383 +0200 @@ -0,0 +1,134 @@
+# object files
+*.o
+
+# build system
+.census
+Logs/
+include/config.h
+include/builddefs
+install-sh
+
+# magic diretory symlinks
+#include/disk
+#include/xfs
+
+# Makepgs
+build/src-manifest
+build/xfsdump-*.tar.gz
+doc/CHANGES.gz
+xfsdump-*
+
+# autoconf generated files
+aclocal.m4
+autom4te.cache/
+config.guess
+config.log
+config.status
+config.sub
+configure
+
+# libtool
+libtool
+ltmain.sh
+*.lo
+*.la
+.libs
+
+# gettext
+po/xfsdump.pot
+po/*.mo
+
+# quilt stuff
+.pc/
+patches/
+
+# binaries
+dump/xfsdump
+invutil/xfsinvutil
+restore/xfsrestore
+
+# @%#% symlinked sourced files
+dump/arch_xlate.[ch]
+dump/cldmgr.[ch]
+dump/content.h
+dump/content_common.[ch]
+dump/content_inode.h
+dump/dlog.[ch]
+dump/drive.[ch]
+dump/drive_minrmt.c
+dump/drive_scsitape.c
+dump/drive_simple.c
+dump/exit.h
+dump/fs.[ch]
+dump/getdents.[ch]
+dump/global.[ch]
+dump/hsmapi.[ch]
+dump/inv_api.c
+dump/inv_core.c
+dump/inv_files.c
+dump/inv_fstab.c
+dump/inv_idx.c
+dump/inv_mgr.c
+dump/inv_priv.h
+dump/inv_stobj.c
+dump/inventory.h
+dump/lock.[ch]
+dump/main.c
+dump/media.h
+dump/mlog.[ch]
+dump/openutil.[ch]
+dump/path.[ch]
+dump/qlock.[ch]
+dump/rec_hdr.h
+dump/ring.[ch]
+dump/sproc.[ch]
+dump/stream.[ch]
+dump/ts_mtio.h
+dump/types.h
+dump/util.[ch]
+
+invutil/global.h
+invutil/inv_files.c
+invutil/inv_priv.h
+invutil/inventory.h
+invutil/mlog.h
+invutil/types.h
+invutil/util.h
+
+restore/arch_xlate.[ch]
+restore/cldmgr.[ch]
+restore/content.h
+restore/content_inode.h
+restore/dlog.[ch]
+restore/drive.[ch]
+restore/drive_minrmt.c
+restore/drive_scsitape.c
+restore/drive_simple.c
+restore/exit.h
+restore/fs.[ch]
+restore/getdents.[ch]
+restore/global.[ch]
+restore/hsmapi.[ch]
+restore/inv_api.c
+restore/inv_core.c
+restore/inv_files.c
+restore/inv_fstab.c
+restore/inv_idx.c
+restore/inv_mgr.c
+restore/inv_priv.h
+restore/inv_stobj.c
+restore/inventory.h
+restore/lock.[ch]
+restore/main.c
+restore/media.h
+restore/mlog.[ch]
+restore/openutil.[ch]
+restore/path.[ch]
+restore/qlock.[ch]
+restore/rec_hdr.h
+restore/ring.[ch]
+restore/sproc.[ch]
+restore/stream.[ch]
+restore/ts_mtio.h
+restore/types.h
+restore/util.[ch]

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http:= //oss.sgi.com/mailman/listinfo/xfs

--000e0cd17b9ae2d5f204690a80a9-- From BATV+74aee4e3593e4a553016+2080+infradead.org+hch@bombadil.srs.infradead.org Mon May 4 02:40:24 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00, SUBJECT_FUZZY_TION autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n447eLoY160752 for ; Mon, 4 May 2009 02:40:23 -0500 X-ASG-Debug-ID: 1241423052-152303860000-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 1F559146D8EE for ; Mon, 4 May 2009 00:44:13 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id txuXFIwGgpL9lQMu for ; Mon, 04 May 2009 00:44:13 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M0smk-0008GM-3A; Mon, 04 May 2009 07:40:22 +0000 Date: Mon, 4 May 2009 03:40:22 -0400 From: Christoph Hellwig To: Timothy Shimmin Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsdump: add .gitignore Subject: Re: [PATCH] xfsdump: add .gitignore Message-ID: <20090504074021.GA29449@infradead.org> References: <20090429135050.GC30808@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: 1241423054 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, May 04, 2009 at 09:35:39AM +1000, Timothy Shimmin wrote: > Get rid of the symlinked files by creating a local library for the > commonality? ;-)Probably easier said than done - I haven't looked at the > code in a while - but I > I think the traditional library model is better than a heap of symlinks :) It probably is. I'll put it on my todo list.. From wkendall@sgi.com Mon May 4 09:54:24 2009 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, SUBJECT_FUZZY_TION 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n44EsOXH179271 for ; Mon, 4 May 2009 09:54:24 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id E73A1AC00E for ; Mon, 4 May 2009 07:54:22 -0700 (PDT) Received: from [128.162.233.117] (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 8B648700016A; Mon, 4 May 2009 09:54:19 -0500 (CDT) Message-ID: <49FF019B.5050207@sgi.com> Date: Mon, 04 May 2009 09:54:19 -0500 From: Bill Kendall User-Agent: Thunderbird 2.0.0.21 (X11/20090409) MIME-Version: 1.0 To: Christoph Hellwig Cc: Timothy Shimmin , xfs@oss.sgi.com Subject: Re: [PATCH] xfsdump: add .gitignore References: <20090429135050.GC30808@infradead.org> <20090504074021.GA29449@infradead.org> In-Reply-To: <20090504074021.GA29449@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Mon, May 04, 2009 at 09:35:39AM +1000, Timothy Shimmin wrote: >> Get rid of the symlinked files by creating a local library for the >> commonality? ;-)Probably easier said than done - I haven't looked at the >> code in a while - but I >> I think the traditional library model is better than a heap of symlinks :) > > It probably is. I'll put it on my todo list.. Not sure how well if fits the library model, unfortunately. The symlinked files need to be compiled for dump and then recompiled for restore as there's a bunch of #ifdef DUMP and #ifdef RESTORE sections. I guess two libraries could be created, if separate build dirs were used under common. Bill From sandeen@sandeen.net Mon May 4 20:51:11 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_47 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n451pBdu236381 for ; Mon, 4 May 2009 20:51:11 -0500 X-ASG-Debug-ID: 1241488506-42b5009f0000-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 37C35147128E for ; Mon, 4 May 2009 18:55:06 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id NC81LfIDsDCuNjcF for ; Mon, 04 May 2009 18:55:06 -0700 (PDT) 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 05946AA60F5 for ; Mon, 4 May 2009 20:51:11 -0500 (CDT) Message-ID: <49FF9B8E.7040607@sandeen.net> Date: Mon, 04 May 2009 20:51:10 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: migration to selinux + xfs_fsr oddity.... Subject: migration to selinux + xfs_fsr oddity.... 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: 1241488508 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.24936 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This came up in RH Bugzilla #498860, "xfs_fsr fails to complete" The reporter had an existing xfs filesystem from another Linux OS, and was using it under Fedora now. He had some files for which xfs_fsr bails out with EINVAL: XFS_IOC_SWAPEXT failed: fragfile: Invalid argument It's failing this check in xfs_swap_extents(): /* * If the target has extended attributes, the tmp file * must also in order to ensure the correct data fork * format. */ if ( XFS_IFORK_Q(ip) != XFS_IFORK_Q(tip) ) { error = XFS_ERROR(EINVAL); goto error0; } because the original filesystem had no selinux xattrs, but the new/temp file created during xfs_fsr got the selinux xattr, so failed this test. It can be demonstrated like this on a machine w/ selinux: # mkfs.xfs -dfile,name=fsfile,size=32m # mkdir test # mount -o loop,context="unconfined_u:object_r:user_tmp_t:s0" fsfile test # for I in `seq 10 -1 0`; do dd if=/dev/zero of=test/fragfile bs=4k count=1 seek=$I conv=notrunc oflag=sync; done # umount test # mount -o loop fsfile test # xfs_fsr test/fragfile XFS_IOC_SWAPEXT failed: fragfile: Invalid argument I'm not sure if this is the sort of thing to maybe just caveat & document, or try to work around ... somehow? Maybe detect this case a bit better and print something more helpful about what has gone wrong? (As an aside ... looking at the above test and others related, and thinking about a few random reports that xfs_fsr corrupted a file, I can't help but think that maybe we are winding up with incompatible formats for the original and donor inodes in some cases...) -Eric From a.beregalov@gmail.com Tue May 5 03:54:05 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n458s5oo005986 for ; Tue, 5 May 2009 03:54:05 -0500 X-ASG-Debug-ID: 1241513647-160a03170000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f226.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EE8881D0D108 for ; Tue, 5 May 2009 01:54:07 -0700 (PDT) Received: from mail-bw0-f226.google.com (mail-bw0-f226.google.com [209.85.218.226]) by cuda.sgi.com with ESMTP id fD70oNSGCnRWqBTf for ; Tue, 05 May 2009 01:54:07 -0700 (PDT) Received: by bwz26 with SMTP id 26so4367703bwz.20 for ; Tue, 05 May 2009 01:54:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=R3YB81S4KZpg9t/5dEfbm1HOS0DXbRwpz0r9yM6DiTY=; b=FRLbEMHo37Qom27O5VxexM9I1fiUHpoo+s59U4/iB0QRCma6OPp85H7YryK58qBTDd fFRpHVvkKqAq7Fjf76sqQBTrAbPhAFb9Vo5Dr7TbLAsBDrOLSTqB0e+/b8Iy9ULWdl8l uXQUSw4YY0yi+WJ/Qq8irCxXM10+3ou9eJEMQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=RnzGCRC5S48GfMtd7U/aRTdO7UjtIMiRDTZLnQUUlhypLYxh2mTbmPJgzyAkdWC/pm c6BsT1J0IjeNj7uv3Y8HylAyuQew6iwL16LGeJW+//DDWW2E79sctLnEVyXKwRf+4U/D Wm6cfJivVgYXmlfWd1mxZRc+asbskGpEYynPw= MIME-Version: 1.0 Received: by 10.204.115.67 with SMTP id h3mr6647500bkq.173.1241513645657; Tue, 05 May 2009 01:54:05 -0700 (PDT) In-Reply-To: References: <20090502101405.GA6145@fancy-poultry.org> <49FC9762.6010109@sandeen.net> <49FD2488.70503@sandeen.net> <49FDAA8E.80205@sandeen.net> Date: Tue, 5 May 2009 12:54:05 +0400 Message-ID: X-ASG-Orig-Subj: Re: 2.6.30-rc4: xfs_fsr hangs Subject: Re: 2.6.30-rc4: xfs_fsr hangs From: Alexander Beregalov To: Eric Sandeen Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-bw0-f226.google.com[209.85.218.226] X-Barracuda-Start-Time: 1241513647 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.24964 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 2009/5/4 Alexander Beregalov : > 2009/5/3 Eric Sandeen : >> Alexander Beregalov wrote: >>> 2009/5/3 Eric Sandeen : >> ... >> >>>> Does this happen if you try to defrag a single file? =C2=A0i.e. someth= ing like: >>> Yes, it does. >> >> Oh, interesting. =C2=A0I didn't really expect that. =C2=A0The testcase I= provided >> worked for me. =C2=A0Maybe you can provide your kernel .config and I'll = try >> on a 32-bit box (I only tested 64-bit so far). > Attached. Cannot reproduce it on x86_64 as well. From Sagar_Borikar@pmc-sierra.com Tue May 5 04:54:38 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n459sb6M011019 for ; Tue, 5 May 2009 04:54:37 -0500 X-ASG-Debug-ID: 1241517515-16b1029c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bby1mta03.pmc-sierra.bc.ca (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 469B614720FC for ; Tue, 5 May 2009 02:58:35 -0700 (PDT) Received: from bby1mta03.pmc-sierra.bc.ca (bby1mta03.pmc-sierra.com [216.241.235.118]) by cuda.sgi.com with ESMTP id xQPA77F3DKMrlZsL for ; Tue, 05 May 2009 02:58:35 -0700 (PDT) Received: from bby1mta03.pmc-sierra.bc.ca (localhost.pmc-sierra.bc.ca [127.0.0.1]) by localhost (Postfix) with SMTP id 9B5891070088 for ; Tue, 5 May 2009 02:54:38 -0700 (PDT) Received: from bby1exg02.pmc_nt.nt.pmc-sierra.bc.ca (BBY1EXG02.pmc-sierra.bc.ca [216.241.231.167]) by bby1mta03.pmc-sierra.bc.ca (Postfix) with SMTP id 91A6B107006A for ; Tue, 5 May 2009 02:54:38 -0700 (PDT) Received: from BBY1EXM10.pmc_nt.nt.pmc-sierra.bc.ca ([216.241.231.156]) by bby1exg02.pmc_nt.nt.pmc-sierra.bc.ca with Microsoft SMTPSVC(6.0.3790.3959); Tue, 5 May 2009 02:55:06 -0700 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-ASG-Orig-Subj: XFS portion that can be offloaded to hardware Subject: XFS portion that can be offloaded to hardware Date: Tue, 5 May 2009 02:54:36 -0700 Message-ID: <340C71CD25A7EB49BFA81AE8C8392667061588C6@BBY1EXM10.pmc_nt.nt.pmc-sierra.bc.ca> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: XFS portion that can be offloaded to hardware Thread-Index: AcnNZ3+U9+hEY1M4QLmG1a/kmO6OjA== From: "Sagar Borikar" To: X-OriginalArrivalTime: 05 May 2009 09:55:06.0163 (UTC) FILETIME=[91685830:01C9CD67] X-Barracuda-Connect: bby1mta03.pmc-sierra.com[216.241.235.118] X-Barracuda-Start-Time: 1241517516 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.24967 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi All, We are currently performing feasibility analysis of XFS in a dense video = traffic over IP and PCI. We have chosen XFS to manage the exorbitant = data coming from network and PCI(encoders/decoders) to the system. There = is a requirement to support 32 live as well recording and playback of = video.=20 Just wanted to understand from XFS architecture point of view, whether = we can offload any CPU / memory consuming cumbersome activity of XFS be = offloaded in the hardware to improve the performance and responsiveness = of overall system. If yes, can it be made generic through some interface = layer which can be generic interface but implementation would be file = system specific.=20 Has anyone tried exploring this path before to have custom hardware for = improving XFS performance? All inputs / suggestions are welcome. Thanks Sagar =A0 =A0 From felixb@sgi.com Tue May 5 12:36:52 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=unavailable version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n45HaqJr039463 for ; Tue, 5 May 2009 12:36:52 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id BF5948F8078 for ; Tue, 5 May 2009 10:36:52 -0700 (PDT) Received: from eagdhcp-232-196.americas.sgi.com (eagdhcp-232-196.americas.sgi.com [128.162.232.196]) by estes.americas.sgi.com (Postfix) with ESMTP id B12237000103 for ; Tue, 5 May 2009 12:36:52 -0500 (CDT) Message-Id: From: Felix Blyakher To: xfs mailing list Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v926) Subject: xfsdump 3.0.1 source tarball released Date: Tue, 5 May 2009 12:36:52 -0500 X-Mailer: Apple Mail (2.926) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean ftp://oss.sgi.com/projects/xfs/cmd_tars/xfsdump-3.0.1.tar.gz This version contains important bug fixes to xfsdump 3.0.0: xfsdump-3.0.1 (5 May 2009) - Update the Makepkgs script to generate proper source tarballs. - Small specfile improvements, thanks to Jan Engelhardt. - Fix parallel builds, thanks to Mike Frysinger. - Various autoconf/libtool fixes, thanks to Andreas Gruenbacher. From felixb@sgi.com Tue May 5 12:36:49 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n45HanXD039450 for ; Tue, 5 May 2009 12:36:49 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id 78756AC010 for ; Tue, 5 May 2009 10:36:49 -0700 (PDT) Received: from eagdhcp-232-196.americas.sgi.com (eagdhcp-232-196.americas.sgi.com [128.162.232.196]) by estes.americas.sgi.com (Postfix) with ESMTP id 023877000103 for ; Tue, 5 May 2009 12:36:49 -0500 (CDT) Message-Id: From: Felix Blyakher To: xfs mailing list Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v926) Subject: xfsprogs 3.0.1 source tarball released Date: Tue, 5 May 2009 12:36:48 -0500 X-Mailer: Apple Mail (2.926) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean ftp://oss.sgi.com/projects/xfs/cmd_tars/xfsprogs-3.0.1.tar.gz This version contains important bug fixes and improvements to xfsprogs 3.0.0: xfsprogs-3.0.1 (4 May 2009) - Update the Makepkgs script to generate proper source tarballs. - New project(5) and projid(5) man pages. - Fix extent array reallocation in the xfs_io bmap command, thanks to Tomasz Majkowski. - Small specfile improvements, thanks to Jan Engelhardt. - Allow xfs_freeze to freeze non-XFS filesystems. - Fix the xfs_db bmbta command. - Fix parallel builds, thanks to Mike Frysinger. - Various autoconf/libtool fixes, thanks to Andreas Gruenbacher. From felixb@sgi.com Tue May 5 12:36:55 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n45HatWY039472 for ; Tue, 5 May 2009 12:36:55 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id E79DB8F8078 for ; Tue, 5 May 2009 10:36:58 -0700 (PDT) Received: from eagdhcp-232-196.americas.sgi.com (eagdhcp-232-196.americas.sgi.com [128.162.232.196]) by estes.americas.sgi.com (Postfix) with ESMTP id D98887000103 for ; Tue, 5 May 2009 12:36:58 -0500 (CDT) Message-Id: <98FF66CA-9981-4F31-B645-4946EE9645D8@sgi.com> From: Felix Blyakher To: xfs mailing list Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v926) Subject: dmapi 2.2.10 source tarball released Date: Tue, 5 May 2009 12:36:58 -0500 X-Mailer: Apple Mail (2.926) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean ftp://oss.sgi.com/projects/xfs/cmd_tars/dmapi-2.2.10.tar.gz This version contains changes since dmapi 2.2.9: dmapi-2.2.10 (5 May 2009) - Update the Makepkgs script to generate proper source tarballs. - Small specfile improvements, thanks to Jan Engelhardt. - Various autoconf/libtool fixes, thanks to Andreas Gruenbacher. From sandeen@sandeen.net Tue May 5 15:35:20 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n45KZJ3n052303 for ; Tue, 5 May 2009 15:35:20 -0500 X-ASG-Debug-ID: 1241555721-06ca02210000-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 9070F26406D; Tue, 5 May 2009 13:35:21 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id NbFIZ2i20xdj0mCf; Tue, 05 May 2009 13:35:21 -0700 (PDT) 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 n45KZKUe011882; Tue, 5 May 2009 16:35:21 -0400 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 n45KZKwp022702; Tue, 5 May 2009 16:35:20 -0400 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 n45KZHJH018126; Tue, 5 May 2009 16:35:17 -0400 Message-ID: <4A00A305.2010201@sandeen.net> Date: Tue, 05 May 2009 15:35:17 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Felix Blyakher CC: xfs mailing list X-ASG-Orig-Subj: Re: xfsprogs 3.0.1 source tarball released Subject: Re: xfsprogs 3.0.1 source tarball released 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: 1241555722 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25007 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Felix Blyakher wrote: > ftp://oss.sgi.com/projects/xfs/cmd_tars/xfsprogs-3.0.1.tar.gz > > This version contains important bug fixes and improvements > to xfsprogs 3.0.0: Thanks Felix! RPMs are in Fedora Rawhide now for anyone who cares about that sort of thing. :) -Eric From nscott@aconex.com Tue May 5 21:27:48 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n462RlRC081314 for ; Tue, 5 May 2009 21:27:47 -0500 X-ASG-Debug-ID: 1241576845-135e007a0000-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 74E842653BA for ; Tue, 5 May 2009 19:27:26 -0700 (PDT) Received: from postoffice2.aconex.com (mail.aconex.com [203.89.202.182]) by cuda.sgi.com with ESMTP id dhaRzFjnlvm74qNc for ; Tue, 05 May 2009 19:27:26 -0700 (PDT) Received: from postoffice.aconex.com (localhost [127.0.0.1]) by postoffice2.aconex.com (Spam Firewall) with ESMTP id DAC51524592 for ; Wed, 6 May 2009 12:27:17 +1000 (EST) Received: from postoffice.aconex.com (postoffice.yarra.acx [192.168.102.1]) by postoffice2.aconex.com with ESMTP id 7AARmFNmNSRhdDc6 for ; Wed, 06 May 2009 12:27:17 +1000 (EST) Received: from gatekeeper.aconex.com (gatekeeper.yarra.acx [192.168.102.10]) by postoffice.aconex.com (Postfix) with ESMTP id 1B7A52C042 for ; Wed, 6 May 2009 12:25:33 +1000 (EST) Received: from localhost (localhost.localdomain [127.0.0.1]) by gatekeeper.aconex.com (Postfix) with ESMTP id D974FC7BD2 for ; Wed, 6 May 2009 12:31:13 +1000 (EST) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: amavisd-new at gatekeeper.yarra.acx Received: from gatekeeper.aconex.com ([127.0.0.1]) by localhost (gatekeeper.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id UdtaG8z2I2lJ for ; Wed, 6 May 2009 12:31:09 +1000 (EST) Received: from mail-au.aconex.com (mail-au.aconex.com [192.168.102.12]) by gatekeeper.aconex.com (Postfix) with ESMTP id 23A4CC7A0A for ; Wed, 6 May 2009 12:31:09 +1000 (EST) Date: Wed, 6 May 2009 12:27:12 +1000 (EST) From: Nathan Scott To: xfs@oss.sgi.com Message-ID: <1955797473.4518331241576832973.JavaMail.root@mail-au.aconex.com> X-ASG-Orig-Subj: [PATCH] xfsprogs man page errors Subject: [PATCH] xfsprogs man page errors MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [203.89.192.141] X-Mailer: Zimbra 5.0.13_GA_2791.RHEL5_64 (ZimbraWebClient - [unknown] (Linux)/5.0.13_GA_2791.RHEL5_64) X-Barracuda-Connect: mail.aconex.com[203.89.202.182] X-Barracuda-Start-Time: 1241576847 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25029 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Status: Clean Fixes up some errors reported by lintian... can someone ACK these, & I'll commit 'em along with some Debian packaging updates needed for the revamped build. thanks. -- Nathan diff --git a/man/man8/xfs_estimate.8 b/man/man8/xfs_estimate.8 index 70a2ac6..bb458ec 100644 --- a/man/man8/xfs_estimate.8 +++ b/man/man8/xfs_estimate.8 @@ -101,4 +101,3 @@ directory bsize blocks megabytes logsize % \f4xfs_estimate /var/tmp\f1\f7 /var/tmp will take about 14.0 megabytes .fi -.Ee diff --git a/man/man8/xfs_quota.8 b/man/man8/xfs_quota.8 index 08c354a..f3b54cc 100644 --- a/man/man8/xfs_quota.8 +++ b/man/man8/xfs_quota.8 @@ -619,7 +619,7 @@ of the tree, or if the inode flag is not set. .PP Option .B \-d -can be used to limit recursion level (-1 is infinite, 0 is top level only, +can be used to limit recursion level (\-1 is infinite, 0 is top level only, 1 is first level ... ). Option .B \-p From sandeen@sandeen.net Tue May 5 21:58:49 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n462wn9j083665 for ; Tue, 5 May 2009 21:58:49 -0500 X-ASG-Debug-ID: 1241578731-130f01910000-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 C9F5F265637 for ; Tue, 5 May 2009 19:58:52 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 3SGHU4FkYPzkAWui for ; Tue, 05 May 2009 19:58:52 -0700 (PDT) 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 CA9F9A9B0B2; Tue, 5 May 2009 21:58:50 -0500 (CDT) Message-ID: <4A00FCEA.1000301@sandeen.net> Date: Tue, 05 May 2009 21:58:50 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Nathan Scott CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsprogs man page errors Subject: Re: [PATCH] xfsprogs man page errors References: <1955797473.4518331241576832973.JavaMail.root@mail-au.aconex.com> In-Reply-To: <1955797473.4518331241576832973.JavaMail.root@mail-au.aconex.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: 1241578732 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25031 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Nathan Scott wrote: > Fixes up some errors reported by lintian... can someone ACK these, > & I'll commit 'em along with some Debian packaging updates needed > for the revamped build. > > thanks. > dunno what .Ee is ... but I'll take lintian's word for it. ACK -Eric From BATV+6a016050d36d73cfb2e8+2082+infradead.org+hch@bombadil.srs.infradead.org Wed May 6 04:33:39 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n469XYZg105361 for ; Wed, 6 May 2009 04:33:38 -0500 X-ASG-Debug-ID: 1241602417-543d006b0000-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 2325ED15E4F for ; Wed, 6 May 2009 02:33:37 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id DrkcVbr1Fo1UeUXl for ; Wed, 06 May 2009 02:33:37 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M1dVQ-0006ws-Ga for xfs@oss.sgi.com; Wed, 06 May 2009 09:33:36 +0000 Date: Wed, 6 May 2009 05:33:36 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/5] fix sync (test 182, grub) Subject: Re: [PATCH 0/5] fix sync (test 182, grub) Message-ID: <20090506093336.GA26680@infradead.org> References: <20090426140305.113371000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090426140305.113371000@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: 1241602418 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Can I motivate anyone for some reviews? On Sun, Apr 26, 2009 at 10:03:05AM -0400, Christoph Hellwig wrote: > Revisit Dave's prototype to make sync equivalent to freeze, that is make > sure not only we have all data on disk, but also the metadata in the right > place and not requite a log recovery. That fixes test 182 and should also > help with the frequent grub complaints. > > The patches require Jan Kara's sync rewrite on -fsdevel and lkml > (http://lkml.indiana.edu/hypermail/linux/kernel/0904.2/03643.html) > so that sync actually calls into the filesystem in the correct order > for the various parts of sync activity. > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs ---end quoted text--- From advax@triumf.ca Wed May 6 14:32:30 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n46JWTIR140650 for ; Wed, 6 May 2009 14:32:30 -0500 X-ASG-Debug-ID: 1241638352-075301b30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from andrew.triumf.ca (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 989911D13FEE for ; Wed, 6 May 2009 12:32:32 -0700 (PDT) Received: from andrew.triumf.ca (andrew.triumf.ca [142.90.106.59]) by cuda.sgi.com with ESMTP id SS6XsVzIpk7tpRzB for ; Wed, 06 May 2009 12:32:32 -0700 (PDT) Received: from andrew.triumf.ca (localhost [127.0.0.1]) by andrew.triumf.ca (8.12.11.20060308/8.12.11) with ESMTP id n46JWPuM002712; Wed, 6 May 2009 12:32:26 -0700 Received: from localhost (andrew@localhost) by andrew.triumf.ca (8.12.11.20060308/8.12.11/Submit) with ESMTP id n46JWPW7002707; Wed, 6 May 2009 12:32:25 -0700 Date: Wed, 6 May 2009 12:32:25 -0700 (PDT) From: Andrew Daviel X-X-Sender: andrew@andrew.triumf.ca To: xfs@oss.sgi.com, linux-iscsi-users@lists.sourceforge.net X-ASG-Orig-Subj: Problems with XFS on iSCSI in RHEL4 Subject: Problems with XFS on iSCSI in RHEL4 Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: andrew.triumf.ca[142.90.106.59] X-Barracuda-Start-Time: 1241638353 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25095 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean A while back (2004) there was some discussion about problems with XFS and iSCSI. I wondered whether the issues had been fixed in later kernels, or whether there is an underlying issue that will not go away. We have been using XFS for our mailstore both on local disks and on ATA Over Ethernet to a CORAID box with no problem. We want to replace the CORAID with a Sun Storage 7410 box, using iSCSI instead of AOE. When I create an ext3 volume on the Sun, things are OK. When I create an XFS volume, after doing mkdir, I get e.g. kernel: Bad page state at free_hot_cold_page (in process 'iscsi-rx', page c1069a20) kernel: Trying to fix it up, but a reboot is needed kernel: Bad page state at free_hot_cold_page (in process 'syslogd', page c1069a20) Scientific Linux SL release 4.6 kernel-smp-2.6.9-78.0.17.EL from kernel-2.6.9-78.0.17.EL.src.rpm includes scsi_transport_iscsi.ko,iscsi_sfnet.ko kernel-module-xfs-2.6.9-78.0.17.ELsmp-0.4-1 from xfs-0.4-1.src.rpm iscsi-initiator-utils-4.0.3.0-6 Also seen on: Scientific Linux SL release 4.5 kernel-smp-2.6.9-55.0.6.EL.i686 kernel-module-xfs-2.6.9-55.0.6.ELsmp-0.1-1.i686 SL is basically the same as CENTOS (compiled from RHEL GPL'd sources) -- Andrew Daviel, TRIUMF, Canada Tel. +1 (604) 222-7376 (Pacific Time) Network Security Manager From nate@houseofnate.net Wed May 6 21:46:20 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.1 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n472kJNK166383 for ; Wed, 6 May 2009 21:46:20 -0500 X-ASG-Debug-ID: 1241664381-36e401630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from millhouse.houseofnate.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 046191D15144 for ; Wed, 6 May 2009 19:46:22 -0700 (PDT) Received: from millhouse.houseofnate.net (dsl092-086-237.bos1.dsl.speakeasy.net [66.92.86.237]) by cuda.sgi.com with ESMTP id PWUSbJn5Rwemjq0m for ; Wed, 06 May 2009 19:46:22 -0700 (PDT) Received: from [66.92.86.237] (dsl092-086-237.bos1.dsl.speakeasy.net [::ffff:66.92.86.237]) (AUTH: LOGIN nturner, TLS: TLSv1/SSLv3,256bits,AES256-SHA) by millhouse.houseofnate.net with esmtp; Wed, 06 May 2009 22:46:20 -0400 id 000000000022545F.000000004A024B7C.00001792 Message-ID: <4A024B7C.4010409@houseofnate.net> Date: Wed, 06 May 2009 22:46:20 -0400 From: "Nathaniel W. Turner" User-Agent: Thunderbird 2.0.0.21 (X11/20090409) MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs_repair: open filesystem device exclusively Subject: Re: [PATCH] xfs_repair: open filesystem device exclusively References: <49B48B8E.3030602@houseofnate.net> <49B491EA.4090003@houseofnate.net> <20090316212332.GA8496@infradead.org> In-Reply-To: <20090316212332.GA8496@infradead.org> X-Enigmail-Version: 0.95.7 Content-Type: multipart/alternative; boundary="------------030107000307030706040705" X-Barracuda-Connect: dsl092-086-237.bos1.dsl.speakeasy.net[66.92.86.237] X-Barracuda-Start-Time: 1241664383 X-Barracuda-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_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25121 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 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format. --------------030107000307030706040705 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit ...just a friendly reminder to look at this again now that 3.0.1 is out. Christoph Hellwig wrote: > On Sun, Mar 08, 2009 at 11:50:02PM -0400, Nathaniel W. Turner wrote: > >> (Error messages could probably be improved to be more user-friendly in >> this new failure case, and it probably wouldn't hurt to add a BLKROGET >> ioctl to check for read-only block devices with read-write permissions, >> but this does the job for me.) >> >> Signed-off-by: Nathaniel W. Turner >> --- >> repair/init.c | 2 ++ >> 1 files changed, 2 insertions(+), 0 deletions(-) >> >> diff --git a/repair/init.c b/repair/init.c >> index 8e508c4..7e5052c 100644 >> --- a/repair/init.c >> +++ b/repair/init.c >> @@ -142,6 +142,8 @@ xfs_init(libxfs_init_t *args) >> args->isreadonly = (LIBXFS_ISREADONLY | LIBXFS_ISINACTIVE); >> else if (dangerously) >> args->isreadonly = (LIBXFS_ISINACTIVE | LIBXFS_DANGEROUSLY); >> + else >> + args->isreadonly = LIBXFS_EXCLUSIVELY; >> > > Given that we skip it for -d and -n this is fine with me. > > I think we might want to delay this change in the way xfs_repair > operates until after we get a 3.0.1 release out with all the build > system fixes (hopefully really soon) > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > -- Nathaniel W. Turner http://houseofnate.net/ --------------030107000307030706040705 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit ...just a friendly reminder to look at this again now that 3.0.1 is out.

Christoph Hellwig wrote:
On Sun, Mar 08, 2009 at 11:50:02PM -0400, Nathaniel W. Turner wrote:
  
(Error messages could probably be improved to be more user-friendly in
this new failure case, and it probably wouldn't hurt to add a BLKROGET
ioctl to check for read-only block devices with read-write permissions,
but this does the job for me.)

Signed-off-by: Nathaniel W. Turner <nate@houseofnate.net>
---
 repair/init.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/repair/init.c b/repair/init.c
index 8e508c4..7e5052c 100644
--- a/repair/init.c
+++ b/repair/init.c
@@ -142,6 +142,8 @@ xfs_init(libxfs_init_t *args)
         args->isreadonly = (LIBXFS_ISREADONLY | LIBXFS_ISINACTIVE);
     else if (dangerously)
         args->isreadonly = (LIBXFS_ISINACTIVE | LIBXFS_DANGEROUSLY);
+    else
+        args->isreadonly = LIBXFS_EXCLUSIVELY;
    

Given that we skip it for -d and -n this is fine with me.

I think we might want to delay this change in the way xfs_repair
operates until after we get a 3.0.1 release out with all the build
system fixes (hopefully really soon)

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
  

-- 
Nathaniel W. Turner
http://houseofnate.net/
--------------030107000307030706040705-- From sandeen@sandeen.net Wed May 6 21:55:58 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n472tvsB166897 for ; Wed, 6 May 2009 21:55:58 -0500 X-ASG-Debug-ID: 1241664960-36f501a20000-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 37A0F1D15884 for ; Wed, 6 May 2009 19:56:00 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id HD6rDRykr3J9jaVf for ; Wed, 06 May 2009 19:56:00 -0700 (PDT) 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 9C12BA9B0D6; Wed, 6 May 2009 21:55:59 -0500 (CDT) Message-ID: <4A024DBF.40209@sandeen.net> Date: Wed, 06 May 2009 21:55:59 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: "Nathaniel W. Turner" CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs_repair: open filesystem device exclusively Subject: Re: [PATCH] xfs_repair: open filesystem device exclusively References: <49B48B8E.3030602@houseofnate.net> <49B491EA.4090003@houseofnate.net> In-Reply-To: <49B491EA.4090003@houseofnate.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: 1241664961 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25123 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Nathaniel W. Turner wrote: > I forgot to mention that this is against xfsprogs 3.0.0. Also, the > indentation was a bit messed up on that last post, so here's the patch > again (all 2 lines of it): > > ---- > > I'm sure there is a better way to fix this, but without this patch, two > xfs_repair processes will happily operate on the same filesystem device > at the same time. It is also possible to mount a filesystem that is in > the process of being repaired. > > This seems like it's probably not ideal, so this patch just modifies > xfs_repair to open the filesystem device with O_EXCL unless it was > invoked in "no modify" or "dangerous" mode. ... > Signed-off-by: Nathaniel W. Turner Christoph already looked I guess, but I'll give this my thumbs-up too :) -Eric > --- > repair/init.c | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/repair/init.c b/repair/init.c > index 8e508c4..7e5052c 100644 > --- a/repair/init.c > +++ b/repair/init.c > @@ -142,6 +142,8 @@ xfs_init(libxfs_init_t *args) > args->isreadonly = (LIBXFS_ISREADONLY | LIBXFS_ISINACTIVE); > else if (dangerously) > args->isreadonly = (LIBXFS_ISINACTIVE | LIBXFS_DANGEROUSLY); > + else > + args->isreadonly = LIBXFS_EXCLUSIVELY; > > if (!libxfs_init(args)) > do_error(_("couldn't initialize XFS library\n")); > From tim@timsesow.com Thu May 7 16:46:33 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n47LkWXO228952 for ; Thu, 7 May 2009 16:46:33 -0500 X-ASG-Debug-ID: 1241733041-3edd01790000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mout.perfora.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8D7211480222 for ; Thu, 7 May 2009 14:50:42 -0700 (PDT) Received: from mout.perfora.net (mout.perfora.net [74.208.4.195]) by cuda.sgi.com with ESMTP id B2UuHf7cDamxp3fu for ; Thu, 07 May 2009 14:50:42 -0700 (PDT) Received: from [192.168.2.104] (71-211-232-6.hlrn.qwest.net [71.211.232.6]) by mrelay.perfora.net (node=mrus1) with ESMTP (Nemesis) id 0MKpCa-1M2BPw3RD3-000cv2; Thu, 07 May 2009 17:46:16 -0400 Message-ID: <4A0356A5.3040408@timsesow.com> Date: Thu, 07 May 2009 15:46:13 -0600 From: Tim Sesow User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Andrew Daviel CC: xfs@oss.sgi.com, linux-iscsi-users@lists.sourceforge.net X-ASG-Orig-Subj: Re: Problems with XFS on iSCSI in RHEL4 Subject: Re: Problems with XFS on iSCSI in RHEL4 References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V01U2FsdGVkX1+SQ9XfBWR0EX6kFAA6fxtmE8EXm9FzaduQ7EP 8ECedW6Pm+yrHOkrV52KduCNu4bSg6ih9FJDMgMS3EffEo2zfU HbmZ23RXD/KedyUOlklJQ== X-Barracuda-Connect: mout.perfora.net[74.208.4.195] X-Barracuda-Start-Time: 1241733045 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25193 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean For what it is worth: I run three systems, one 32-bit and two 64-bit, with 2.6.24-rc3 kernels on them, using iSCSI storage running under OpenFiler as storage for XFS volumes. The systems started out as CentOS 4.6 distributions. Two of the volumes are less than 1TByte in size (300GB and 800GB). The third volume under LVM and is 45TBytes in size (several multi-terabyte volumes merged into one LVM volume group). The smaller volumes have been running for several months, the large volume only for about a month now. I haven't encountered any problems creating or using those volumes with XFS. The 45TByte volume also uses DMAPI as a mount option. Andrew Daviel wrote: > > A while back (2004) there was some discussion about problems with XFS > and iSCSI. > > I wondered whether the issues had been fixed in later kernels, or > whether there is an underlying issue that will not go away. > > We have been using XFS for our mailstore both on local disks and on > ATA Over Ethernet to a CORAID box with no problem. > We want to replace the CORAID with a Sun Storage 7410 box, using iSCSI > instead of AOE. > > When I create an ext3 volume on the Sun, things are OK. > When I create an XFS volume, after doing mkdir, I get e.g. > kernel: Bad page state at free_hot_cold_page (in process 'iscsi-rx', > page c1069a20) > kernel: Trying to fix it up, but a reboot is needed > kernel: Bad page state at free_hot_cold_page (in process 'syslogd', > page c1069a20) > > Scientific Linux SL release 4.6 > kernel-smp-2.6.9-78.0.17.EL from kernel-2.6.9-78.0.17.EL.src.rpm > includes scsi_transport_iscsi.ko,iscsi_sfnet.ko > kernel-module-xfs-2.6.9-78.0.17.ELsmp-0.4-1 from xfs-0.4-1.src.rpm > iscsi-initiator-utils-4.0.3.0-6 > > Also seen on: > Scientific Linux SL release 4.5 > kernel-smp-2.6.9-55.0.6.EL.i686 > kernel-module-xfs-2.6.9-55.0.6.ELsmp-0.1-1.i686 > > SL is basically the same as CENTOS (compiled from RHEL GPL'd sources) > > From sandeen@sandeen.net Thu May 7 18:33:14 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_28, J_CHICKENPOX_47,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n47NXDk9235853 for ; Thu, 7 May 2009 18:33:13 -0500 X-ASG-Debug-ID: 1241739196-250500bd0000-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 9FEA01D1AD99 for ; Thu, 7 May 2009 16:33:16 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id RHrYaBz3mo1vs79j for ; Thu, 07 May 2009 16:33:16 -0700 (PDT) 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 5085FA9B0D5; Thu, 7 May 2009 18:33:16 -0500 (CDT) Message-ID: <4A036FBC.9020201@sandeen.net> Date: Thu, 07 May 2009 18:33:16 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Alexander Beregalov CC: Linux Kernel Mailing List , Kernel Testers List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.30-rc4: xfs_fsr hangs Subject: Re: 2.6.30-rc4: xfs_fsr hangs 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: 1241739197 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25199 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Alexander Beregalov wrote: > # xfs_db -r /dev/sdc1 > xfs_db> frag > actual 23805, ideal 22890, fragmentation factor 3.84% > # xfs_fsr -v /dev/sdc1 > /mnt/c start inode=0 > ino=158 > extents before:3 after:1 DONE ino=158 > > then it hangs Ok, yep with the testcase I proposed I see this on the fedora 2.6.30-rc4.git3 x86 kernel as well: # for I in `seq 10 -1 0`; do dd if=/dev/zero of=fragfile bs=4k count=1 seek=$I conv=notrunc oflag=sync done # xfs_fsr fragfile ===================================== [ BUG: bad unlock balance detected! ] ------------------------------------- xfs_fsr/1459 is trying to release lock (&(&ip->i_iolock)->mr_lock) at: [] xfs_iunlock+0x2c/0x92 [xfs] but there are no more locks to release! other info that might help us debug this: no locks held by xfs_fsr/1459. stack backtrace: Pid: 1459, comm: xfs_fsr Not tainted 2.6.30-0.78.rc4.git3.fc12.i586 #1 Call Trace: [] ? printk+0x22/0x3c [] print_unlock_inbalance_bug+0xb3/0xd1 [] ? xfs_iunlock+0x2c/0x92 [xfs] [] lock_release+0xd0/0x1a6 [] up_write+0x29/0x50 [] xfs_iunlock+0x2c/0x92 [xfs] [] xfs_swap_extents+0x427/0x4cc [xfs] [] xfs_swapext+0xda/0x11c [xfs] [] ? kobject_uevent_init+0x30/0x6d [] xfs_file_ioctl+0x4ac/0x67e [xfs] [] ? avc_has_perm_noaudit+0x3b1/0x3cc [] ? xfs_file_ioctl+0x0/0x67e [xfs] [] vfs_ioctl+0x29/0x91 [] do_vfs_ioctl+0x496/0x4e3 [] ? kobject_uevent_init+0x30/0x6d [] ? selinux_file_ioctl+0x4d/0x62 [] ? kobject_uevent_init+0x30/0x6d [] sys_ioctl+0x55/0x86 [] ? syscall_trace_enter+0xea/0x10f [] syscall_call+0x7/0xb [] ? kobject_uevent_init+0x30/0x6d there are 2 subsequent unlocks for the same inode: 1: xfs_iunlock: ip ca2304c0 ino 132 flags 0x5 Pid: 3648, comm: xfs_fsr Not tainted 2.6.30-0.78.rc4.git3.fc12.i586 #1 Call Trace: [] xfs_iunlock+0x38/0xb9 [xfs] [] xfs_iput+0x20/0x40 [xfs] [] xfs_inode_item_unlock+0x82/0x97 [xfs] [] xfs_trans_unlock_chunk+0x96/0xe1 [xfs] [] xfs_trans_unlock_items+0x4f/0xd4 [xfs] [] _xfs_trans_commit+0x275/0x307 [xfs] [] xfs_swap_extents+0x403/0x4cc [xfs] [] xfs_swapext+0xda/0x11c [xfs] [] xfs_file_ioctl+0x4ac/0x67e [xfs] [] vfs_ioctl+0x29/0x91 [] do_vfs_ioctl+0x496/0x4e3 [] sys_ioctl+0x55/0x86 [] syscall_call+0x7/0xb 2: xfs_iunlock: ip ca230980 ino 131 flags 0x5 Pid: 3648, comm: xfs_fsr Not tainted 2.6.30-0.78.rc4.git3.fc12.i586 #1 Call Trace: [] xfs_iunlock+0x38/0xb9 [xfs] [] xfs_swap_extents+0x427/0x4cc [xfs] [] xfs_swapext+0xda/0x11c [xfs] [] xfs_file_ioctl+0x4ac/0x67e [xfs] [] vfs_ioctl+0x29/0x91 [] do_vfs_ioctl+0x496/0x4e3 [] sys_ioctl+0x55/0x86 [] syscall_call+0x7/0xb Looking into it ... not sure offhand what caused this. -Eric From sandeen@sandeen.net Thu May 7 18:55:45 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n47NtjQ9237228 for ; Thu, 7 May 2009 18:55:45 -0500 X-ASG-Debug-ID: 1241740548-7c0801040000-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 7EBA226F79A for ; Thu, 7 May 2009 16:55:48 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id lZC36DLyQ9ex4nil for ; Thu, 07 May 2009 16:55:48 -0700 (PDT) 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 ECF9DA9BF22; Thu, 7 May 2009 18:55:47 -0500 (CDT) Message-ID: <4A037503.1070904@sandeen.net> Date: Thu, 07 May 2009 18:55:47 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Alexander Beregalov CC: Kernel Testers List , Linux Kernel Mailing List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.30-rc4: xfs_fsr hangs Subject: Re: 2.6.30-rc4: xfs_fsr hangs References: <4A036FBC.9020201@sandeen.net> In-Reply-To: <4A036FBC.9020201@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: 1241740549 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25201 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Eric Sandeen wrote: > there are 2 subsequent unlocks for the same inode: > > 1: > xfs_iunlock: ip ca2304c0 ino 132 flags 0x5 ... > 2: > xfs_iunlock: ip ca230980 ino 131 flags 0x5 Ugh no, those are 2 different inodes.... I can read, really. :) still, looking into it. -Eric From sandeen@sandeen.net Thu May 7 19:45:33 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n480jXXL239930 for ; Thu, 7 May 2009 19:45:33 -0500 X-ASG-Debug-ID: 1241743537-25f102140000-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 8A8351D1B3A7 for ; Thu, 7 May 2009 17:45:37 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id ArYROYi8XQj8cHZ1 for ; Thu, 07 May 2009 17:45:37 -0700 (PDT) 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 C5B24A9B0C9; Thu, 7 May 2009 19:45:36 -0500 (CDT) Message-ID: <4A0380B0.1050101@sandeen.net> Date: Thu, 07 May 2009 19:45:36 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com, Alexander Beregalov X-ASG-Orig-Subj: Re: [PATCH 03/17] xfs: cleanup handling in xfs_swap_extents Subject: Re: [PATCH 03/17] xfs: cleanup handling in xfs_swap_extents References: <20090126073136.384490000@bombadil.infradead.org> <20090126073200.459094000@bombadil.infradead.org> In-Reply-To: <20090126073200.459094000@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: 1241743537 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25203 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Use multiple lables for proper error unwinding and get rid of some now > superflous variables. > > > Signed-off-by: Josef 'Jeff' Sipek > Reviewed-by: Christoph Hellwig Problem in this patch, I think, getting hangs on x86 fsr... > Index: xfs/fs/xfs/xfs_dfrag.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_dfrag.c 2008-12-19 15:02:54.003908425 +0100 > +++ xfs/fs/xfs/xfs_dfrag.c 2008-12-22 15:59:55.013247371 +0100 > @@ -352,19 +344,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; old code said "unlocked" here thanks to the trans commit ... > - error0: > - if (locked) { > - xfs_iunlock(ip, lock_flags); > - xfs_iunlock(tip, lock_flags); > - } and so we wouldn't unlock again ... > - 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); But now we do it unconditionally, and ruh-roh. > +out: > + kmem_free(tempifp); > return error; > + > +out_trans_cancel: > + xfs_trans_cancel(tp, 0); > + goto out_unlock; > } Is this too ugly a fix? XFS: Fix double unlock of inodes in xfs_swap_extents() commit ef8f7fc549bf345d92f396f5aa7b152b4969cbf7 had an error where we would try to re-unlock the inodes after they had been committed in the transaction; this double unlock caused a ===================================== [ BUG: bad unlock balance detected! ] ------------------------------------- xfs_fsr/1459 is trying to release lock (&(&ip->i_iolock)->mr_lock) at: [] xfs_iunlock+0x2c/0x92 [xfs] but there are no more locks to release! Signed-off-by: Eric Sandeen --- Index: linux-2.6/fs/xfs/xfs_dfrag.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_dfrag.c +++ linux-2.6/fs/xfs/xfs_dfrag.c @@ -347,13 +347,15 @@ xfs_swap_extents( error = xfs_trans_commit(tp, XFS_TRANS_SWAPEXT); -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_unlock: + xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); + xfs_iunlock(tip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); + goto out; + out_trans_cancel: xfs_trans_cancel(tp, 0); goto out_unlock; From felixb@sgi.com Thu May 7 20:04:18 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4814HAX241211 for ; Thu, 7 May 2009 20:04:18 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id 47B17AC002 for ; Thu, 7 May 2009 18:04:19 -0700 (PDT) Received: from [IPv6???1] (sshgate.corp.sgi.com [198.149.20.12]) by estes.americas.sgi.com (Postfix) with ESMTP id 959DC7000103; Thu, 7 May 2009 20:04:18 -0500 (CDT) Cc: Alexander Beregalov , Kernel Testers List , Linux Kernel Mailing List , xfs@oss.sgi.com Message-Id: From: Felix Blyakher To: Eric Sandeen In-Reply-To: <4A037503.1070904@sandeen.net> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v930.3) Subject: Re: 2.6.30-rc4: xfs_fsr hangs Date: Thu, 7 May 2009 20:04:17 -0500 References: <4A036FBC.9020201@sandeen.net> <4A037503.1070904@sandeen.net> X-Mailer: Apple Mail (2.930.3) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On May 7, 2009, at 6:55 PM, Eric Sandeen wrote: > Eric Sandeen wrote: > >> there are 2 subsequent unlocks for the same inode: >> >> 1: >> xfs_iunlock: ip ca2304c0 ino 132 flags 0x5 > > ... > >> 2: >> xfs_iunlock: ip ca230980 ino 131 flags 0x5 > > > Ugh no, those are 2 different inodes.... I can read, really. :) > still, > looking into it. I've been chasing this as well, and I found the double xfs iolock unlock which is causing xfs_fsr deadlock itself. I have a fix tested. The patch is coming. Felix > > > -Eric > -- > 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 sandeen@sandeen.net Thu May 7 20:09:37 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4819bo1241533 for ; Thu, 7 May 2009 20:09:37 -0500 X-ASG-Debug-ID: 1241744981-7c5001fc0000-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 8CB6126F34F for ; Thu, 7 May 2009 18:09:41 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id zXd9gDCIdu2cCyvm for ; Thu, 07 May 2009 18:09:41 -0700 (PDT) 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 E852AA9B0CF; Thu, 7 May 2009 20:09:37 -0500 (CDT) Message-ID: <4A038651.5010202@sandeen.net> Date: Thu, 07 May 2009 20:09:37 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Felix Blyakher CC: Alexander Beregalov , Kernel Testers List , Linux Kernel Mailing List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.30-rc4: xfs_fsr hangs Subject: Re: 2.6.30-rc4: xfs_fsr hangs References: <4A036FBC.9020201@sandeen.net> <4A037503.1070904@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: 1241744981 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25205 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Felix Blyakher wrote: > I've been chasing this as well, and I found the double xfs iolock > unlock which is causing xfs_fsr deadlock itself. I have a fix tested. > The patch is coming. > > Felix > Oh :) I just sent this one to the list ... :) XFS: Fix double unlock of inodes in xfs_swap_extents() commit ef8f7fc549bf345d92f396f5aa7b152b4969cbf7 had an error where we would try to re-unlock the inodes after they had been committed in the transaction; this double unlock caused a ===================================== [ BUG: bad unlock balance detected! ] ------------------------------------- xfs_fsr/1459 is trying to release lock (&(&ip->i_iolock)->mr_lock) at: [] xfs_iunlock+0x2c/0x92 [xfs] but there are no more locks to release! Signed-off-by: Eric Sandeen --- Index: linux-2.6/fs/xfs/xfs_dfrag.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_dfrag.c +++ linux-2.6/fs/xfs/xfs_dfrag.c @@ -347,13 +347,15 @@ xfs_swap_extents( error = xfs_trans_commit(tp, XFS_TRANS_SWAPEXT); -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_unlock: + xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); + xfs_iunlock(tip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); + goto out; + out_trans_cancel: xfs_trans_cancel(tp, 0); goto out_unlock; From sandeen@sandeen.net Thu May 7 20:12:27 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n481CQXo241638 for ; Thu, 7 May 2009 20:12:27 -0500 X-ASG-Debug-ID: 1241745400-3715014c0000-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 9E26D1252069 for ; Thu, 7 May 2009 18:16:41 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id XsRivOdcusEmXqXJ for ; Thu, 07 May 2009 18:16:41 -0700 (PDT) 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 25D7BA9B0C4 for ; Thu, 7 May 2009 20:12:30 -0500 (CDT) Message-ID: <4A0386FD.7000108@sandeen.net> Date: Thu, 07 May 2009 20:12:29 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] xfstests 042: point xfs_fsr right at the fragmented file Subject: [PATCH] xfstests 042: point xfs_fsr right at the fragmented file 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: 1241745401 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25206 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Somehow 042 as it stands isn't actually defragging the fragmented file we created (see 042.full post-run) Probably need to look into that as well, but for now this should make the call to fsr actually _do_ something. This has let 2 fsr bugs slip through qa in the past few months. :( Signed-off-by: Eric Sandeen --- diff --git a/042 b/042 index 6628040..1ad81e4 100755 --- a/042 +++ b/042 @@ -114,7 +114,7 @@ _do "sum $SCRATCH_MNT/fragmented >$tmp.sum1" _do "Remove other files" "rm -rf $SCRATCH_MNT/{pad,hole*}" # defragment -_do "Run xfs_fsr on filesystem" "$XFS_FSR_PROG -v $SCRATCH_DEV" +_do "Run xfs_fsr on filesystem" "$XFS_FSR_PROG -v $SCRATCH_MNT/fragmented" _do "xfs_bmap -v $SCRATCH_MNT/fragmented" _do "Check 4k files" "src/fill2fs_check $tmp.manifest" From felixb@sgi.com Thu May 7 20:13:21 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n481DLSh241690 for ; Thu, 7 May 2009 20:13:21 -0500 Received: from attica.americas.sgi.com (attica.americas.sgi.com [128.162.236.44]) by relay2.corp.sgi.com (Postfix) with ESMTP id 16B883040FC; Thu, 7 May 2009 18:13:23 -0700 (PDT) Received: by attica.americas.sgi.com (Postfix, from userid 29043) id E149DA0BB90D; Thu, 7 May 2009 20:13:22 -0500 (CDT) From: Felix Blyakher To: xfs@oss.sgi.com Cc: linux-kernel@vger.kernel.org, a.beregalov@gmail.com, kernel-testers@vger.kernel.org, Felix Blyakher Subject: [PATCH] xfs: fix double unlock in xfs_swap_extents() Date: Thu, 7 May 2009 20:13:22 -0500 Message-Id: <1241745202-7452-1-git-send-email-felixb@sgi.com> X-Mailer: git-send-email 1.5.4.rc3 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Regreesion from commit ef8f7fc, which rearranged the code in xfs_swap_extents() leading to double unlock of xfs inode iolock. That resulted in xfs_fsr deadlocking itself on platforms, which don't handle double unlock of rw_semaphore nicely. It caused the count go negative, which represents the write holder, without really having one. ia64 is one of the platforms where deadlock was easily reproduced and the fix was tested. Signed-off-by: Felix Blyakher --- fs/xfs/xfs_dfrag.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c index e6d839b..7465f9e 100644 --- a/fs/xfs/xfs_dfrag.c +++ b/fs/xfs/xfs_dfrag.c @@ -347,13 +347,15 @@ xfs_swap_extents( error = xfs_trans_commit(tp, XFS_TRANS_SWAPEXT); -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_unlock: + xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); + xfs_iunlock(tip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); + goto out; + out_trans_cancel: xfs_trans_cancel(tp, 0); goto out_unlock; -- 1.5.4.rc3 From felixb@sgi.com Thu May 7 20:17:46 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n481Hkx8241862 for ; Thu, 7 May 2009 20:17:46 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id D5EF7AC002 for ; Thu, 7 May 2009 18:17:50 -0700 (PDT) Received: from [IPv6???1] (sshgate.corp.sgi.com [198.149.20.12]) by estes.americas.sgi.com (Postfix) with ESMTP id 575747000103; Thu, 7 May 2009 20:17:50 -0500 (CDT) Cc: Alexander Beregalov , Kernel Testers List , Linux Kernel Mailing List , xfs@oss.sgi.com Message-Id: From: Felix Blyakher To: Eric Sandeen In-Reply-To: <4A038651.5010202@sandeen.net> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v930.3) Subject: Re: 2.6.30-rc4: xfs_fsr hangs Date: Thu, 7 May 2009 20:17:49 -0500 References: <4A036FBC.9020201@sandeen.net> <4A037503.1070904@sandeen.net> <4A038651.5010202@sandeen.net> X-Mailer: Apple Mail (2.930.3) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On May 7, 2009, at 8:09 PM, Eric Sandeen wrote: > Felix Blyakher wrote: > >> I've been chasing this as well, and I found the double xfs iolock >> unlock which is causing xfs_fsr deadlock itself. I have a fix tested. >> The patch is coming. >> >> Felix >> > Oh :) I just sent this one to the list ... :) Oh :) And I did as well. And guess what, the fix is exactly the same. Great minds think alike :) Felix > > > XFS: Fix double unlock of inodes in xfs_swap_extents() > > commit ef8f7fc549bf345d92f396f5aa7b152b4969cbf7 had an error > where we would try to re-unlock the inodes after they had been > committed in the transaction; this double unlock caused a > > ===================================== > [ BUG: bad unlock balance detected! ] > ------------------------------------- > xfs_fsr/1459 is trying to release lock (&(&ip->i_iolock)->mr_lock) at: > [] xfs_iunlock+0x2c/0x92 [xfs] > but there are no more locks to release! > > Signed-off-by: Eric Sandeen > --- > > Index: linux-2.6/fs/xfs/xfs_dfrag.c > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_dfrag.c > +++ linux-2.6/fs/xfs/xfs_dfrag.c > @@ -347,13 +347,15 @@ xfs_swap_extents( > > error = xfs_trans_commit(tp, XFS_TRANS_SWAPEXT); > > -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_unlock: > + xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); > + xfs_iunlock(tip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); > + goto out; > + > out_trans_cancel: > xfs_trans_cancel(tp, 0); > goto out_unlock; > > > > > > -- > 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 sandeen@sandeen.net Thu May 7 21:57:07 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n482v6Yj247632 for ; Thu, 7 May 2009 21:57:07 -0500 X-ASG-Debug-ID: 1241751680-114900fc0000-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 0D70914810AD for ; Thu, 7 May 2009 20:01:20 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id WBgedN47IjEhnCJE for ; Thu, 07 May 2009 20:01:20 -0700 (PDT) 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 74F2AA9B0C7; Thu, 7 May 2009 21:57:09 -0500 (CDT) Message-ID: <4A039F85.8010506@sandeen.net> Date: Thu, 07 May 2009 21:57:09 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Felix Blyakher CC: xfs@oss.sgi.com, kernel-testers@vger.kernel.org, linux-kernel@vger.kernel.org, a.beregalov@gmail.com X-ASG-Orig-Subj: Re: [PATCH] xfs: fix double unlock in xfs_swap_extents() Subject: Re: [PATCH] xfs: fix double unlock in xfs_swap_extents() References: <1241745202-7452-1-git-send-email-felixb@sgi.com> In-Reply-To: <1241745202-7452-1-git-send-email-felixb@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: 1241751682 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25212 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Felix Blyakher wrote: > Regreesion from commit ef8f7fc, which rearranged the code in > xfs_swap_extents() leading to double unlock of xfs inode iolock. > That resulted in xfs_fsr deadlocking itself on platforms, which > don't handle double unlock of rw_semaphore nicely. It caused the > count go negative, which represents the write holder, without > really having one. ia64 is one of the platforms where deadlock > was easily reproduced and the fix was tested. > > Signed-off-by: Felix Blyakher Also-written-by: Eric Sandeen Independently-arrived-at-by: Eric Sandeen ;) But seriously ... Reviewed-by: Eric Sandeen > --- > fs/xfs/xfs_dfrag.c | 8 +++++--- > 1 files changed, 5 insertions(+), 3 deletions(-) > > diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c > index e6d839b..7465f9e 100644 > --- a/fs/xfs/xfs_dfrag.c > +++ b/fs/xfs/xfs_dfrag.c > @@ -347,13 +347,15 @@ xfs_swap_extents( > > error = xfs_trans_commit(tp, XFS_TRANS_SWAPEXT); > > -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_unlock: > + xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); > + xfs_iunlock(tip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); > + goto out; > + > out_trans_cancel: > xfs_trans_cancel(tp, 0); > goto out_unlock; From felixb@sgi.com Fri May 8 00:20:07 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n485K7A4259404 for ; Fri, 8 May 2009 00:20:07 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id DA0CB8F80E6 for ; Thu, 7 May 2009 22:20:08 -0700 (PDT) Received: from [IPv6???1] (sshgate.corp.sgi.com [198.149.20.12]) by estes.americas.sgi.com (Postfix) with ESMTP id 6D1E47000103; Fri, 8 May 2009 00:20:08 -0500 (CDT) Cc: xfs@oss.sgi.com, kernel-testers@vger.kernel.org, linux-kernel@vger.kernel.org, a.beregalov@gmail.com Message-Id: <9375AA94-2051-42CB-A7EB-9A32E3F94A24@sgi.com> From: Felix Blyakher To: Eric Sandeen In-Reply-To: <4A039F85.8010506@sandeen.net> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v930.3) Subject: Re: [PATCH] xfs: fix double unlock in xfs_swap_extents() Date: Fri, 8 May 2009 00:20:06 -0500 References: <1241745202-7452-1-git-send-email-felixb@sgi.com> <4A039F85.8010506@sandeen.net> X-Mailer: Apple Mail (2.930.3) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On May 7, 2009, at 9:57 PM, Eric Sandeen wrote: > Felix Blyakher wrote: >> Regreesion from commit ef8f7fc, which rearranged the code in >> xfs_swap_extents() leading to double unlock of xfs inode iolock. >> That resulted in xfs_fsr deadlocking itself on platforms, which >> don't handle double unlock of rw_semaphore nicely. It caused the >> count go negative, which represents the write holder, without >> really having one. ia64 is one of the platforms where deadlock >> was easily reproduced and the fix was tested. >> >> Signed-off-by: Felix Blyakher > > Also-written-by: Eric Sandeen > Independently-arrived-at-by: Eric Sandeen That would make it: Signed-off-by: Eric Sandeen :) > ;) > > But seriously ... Seriously. Felix > > > Reviewed-by: Eric Sandeen > >> --- >> fs/xfs/xfs_dfrag.c | 8 +++++--- >> 1 files changed, 5 insertions(+), 3 deletions(-) >> >> diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c >> index e6d839b..7465f9e 100644 >> --- a/fs/xfs/xfs_dfrag.c >> +++ b/fs/xfs/xfs_dfrag.c >> @@ -347,13 +347,15 @@ xfs_swap_extents( >> >> error = xfs_trans_commit(tp, XFS_TRANS_SWAPEXT); >> >> -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_unlock: >> + xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); >> + xfs_iunlock(tip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); >> + goto out; >> + >> out_trans_cancel: >> xfs_trans_cancel(tp, 0); >> goto out_unlock; > > -- > 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 felixb@oss.sgi.com Fri May 8 00:33:59 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n485XxFB260043 for ; Fri, 8 May 2009 00:33:59 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n485XuOg260013; Fri, 8 May 2009 00:33:56 -0500 Date: Fri, 8 May 2009 00:33:56 -0500 Message-Id: <200905080533.n485XuOg260013@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-20853-gec91d13 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 6321e3ed2acf3ee9643cdd403e1c88605d7944ba X-Git-Newrev: ec91d1335f478c5cd089d82ffbf936075c5f24c8 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 ec91d13 xfs: fix double unlock in xfs_swap_extents() from 6321e3ed2acf3ee9643cdd403e1c88605d7944ba (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 ec91d1335f478c5cd089d82ffbf936075c5f24c8 Author: Felix Blyakher Date: Thu May 7 19:49:45 2009 -0500 xfs: fix double unlock in xfs_swap_extents() Regreesion from commit ef8f7fc, which rearranged the code in xfs_swap_extents() leading to double unlock of xfs inode ilock. That resulted in xfs_fsr deadlocking itself on platforms, which don't handle double unlock of rw_semaphore nicely. It caused the count go negative, which represents the write holder, without really having one. ia64 is one of the platforms where deadlock was easily reproduced and the fix was tested. Signed-off-by: Eric Sandeen Reviewed-by: Eric Sandeen Signed-off-by: Felix Blyakher ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_dfrag.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) hooks/post-receive -- XFS development tree From BATV+48b9a887b159b2edd7b4+2084+infradead.org+hch@bombadil.srs.infradead.org Fri May 8 01:26:58 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n486Qtev001201 for ; Fri, 8 May 2009 01:26:58 -0500 X-ASG-Debug-ID: 1241764019-5f3201b90000-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 025A22705E9 for ; Thu, 7 May 2009 23:26:59 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Wu8H27zBUvSyipXX for ; Thu, 07 May 2009 23:26:59 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M2JXu-0002vM-Nb; Fri, 08 May 2009 06:26:58 +0000 Date: Fri, 8 May 2009 02:26:58 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfstests 042: point xfs_fsr right at the fragmented file Subject: Re: [PATCH] xfstests 042: point xfs_fsr right at the fragmented file Message-ID: <20090508062658.GA1689@infradead.org> References: <4A0386FD.7000108@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A0386FD.7000108@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: 1241764020 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, May 07, 2009 at 08:12:29PM -0500, Eric Sandeen wrote: > Somehow 042 as it stands isn't actually defragging the fragmented > file we created (see 042.full post-run) > > Probably need to look into that as well, but for now this should > make the call to fsr actually _do_ something. > > This has let 2 fsr bugs slip through qa in the past few months. :( Looks good. Can you open a bugzilla for the problem of fsr not actually finding the fragmented file so that we don't forget about that one? From BATV+48b9a887b159b2edd7b4+2084+infradead.org+hch@bombadil.srs.infradead.org Fri May 8 01:28:15 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n486SF4D001290 for ; Fri, 8 May 2009 01:28:15 -0500 X-ASG-Debug-ID: 1241764099-5f1002680000-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 13DF82705F1; Thu, 7 May 2009 23:28:19 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id caL8ZROcQ10cGJjA; Thu, 07 May 2009 23:28:19 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M2JZD-00038A-KY; Fri, 08 May 2009 06:28:19 +0000 Date: Fri, 8 May 2009 02:28:19 -0400 From: Christoph Hellwig To: Felix Blyakher Cc: xfs@oss.sgi.com, kernel-testers@vger.kernel.org, linux-kernel@vger.kernel.org, a.beregalov@gmail.com X-ASG-Orig-Subj: Re: [PATCH] xfs: fix double unlock in xfs_swap_extents() Subject: Re: [PATCH] xfs: fix double unlock in xfs_swap_extents() Message-ID: <20090508062819.GB1689@infradead.org> References: <1241745202-7452-1-git-send-email-felixb@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1241745202-7452-1-git-send-email-felixb@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: 1241764100 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The patch looks good, but a little nitpick: On Thu, May 07, 2009 at 08:13:22PM -0500, Felix Blyakher wrote: > out: > kmem_free(tempifp); > return error; > > +out_unlock: > + xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); > + xfs_iunlock(tip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); > + goto out; > + > out_trans_cancel: > xfs_trans_cancel(tp, 0); > goto out_unlock; this would be more readable as: out_trans_cancel: xfs_trans_cancel(tp, 0); out_unlock: xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); xfs_iunlock(tip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); goto out; From sandeen@sandeen.net Fri May 8 07:43:53 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n48ChqgW016859 for ; Fri, 8 May 2009 07:43:52 -0500 X-ASG-Debug-ID: 1241786636-130a01ff0000-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 C97CF1D1CAFE for ; Fri, 8 May 2009 05:43:56 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id Gbhkq7jltxlZhlby for ; Fri, 08 May 2009 05:43:56 -0700 (PDT) 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 A11E7AC358C; Fri, 8 May 2009 07:43:55 -0500 (CDT) Message-ID: <4A04290B.7020309@sandeen.net> Date: Fri, 08 May 2009 07:43:55 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfstests 042: point xfs_fsr right at the fragmented file Subject: Re: [PATCH] xfstests 042: point xfs_fsr right at the fragmented file References: <4A0386FD.7000108@sandeen.net> <20090508062658.GA1689@infradead.org> In-Reply-To: <20090508062658.GA1689@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: 1241786636 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25239 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Thu, May 07, 2009 at 08:12:29PM -0500, Eric Sandeen wrote: >> Somehow 042 as it stands isn't actually defragging the fragmented >> file we created (see 042.full post-run) >> >> Probably need to look into that as well, but for now this should >> make the call to fsr actually _do_ something. >> >> This has let 2 fsr bugs slip through qa in the past few months. :( > > Looks good. Can you open a bugzilla for the problem of fsr not actually > finding the fragmented file so that we don't forget about that one? > Good idea and done: http://oss.sgi.com/bugzilla/show_bug.cgi?id=821 -Eric From martin.geng@martinlinkingbiz.com Fri May 8 19:05:21 2009 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4905IaU038516 for ; Fri, 8 May 2009 19:05:19 -0500 X-ASG-Debug-ID: 1241827774-0e4901700000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from www.martinlinkingbiz.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 31AF1F7CF18 for ; Fri, 8 May 2009 17:09:34 -0700 (PDT) Received: from www.martinlinkingbiz.com ([67.222.146.102]) by cuda.sgi.com with ESMTP id zLVrIKqidfU4UG2z for ; Fri, 08 May 2009 17:09:34 -0700 (PDT) Received: (qmail 11887 invoked by uid 0); 8 May 2009 18:15:35 -0000 Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=private; d=martinlinkingbiz.com; b=EsbfGqeKLn4wUQnUSqM6hqsrSFItyI4Byt/fxK449yWQbwiQcetUZ7iZsZaQ46VQ; Received: from unknown (HELO MartinThinkpad) (martin.geng@martinlinkingbiz.com@125.71.96.45) by 67.222.146.102 with ESMTPA; 8 May 2009 18:14:52 -0000 Reply-To: From: "Martin Geng" To: "Martin Geng" X-ASG-Orig-Subj: =?gb2312?B?QmVzdCBQcmFjdGljZXMgZm9yIE1hY2hpbmVyeSBMdWJyaWNhdGlvbg==?= =?gb2312?B?ICi6z8DtyPO7rLncwO3Eo8q9KSAgLS0gKipMYXN0IFJlbWluZGVyIA==?= =?gb2312?B?dG8gUmVnaXN0ZXItIDMgU2VhdHMgTGVmdCoq?= Subject: =?gb2312?B?QmVzdCBQcmFjdGljZXMgZm9yIE1hY2hpbmVyeSBMdWJyaWNhdGlvbg==?= =?gb2312?B?ICi6z8DtyPO7rLncwO3Eo8q9KSAgLS0gKipMYXN0IFJlbWluZGVyIA==?= =?gb2312?B?dG8gUmVnaXN0ZXItIDMgU2VhdHMgTGVmdCoq?= Date: Fri, 8 May 2009 23:47:45 +0800 Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0FE4_01C9D04B.EF2AE460" X-Priority: 1 (Highest) X-MSMail-Priority: High X-Mailer: Microsoft Office Outlook 11 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 Thread-index: Aclq4dN/jqbGsbU3RxGftY2aqdGodgAAaPXQAS3nI5AAMjieQAASdBiQACUr2RAACxB5MAAhlqygAAMRK2AAC/2EQACKKHqQAAO6KAAAAFTmAAAAMNMQAApNniAAI3iDUAAA1aKgAAjtW7AAJuHd8AACqFlwAAOFvVAABMmgMAABbbWQAAY8i6AAHuRQAAAAxceAAARcx2AABvVoQADC6aYQAAJQ7+AAAgGbcAAGrfgwAxTd3aAAAA8mAAAAzVlwAACjqrAAAQpR0AAARUrQAAhCunAAAnavQAD9NDdgADLgHVAALHdH8AACWUdgAAONJIAA9NvnYAAtS1VAAvjEuzAAJ/RMwAA0EULAAAA6RSAAAVuiQADEYX6QADnKr/AAPMucwAAsFkJgA0wscVAAZLAzcAAAaFtwAAT1X+AC+xmXgAAAbjogAADZY7AAAFFFcAAz9yDQAJJcVTAANwouMABcOEAQAAMlUYAAAGxSQABoAvSQAGHOA1AAMcKRQAAwersgAABs9aAA2MYI0AABUlEgAEdxm7AAAZHtIAAxyHAgADKlNVAADwjKAAAxeegw Importance: High Disposition-Notification-To: "Martin Geng" X-Barracuda-Connect: UNKNOWN[67.222.146.102] X-Barracuda-Start-Time: 1241827776 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 version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format. ------=_NextPart_000_0FE4_01C9D04B.EF2AE460 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0FE5_01C9D04B.EF2AE460" ------=_NextPart_001_0FE5_01C9D04B.EF2AE460 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: quoted-printable =20 This is your last chance to register for Best Practices for Machinery Lubrication. We have only 3 seats left; therefore, do not miss this opportunity to register! =20 Best Practices for Machinery Lubrication 21st & 22nd May 2009 Shanghai, China =20 Hello, =20 How are you?=20 =20 MARTIN LINKING is convening the Best Practices for Machinery Lubrication = on 21st &22nd May 2009 in Shanghai. It=A1=AFs a two-days workshop which = focuses on the lubricants inspecting, monitoring and pollution control; application = of lubricating oil, lubricant procurement and machinery lubrication; the important role of lubricating oil played in saving energy and reducing consumption, current status of the company machinery lubrication and lubrication market developments of modern equipment. Therefore delegates will be able to rule out the machinery lubrication problems and = hydraulic failure to meet the needs of modern machinery lubrication management. =20 If you are not relevant, could you help me to forward this information = to the people who are related? Thanks for that!=20 =20 Benefits of Attending Include: * Understanding the importance of machinery lubrication, avoid misunderstanding of the lubrication * Learning the advanced technology of oil inspection, cleaning and lubrication management * Building reliability through contamination control * Selecting the correct lubricants (greases) for each machine = application * Looking at ways to enhance lubricant performance through = high-performance additives * How to optimize lubricant selection/procurement=20 * Detecting and analysing machine wear debris * Best practices for storing, handling and managing lubricants * Oil rehabilitation and used oil analysis basics * A range of case studies taken from manufacturing industry =20 About the trainer: Prof. Dazhong Wang - Professor of Harbin Institute of Technology, = Director of Chinese Tribology Branch of China Mechanical Engineering Society = (CMES), Chief lubrication expert & Deputy director of Education and Training Committee of the communication centre of China Equipments Management Association, Deputy director of the Science and Training division of equipment and maintenance branch of CMES, Member of Correspondence = Education of China Equipments Management Association =20 Professor Wang has trained: * Shanghai Shenmei Beverage & Food Co., Ltd * Outokumpu Copper Tube (Zhongshan) Limited * DSM (China) Limited * Bunge Grain and Oil Co., Ltd * Tianjin TCL Building Materials Co., Ltd * Changsha Zhongyi Group Co,Ltd * Sino-Swed Pharmaceutical Corp. Ltd * SHIMANO Company Limited * Guangxi Laibin (B) Power Plant * Shenyang Emerson Climate Technologies Co., Ltd * Shandong Aluminium Industry Co., Ltd * China National Tobacco Corporation, Jiangsu * Guangzhou Honda Automobile Engine Co., Ltd * Sinopec Great Wall Lubrication Oil-Beijing R&D Centre =20 Two days training fee is 4995RMB. =20 Please find an agenda in both English and Chinese attached with this = email. Please do not hesitate to contact me should you have any queries.=20 =20 To register the very limited 10% off seats, simply fill out the = registration form, attention it to Martin Geng and fax it to + 86 28 6552 1233. If you don't want to receive any further email from us, please reply = this email to unsubscribe with correct email address.=20 Best Regards,=20 Martin Geng __________________________________________ Martin Linking Business Consulting Company Limited Room 808A, Times Plaza, No.2 Zongfu Road, Chengdu, Sichuan 610016, China =20 T: +86 28 65521255 F: +86 28 65521233 E: martin.geng@martinlinking.net www.martinlinking.com =20 We are dedicated to offer our clients cutting edge information they can = use immediately. =20 Upcoming Martin Linking events: =20 =20 Title : The 2nd Plant Managers Forum 2009 Date : 21st - 22nd May 2009 Location: Shanghai, China Link : http://www.martinlinking.com/documents/ws/pm2_ws.pdf =20 Title : Upgrade the Practical Skills of Business Channels of Pharmaceutical Enterprises under the New Medicine Situation Date : 18th & 19th June 2009 Venue : Shanghai, China Link : http://www.martinlinking.com/documents/ws/pbc_ws.pdf =20 Title : Total Productive Maintenance (TPM) Best Practice 2009 Date : 30th & 31st July 2009 Venue : Shanghai, China Link : http://www.martinlinking.com/documents/ws/tpm_ws.pdf =20 Title : Continuous Application of Behavior-Based Safety 2009 Date : 30th & 31st July 2009 Venue : Shanghai, China Link : http://www.martinlinking.com/documents/ws/bbs_ws.pdf =20 Title : Best Practices for Sustainable Corporate Social = Responsibility 2009 Date : 20th & 21st August 2009 Venue : Shanghai, China Link : http://www.martinlinking.com/documents/ws/csr_ws.pdf =20 This message and any attachment is intended only for the use of the Addressee and may contain information that is PRIVILEGED. If you are not = the intended recipient, you are hereby notified that any dissemination of = this communication is strictly prohibited. If you have received this communication in error, please erase all copies of the message and its attachments and notify us immediately. Thank You. Security Warning: = Please note that this e-mail has been created in the knowledge that Internet = e-mail is not a 100% secure communications medium. We advise that you = understand and observe this lack of security when e-mailing us. Viruses: Although = we have taken steps to ensure that this e-mail and attachments are free = from any virus, we advise that in keeping with good computing practice the recipient should ensure they are actually virus free.=20 =20 ------=_NextPart_001_0FE5_01C9D04B.EF2AE460 Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable
 
This is your last chance = to register=20 for Best=20 Practices for Machinery Lubrication. We have=20 only 3 seats = left;=20 therefore, do not miss this opportunity to=20 register!

 

Best=20 Practices for Machinery Lubrication

21st & 22nd May=20 2009

Shanghai,=20 China

 

Hello,

 

How are you?=20

 

MARTIN=20 LINKING is convening the Best Practices for Machinery = Lubrication on 21st &22nd May 2009=20 in Shanghai. It=A1=AFs a two-days  = workshop which=20 focuses on the lubricants inspecting, monitoring and pollution control;=20 application of lubricating oil, lubricant procurement and machinery = lubrication;=20 the important role of lubricating oil played in saving energy and = reducing=20 consumption, current status of the company machinery lubrication and = lubrication=20 market developments of modern equipment. Therefore delegates will be = able to=20 rule out the machinery lubrication problems and hydraulic failure to = meet the=20 needs of modern machinery lubrication = management.

 

If you are = not=20 relevant, could you help me to forward this information to the people = who are=20 related? Thanks for that! 

 

Benefits=20 of Attending=20 Include:           = ;            =             &= nbsp;           &n= bsp;    =20

l Understanding the importance of = machinery=20 lubrication, avoid misunderstanding of the=20 lubrication

l Learning the advanced technology = of oil=20 inspection, cleaning and lubrication = management

l Building reliability through = contamination=20 control

l Selecting the correct lubricants = (greases)=20 for each machine application

l Looking=20 at ways to enhance = lubricant=20 performance through high-performance = additives

l How to=20 optimize lubricant = selection/procurement=20

l Detecting and analysing machine = wear=20 debris

l Best=20 practices for storing, handling = and=20 managing lubricants

l Oil=20 rehabilitation and used = oil analysis=20 basics

l  A range of = case=20 studies taken from manufacturing=20 industry

 

About=20 the trainer:

Prof. Dazhong=20 Wang  - Professor of = Harbin=20 Institute of Technology, Director of Chinese Tribology Branch of China=20 Mechanical Engineering Society (CMES), Chief lubrication expert & = Deputy=20 director of Education and Training Committee of the communication centre = of=20 China Equipments Management Association, Deputy director of the Science = and=20 Training division of equipment and maintenance branch of CMES, Member of = Correspondence Education of China Equipments Management=20 Association

 

Professor=20 Wang has trained:

l   = Shanghai Shenmei = Beverage &=20 Food Co., Ltd

l   Outokumpu = Copper Tube=20 (Zhongshan) Limited

l   DSM = (China)=20 Limited

l   Bunge Grain = and Oil Co.,=20 Ltd

l   = Tianjin TCL = Building Materials=20 Co., Ltd

l   Changsha = Zhongyi Group=20 Co,Ltd

l   Sino-Swed = Pharmaceutical=20 Corp. Ltd

l   SHIMANO = Company=20 Limited

l   Guangxi = Laibin (B) Power=20 Plant

l   Shenyang Emerson = Climate=20 Technologies Co.,=20 Ltd

l   = Shandong Aluminium = Industry=20 Co., Ltd

l   China = National Tobacco=20 Corporation, Jiangsu

l   Guangzhou = Honda=20 Automobile Engine Co., Ltd

l   Sinopec = Great Wall=20 Lubrication Oil-Beijing R&D Centre

 

Two days training = fee is=20 4995RMB.

 

Please find an agenda in = both=20 English and Chinese attached with this email.=20 Please do=20 not hesitate to contact me should you have any queries.

 

To register the very = limited 10%=20 off seats, = simply fill=20 out the registration form, attention it to Martin Geng and fax = it to +=20 86 28 6552 1233.

If you don't = want to=20 receive any further email from us, please reply this email=20 to unsubscribe with correct email = address. 

Best=20 Regards, 

Martin=20 Geng

__________________________________________

Martin=20 Linking = Business Consulting=20 Company=20 Limited

Room 808A, = Times=20 Plaza, = No.2 Zongfu Road, = Chengdu,

Sichuan 610016, = China

 

T: +86 28=20 65521255

F: +86 28=20 65521233

E:=20 martin.geng@martinlinking.net

www.martinlinking.com

We are = dedicated to=20 offer our clients cutting edge information they can use=20 immediately.

 

Upcoming=20 Martin Linking events:  

 

Title    =20   : The 2nd = Plant=20 Managers Forum 2009

Date     =20 : 21st - 22nd May 2009

Location: = Shanghai, = China

Link     =20  : http://www.= martinlinking.com/documents/ws/pm2_ws.pdf

 

Title     =20 : Upgrade the Practical Skills of = Business=20 Channels of Pharmaceutical Enterprises under the New Medicine=20 Situation

Date     : =20 18th & 19th = June=20 2009

Venue   : = Shanghai, = China

Link      :=20 http://www.= martinlinking.com/documents/ws/pbc_ws.pdf

 

Title     =20 : Total Productive Maintenance = (TPM) Best=20 Practice 2009

Date     : =20 30th & 31st July 2009

Venue   : = Shanghai, = China

Link      :=20 http://www.= martinlinking.com/documents/ws/tpm_ws.pdf

 

Title     =20 : Continuous Application of = Behavior-Based=20 Safety 2009

Date     : =20 30th & 31st July 2009

Venue   : = Shanghai, = China

Link      :=20 http://www.= martinlinking.com/documents/ws/bbs_ws.pdf

 

Title     =20 : Best Practices for Sustainable = Corporate=20 Social Responsibility 2009

Date     : =20 20th & 21st August 2009

Venue   : = Shanghai, = China

Link      :=20 http://www.= martinlinking.com/documents/ws/csr_ws.pdf

 

This = message and=20 any attachment is intended only for the use of the Addressee and may = contain=20 information that is PRIVILEGED. If you are not the intended recipient, = you are=20 hereby notified that any dissemination of this communication is = strictly=20 prohibited. If you have received this communication in error, please = erase all=20 copies of the message and its attachments and notify us immediately. = Thank You.=20 Security Warning: Please note that this e-mail has been created in the = knowledge=20 that Internet e-mail is not a 100% secure communications medium. We = advise that=20 you understand and observe this lack of security when e-mailing us. = Viruses:=20 Although we have taken steps to ensure that this e-mail and attachments = are free=20 from any virus, we advise that in keeping with good computing practice = the=20 recipient should ensure they are actually virus free. =

 

------=_NextPart_001_0FE5_01C9D04B.EF2AE460-- ------=_NextPart_000_0FE4_01C9D04B.EF2AE460 Content-Type: application/pdf; name="Best Practices for Machinery Lubrication EN&CN.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Best Practices for Machinery Lubrication EN&CN.pdf" JVBERi0xLjYNJeLjz9MNCjEwNzkgMCBvYmoNPDwvTGluZWFyaXplZCAxL0wgNDU1NzkyL08gMTA4 MS9FIDE5NTAxOC9OIDgvVCA0MzQxNjMvSCBbIDEyMzYgNjUxXT4+DWVuZG9iag0gICAgICAgICAg DQp4cmVmDQoxMDc5IDQ3DQowMDAwMDAwMDE2IDAwMDAwIG4NCjAwMDAwMDE4ODcgMDAwMDAgbg0K MDAwMDAwMjAyMSAwMDAwMCBuDQowMDAwMDAyNDc4IDAwMDAwIG4NCjAwMDAwMDI1MTYgMDAwMDAg bg0KMDAwMDAwMjY3NCAwMDAwMCBuDQowMDAwMDAyODM0IDAwMDAwIG4NCjAwMDAwMDMxNDQgMDAw MDAgbg0KMDAwMDAwMzI4MCAwMDAwMCBuDQowMDAwMDAzNDI3IDAwMDAwIG4NCjAwMDAwMDM1NjIg MDAwMDAgbg0KMDAwMDAwMzYwMSAwMDAwMCBuDQowMDAwMDAzNjgwIDAwMDAwIG4NCjAwMDAwMDQy OTEgMDAwMDAgbg0KMDAwMDAwNDY5NiAwMDAwMCBuDQowMDAwMDA0OTI2IDAwMDAwIG4NCjAwMDAw MDUyNjYgMDAwMDAgbg0KMDAwMDAwNTU2MSAwMDAwMCBuDQowMDAwMDA1ODU4IDAwMDAwIG4NCjAw MDAwMDYxNjQgMDAwMDAgbg0KMDAwMDAwNjQ1OCAwMDAwMCBuDQowMDAwMDA2Nzg5IDAwMDAwIG4N CjAwMDAwMDY5NDIgMDAwMDAgbg0KMDAwMDAwNzE2NiAwMDAwMCBuDQowMDAwMDA3NDE4IDAwMDAw IG4NCjAwMDAwMDc3MTQgMDAwMDAgbg0KMDAwMDAwODM3MCAwMDAwMCBuDQowMDAwMDExMDY1IDAw MDAwIG4NCjAwMDAwMjQ5NjAgMDAwMDAgbg0KMDAwMDAzMzUxOSAwMDAwMCBuDQowMDAwMDMzNzcw IDAwMDAwIG4NCjAwMDAwMzM5NzcgMDAwMDAgbg0KMDAwMDEzNDk1MSAwMDAwMCBuDQowMDAwMTM1 MTkzIDAwMDAwIG4NCjAwMDAxMzU1MDQgMDAwMDAgbg0KMDAwMDEzNTU2OCAwMDAwMCBuDQowMDAw MTM1NjMyIDAwMDAwIG4NCjAwMDAxNjM2MTQgMDAwMDAgbg0KMDAwMDE3MzMxOCAwMDAwMCBuDQow MDAwMTg1Mjk1IDAwMDAwIG4NCjAwMDAxODU1NjUgMDAwMDAgbg0KMDAwMDE4NTg1MiAwMDAwMCBu DQowMDAwMTkzOTU2IDAwMDAwIG4NCjAwMDAxOTQyMjYgMDAwMDAgbg0KMDAwMDE5NDQ0NCAwMDAw MCBuDQowMDAwMTk0NzMxIDAwMDAwIG4NCjAwMDAwMDEyMzYgMDAwMDAgbg0KdHJhaWxlcg0KPDwv U2l6ZSAxMTI2L1ByZXYgNDM0MTUwL1Jvb3QgMTA4MCAwIFIvSW5mbyAxMDc4IDAgUi9JRFs8NjBD RDc2M0FCQTFFMUE0RTlENjRDQjlEOTNGNDExRjU+PEIzNzg1OUJDNEQxRDlDNDVCRTk3Q0RFQUQ4 MzMxMkJBPl0+Pg0Kc3RhcnR4cmVmDQowDQolJUVPRg0KICAgIA0KMTEyNSAwIG9iag08PC9MZW5n dGggNTU1L0MgNjI3L0ZpbHRlci9GbGF0ZURlY29kZS9JIDY2My9PIDYxMS9TIDM4MT4+c3RyZWFt DQp42mJgYGBmYGCNYmBjYOBpYBBiQAAhoBg7AwsDx5IGBgUGlp2RjuwbhO+wijFxNTAw8Oq8+5rE IVv53JMBGxAwWDBdT9Y6YuvjNN37olkJJxen882zO1j0fc3MLQKGJ925ZQ1zfu6YwRq1tizhNOvp e5vSSj5+djtnD5Hj7Pi563pB4tQskNy5eXYZN084sRztlfNZKfzcVyso5jBbhF5cyUegYbPMiho6 PqYcm6vgKzRZ7by2zsFp3NPn2tS+VkvrnbNEYckJoJxwRKpHcfpVmFzNxc1TjohIqO3tNusBu1Uw La0DBMAcJtWwjI4OBJ+BLQ2Zz6TiCpUHhgGDkhJUK4TLICiIwlUyNk6Da2VswAxAoLAWA0vyRiCt A8TRYAvVGAQZLgIV8DOwL+BoYOxguMWQyMDQwOXgvkDsAxsDyw4mJkZmhjYGBwaVBewGrBeYI5hY mLJYDXo7XDQVeANY/TQVGGcwCjLwMrD1LmWKUSyVYF7A+Em+iaGEQZdBXoF/AvsJ5geM6xhW8c1i cG6QdOD6wHCA5Q/DLoZYhq8MKQ48CqwPmFfa/GFSYJBgsGqQa2Bm4JnAvIKxBajiO4Nes7gD3wLh CdwLmB8wyTHEMfAwyAJVMDawLmB8wfCGcRLDq4Z4B/EDaMkhkoGV2Q5IcwNTmxqQTmFgZUsBsi8w MLafByUXBna2BiGpKy8uTXVS0eC/Z8LAwGLGwDZnBijggPgwQIABAEkmveYNCmVuZHN0cmVhbQ1l bmRvYmoNMTA4MCAwIG9iag08PC9NYXJrSW5mbzw8L01hcmtlZCBmYWxzZT4+L091dGxpbmVzIDg5 IDAgUi9NZXRhZGF0YSAxMDc3IDAgUi9QYWdlcyAxMDc2IDAgUi9TdHJ1Y3RUcmVlUm9vdCAxMDAg MCBSL1R5cGUvQ2F0YWxvZz4+DWVuZG9iag0xMDgxIDAgb2JqDTw8L0Nyb3BCb3hbMCAwIDU5NS4y MiA4NDJdL0Fubm90cyAxMDgyIDAgUi9QYXJlbnQgMTA3NiAwIFIvU3RydWN0UGFyZW50cyAwL0Nv bnRlbnRzWzEwOTEgMCBSIDEwOTQgMCBSIDEwOTUgMCBSIDEwOTYgMCBSIDEwOTcgMCBSIDEwOTgg MCBSIDExMDMgMCBSIDExMDQgMCBSXS9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1LjIyIDg0Ml0v UmVzb3VyY2VzPDwvWE9iamVjdDw8L0ltMCAxMTE1IDAgUi9JbTEgMTExNiAwIFI+Pi9Db2xvclNw YWNlPDwvQ1MwIDEwODkgMCBSPj4vRm9udDw8L1RUMCAxMDg1IDAgUi9UVDEgMTA5MiAwIFIvVFQy IDEwOTkgMCBSL1RUMyAxMTAwIDAgUi9DMl8wIDEwODYgMCBSL0MyXzEgMTA4NyAwIFIvQzJfMiAx MDg4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQ10vRXh0R1N0YXRlPDwvR1MwIDEwOTAg MCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTA4MiAwIG9iag1bMTA4MyAwIFIgMTA4NCAwIFJd DWVuZG9iag0xMDgzIDAgb2JqDTw8L1JlY3RbMjIuNSAyNS4wODgyIDE1OC40NDYgNDEuMTA5Ml0v U3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMTExNCAwIFIvRiA0L0gv SS9TdHJ1Y3RQYXJlbnQgMTMvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTEwODQg MCBvYmoNPDwvUmVjdFsxNTguNDYgMjQuNTQzOCAxNjEuMjQ2IDM3Ljg4MDRdL1N1YnR5cGUvTGlu ay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDExMTMgMCBSL0YgNC9IL0kvU3RydWN0UGFy ZW50IDE0L0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0xMDg1IDAgb2JqDTw8L1N1 YnR5cGUvVHJ1ZVR5cGUvRm9udERlc2NyaXB0b3IgMTExOCAwIFIvTGFzdENoYXIgMTE1L1dpZHRo c1s2MDYgMCAwIDAgMCAwIDYzNyAwIDI2NyAwIDU0NyA0MjMgODc0IDY1NiAwIDUzMiAwIDU2MyAw IDQ5NSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1MjggMCAwIDAgNDkxIDMxNiA1MjggMCAyNDYg MCAwIDI0NiAwIDUyNyA1MjcgMCAwIDM1MiAzOTRdL0Jhc2VGb250L0VESUROQytDYWxpYnJpLUJv bGRJdGFsaWMvRmlyc3RDaGFyIDY1L0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9UeXBlL0ZvbnQ+ Pg1lbmRvYmoNMTA4NiAwIG9iag08PC9TdWJ0eXBlL1R5cGUwL0Rlc2NlbmRhbnRGb250c1sxMTA5 IDAgUl0vQmFzZUZvbnQvRURJREpCK0NhbGlicmkvVG9Vbmljb2RlIDExMTkgMCBSL0VuY29kaW5n L0lkZW50aXR5LUgvVHlwZS9Gb250Pj4NZW5kb2JqDTEwODcgMCBvYmoNPDwvU3VidHlwZS9UeXBl MC9EZXNjZW5kYW50Rm9udHNbMTEyMiAwIFJdL0Jhc2VGb250L0VESUROQitDYWxpYnJpLUJvbGRJ dGFsaWMvVG9Vbmljb2RlIDExMjMgMCBSL0VuY29kaW5nL0lkZW50aXR5LUgvVHlwZS9Gb250Pj4N ZW5kb2JqDTEwODggMCBvYmoNPDwvU3VidHlwZS9UeXBlMC9EZXNjZW5kYW50Rm9udHNbMTExMiAw IFJdL0Jhc2VGb250L0VESURQRCtTaW1TdW4vVG9Vbmljb2RlIDExMjQgMCBSL0VuY29kaW5nL0lk ZW50aXR5LUgvVHlwZS9Gb250Pj4NZW5kb2JqDTEwODkgMCBvYmoNWy9JQ0NCYXNlZCAxMTA1IDAg Ul0NZW5kb2JqDTEwOTAgMCBvYmoNPDwvT1BNIDEvT1AgZmFsc2Uvb3AgZmFsc2UvVHlwZS9FeHRH U3RhdGUvU0EgZmFsc2UvU00gMC4wMj4+DWVuZG9iag0xMDkxIDAgb2JqDTw8L0xlbmd0aCA1Mzkv RmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJzFRNj9owEL3nV8wxVMKZseOPSAhpF1YobUFs 11IPqKoQBZpqCS2sVPXfd+yEj6XQUw89xBknz8/vPU+SlfVzVS+fvs6/L6HXy8aDcggI/f79cADJ j4SEBiIlcge6UEJLsJJEIWG3TD5CzYhs9ISw3ie60MIRIeaGCbDBUVEUTsKRxfJcW1hskqzcIAy3 yeN/QvEwZr+Pyb1PsukxCDoEcaDPBvIz8mO/SgiZLmwRC6lVSMWhEVaiAr9Jeoio+v5bQ/3gWSWC yyUEjSih63ISzsQk38Qow2uW6yKiBfCsjTobsIbFHlAorV6NsF/UiZJaKAeWbCCVphAmB6tFEXdY sbdLd/LgDkWRF7BOMu9bc10UiMQ2FiBlEBuMNpXSuTAGrLGCWqezdHz3oUM29Z2uTMtJ55N/G6Oi hg0DD+eeE7P4L6dkLjbEPADT9+XkXTkZdQLgDxJj1QVJjPfMljrZklZHD10niCx0ieOi4+LLK5CF NTauIdecrgPlrLCcrLJCmbOzveXChOWzdLrbrjqk0uV+X23r+fPVVIxA+9dQFAtgHOuSLXCW+l2n q1Q655HSKtb161q6dH3rFOhqgP+yPyWHfD7G/kRQkqf5gZ5QhduN3sxPh2gYtW7vI/4hcZf8ZEdj iOZkY06C34E+tmpTqShPOSXIXfsms7vdS7WaL17Ctv4X/wGz6a6qX6p6DcAC4LcAAwAiuhpWDQpl bmRzdHJlYW0NZW5kb2JqDTEwOTIgMCBvYmoNPDwvU3VidHlwZS9UcnVlVHlwZS9Gb250RGVzY3Jp cHRvciAxMDkzIDAgUi9MYXN0Q2hhciAxMjEvV2lkdGhzWzI3OCAwIDAgMCAwIDAgNzIyIDAgMCAw IDAgNTg0IDI3OCAwIDAgMCA1NTYgNTU2IDU1NiAwIDAgNTU2IDU1NiAwIDU1NiA1NTYgMCAwIDAg MCAwIDAgMCAwIDcyMiA3MjIgMCAwIDAgMCAwIDAgMCAwIDYxMSA4MzMgMCAwIDY2NyAwIDAgNjY3 IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTU2IDYxMSA1NTYgNjExIDU1NiAzMzMgNjExIDYx MSAyNzggMCAwIDI3OCAwIDYxMSA2MTEgMCAwIDM4OSA1NTYgMzMzIDYxMSAwIDc3OCAwIDU1Nl0v QmFzZUZvbnQvQXJpYWwtQm9sZE1UL0ZpcnN0Q2hhciAzMi9FbmNvZGluZy9XaW5BbnNpRW5jb2Rp bmcvVHlwZS9Gb250Pj4NZW5kb2JqDTEwOTMgMCBvYmoNPDwvU3RlbVYgMTM4L0ZvbnROYW1lL0Fy aWFsLUJvbGRNVC9Gb250U3RyZXRjaC9Ob3JtYWwvRm9udFdlaWdodCA3MDAvRmxhZ3MgMzIvRGVz Y2VudCAtMjExL0ZvbnRCQm94Wy02MjggLTM3NiAyMDAwIDEwMTBdL0FzY2VudCA5MDUvRm9udEZh bWlseShBcmlhbCkvQ2FwSGVpZ2h0IDcxOC9YSGVpZ2h0IDUxNS9UeXBlL0ZvbnREZXNjcmlwdG9y L0l0YWxpY0FuZ2xlIDA+Pg1lbmRvYmoNMTA5NCAwIG9iag08PC9MZW5ndGggMjY4L0ZpbHRlci9G bGF0ZURlY29kZT4+c3RyZWFtDQpIidyTTWrDMBCF9zrFLNtFpJGEZAWMoVGK6SIlYF2guI5xoabY 3vT2HcX9jRMa066C0MxC0nvfkxDAau2BIdQ0c7ZAjnoJYw2PLEVEnYUndruhXeKmG5rdQzlAmorw +lKB2HZNOzRtDVm2FxK+QCh7UlBRRtmEqrQGoC/bcdUXR1YLf8/IVcFiX6fW2+i58XdrMB9eyC1t rd97Tt0oeVLgd/Z/uwTkzoxgsefnBrOXGiy51GDuMJgIQYKEsCOs0IG2gDSoSW25dqCd5tKhhvDM rlbXM6NGIBO/TKzENVPhMyMqN4Zzhypf0ZbTN0vM91PVn+nnKZyir47RS5ziG/eDvz/LHd4EGABC FTfdDQplbmRzdHJlYW0NZW5kb2JqDTEwOTUgMCBvYmoNPDwvTGVuZ3RoIDIyMy9GaWx0ZXIvRmxh dGVEZWNvZGU+PnN0cmVhbQ0KSInMlLEOgjAURXe+4o06AKXQggkhUXBwIOnADxBUggMxtYt/L6QG QdqYpotLO7zc805u0gIAZNmhyMFB0Dou8hCJQZ7V2dk8ttXNOZbD2N9z0V3rRkCa+tXzfgGf8a4X Xd9OBC8heKAMcZyAK68vChvjZX4qIAg+OYpkjiRknhNG21X+ZgSdv1D647V/SPE8B2NO6SUnun3v 6URFi1aYdStmBJ0lU7YSrluhu4U/t/Y3I+j8udI/WvtHQTzP1db+ZgSdf630Jz9fVWPtb0bQ+TdK f/pHvwK8BBgA0I89zQ0KZW5kc3RyZWFtDWVuZG9iag0xMDk2IDAgb2JqDTw8L0xlbmd0aCAyMjUv RmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJpNSxDoIwFAXQna94ow5KKSlgQkgUHBxIGPgB g0DqAAa6+PdCSqTqa0zTpR1e7+1JQwAAOGUpOGQfMQrttBMawU5u5c3ZiG15d875dMQtII7dPL1k 4IWQJEsuIDLnB1TN8TV3HARvrpWY4+XzUYNbDLwTvGvfLVPDnGUhyNW8QefnqD9C/ISpucrab9ag 81eo//DrZ9GHv7b2mzXo/DXmp+Svf7T2mzXo/CPq9zC/r+ZgzqEuOdHdt0zXrzJUp431q5g16JQN +ir071+ht/abNej8Per3v/3wEmAAtGs6Ow0KZW5kc3RyZWFtDWVuZG9iag0xMDk3IDAgb2JqDTw8 L0xlbmd0aCAyMzQvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJpNS9CoMwFAXgPU9xx3Yw xp/ECCK02qGD4OALiG01HaSIS9++SoQqSYaQxeV6Tj4uIQAABLMYPIJJyKF5oNN0bt7oVhWA/Ms0 i1fbzZBlfvP9PMGvJzHOYuwhz6/l8guBHq1ZmoD82jdgTsOlRQL0jnqNV8W9hDD+5xiRuTig+xys Oa1LTkznbVPZ6qU4SJdxgKNtXDmvxa7BxKy0a6HqWjgL97nW2W/XYPK3Wj9T/ZRH+1zn7LdrMPk7 rT/R+Q/XcnD22zWY/IPWz1X/8VUQzny7BhNfaPmpyo/IYf2jqx9+AgwALF9ABw0KZW5kc3RyZWFt DWVuZG9iag0xMDk4IDAgb2JqDTw8L0xlbmd0aCAyMjIvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJl YW0NCkiJpJQxCoMwFEB3T/HHdmiNxqiDCK12KCg4eIG2WrGDlKCDt6+Slkb8QUKWZIjv5fHBAADs un35si55ApZ94n37vD16iCK7HN812AVvu77tGojjczp9Qo4hc6GZduKGcBBbWVmypZjxPLmmQMmf 84ngfE/Gaq3LJ8HMsgDEqm9Q5ddovrPOZyGTOW7cr2dQ9XO03133e04gc6Nxv55B1T+i/XRz/jBz aJc4Ud33Pf1ZKVlMJTOeip5BVZmhU/GQn4ouuMG4X8+g6h/Qfrb1KNyN8/UMinz4CDAADl89zQ0K ZW5kc3RyZWFtDWVuZG9iag0xMDk5IDAgb2JqDTw8L1N1YnR5cGUvVHJ1ZVR5cGUvRm9udERlc2Ny aXB0b3IgMTEwMiAwIFIvTGFzdENoYXIgMTE5L1dpZHRoc1syNTIgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDQ3OSAwIDQyMyAwIDAgMCA0NzEgMCAyMjkgMCA0NTUg MjI5IDc5OSA1MjUgNTI3IDAgMCAzNDkgMCAzMzUgMCAwIDcxNV0vQmFzZUZvbnQvRURJRURHK0Nh bGlicmkvRmlyc3RDaGFyIDQ2L0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9UeXBlL0ZvbnQ+Pg1l bmRvYmoNMTEwMCAwIG9iag08PC9TdWJ0eXBlL1RydWVUeXBlL0ZvbnREZXNjcmlwdG9yIDExMDEg MCBSL0xhc3RDaGFyIDMyL1dpZHRoc1syNzhdL0Jhc2VGb250L0FyaWFsTVQvRmlyc3RDaGFyIDMy L0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9UeXBlL0ZvbnQ+Pg1lbmRvYmoNMTEwMSAwIG9iag08 PC9TdGVtViA4OC9Gb250TmFtZS9BcmlhbE1UL0ZvbnRTdHJldGNoL05vcm1hbC9Gb250V2VpZ2h0 IDQwMC9GbGFncyAzMi9EZXNjZW50IC0yMTEvRm9udEJCb3hbLTY2NSAtMzI1IDIwMDAgMTAwNl0v QXNjZW50IDkwNS9Gb250RmFtaWx5KEFyaWFsKS9DYXBIZWlnaHQgNzE4L1hIZWlnaHQgNTE1L1R5 cGUvRm9udERlc2NyaXB0b3IvSXRhbGljQW5nbGUgMD4+DWVuZG9iag0xMTAyIDAgb2JqDTw8L1N0 ZW1WIDgwL0ZvbnROYW1lL0VESUVERytDYWxpYnJpL0ZvbnRTdHJldGNoL05vcm1hbC9Gb250Rmls ZTIgMTEwNiAwIFIvRm9udFdlaWdodCA0MDAvRmxhZ3MgMzIvRGVzY2VudCAtMjUwL0ZvbnRCQm94 Wy00NzYgLTE5NCAxMjE0IDk1Ml0vQXNjZW50IDc1MC9Gb250RmFtaWx5KENhbGlicmkpL0NhcEhl aWdodCA2MjUvWEhlaWdodCAtNTMxL1R5cGUvRm9udERlc2NyaXB0b3IvSXRhbGljQW5nbGUgMD4+ DWVuZG9iag0xMTAzIDAgb2JqDTw8L0xlbmd0aCAyMjQvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJl YW0NCkiJzNJNC4IwHAbwu5/if7RDOveiBiKUduggePALmJXYwUJ26dvnEnLmpMYuXTYYPA8/xgMA YB9XxdXaZwlYbg5R5GbJIQXiQxzv0v4ROT7CUIubwho5CIdQnCy7G2PbjjeXsuIiXTzuZ3Dzrml5 09bvkr5AZFkAw6nf4IRsYAiA2iHxgzmfekzONcZ+vYbRT14Mgj9LJH445xMUyPzKmK/XsPT9ldK/ mftZOPn+0tiv17DkL1V+ilR+Iue4sV+vYcnPlX5PsR8f/8f8p37l/in+uv+bsf+3BngKMADXpUPN DQplbmRzdHJlYW0NZW5kb2JqDTExMDQgMCBvYmoNPDwvTGVuZ3RoIDU4NC9GaWx0ZXIvRmxhdGVE ZWNvZGU+PnN0cmVhbQ0KSImUVNuK2zAQffdXzFOx21rWjCzbghBonH3YQmBLBH1YSjHZXNwmym6S EvbvO7JypRvaYpBlNHPOmTMjAwD0+4NhDZEUlSaY81tSBWl42acoXif2R3Q34pDsAXq9bFTfDyFX 57xChrxCXeW5c96nza6dNZOdT7evz1PIHjat27VufkJhBJ+rSwjr/yPc0u/e1J//VT/4vDd1hZNb fHDiu7PRCyNUOYE2mgMgrXIUVQGbafT1PbjDMQpTdRGHAP7yAXye1WMJky1zk8arFbYTF6FRPlgK JMglCpkDYi5klz+LvvAzsFdl63PZJjcsP7MWAcHOfCFSFmAn0O002D1gwOcn7Cg3Iq+gMqKspAK7 ih7jwRS2vzZTaNwT087b7W66AbfeQ5ISKbbjm/38p//FUQgGDyUqT+19lKQ8t4SUBCkCO4ziulku 4QM7xyYXmo1H0jq0IdQhO+GdZjYItd9fNeOSvDy7wMR0IpboAdIDgqcPPX2MCd8Rwah5TZBiIClN V14ZH6ocLxo3XzTtR6gXrWtuFF1djntW03d5sP4kPsVClMq3VFLhqXusSvVPRYyfG3fGM0c87iIF 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 WV6/fMxO3Y5pV2s3Yk+3j7Y/ZD/ioObAdKhzeOKo4ch2bHCccNJzSnA65vTC2cSZ79zmPOdi47Le 5bwr4urhWuja7ybjFuJW6fbYXd09zr3ZfcbDwmOdx3lPtKe3527PYS9lL5ZXo9fMCqsV61f0eJO8 g7wrvZ/46Pvwfbp8Yd8Vvnt8H67UWslb2eEH/Lz89vg98tfxT/P/PgAT4B9QFfA00DQwN7A3iBIU FdQU9CbYObgk+EGIbogwpDtUMjQytDF0Lsw1rDRsZJXxqvWrrocrhHPDOyOwEaERDRGzq91W7109 HmkRWRA5tEZnTdaaq2sV1iatPRMlGcWMOhmNjg6Lbor+wPRj1jFnY7xiqmNmWC6sfaznbEd2GXuK Y8cp5UzE2sWWxk7G2cXtiZuKd4gvj5/munAruS8TPBNqEuYS/RKPJC4khSW1JuOSo5NP8WR4ibye FJWUrJSBVIPUgtSRNJu0vWkzfG9+QzqUvia9U0AV/Uz1CXWFW4WjGfYZVRlvM0MzT2ZJZ/Gy+rL1 s3dkT+S453y9DrWOta47Vy13c+7oeqf1tRugDTEbujdqbMzfOL7JY9PRzYTNiZt/yDPJK817vSVs S1e+cv6m/LGtHlubCyQK+AXD22y31WxHbedu799hvmP/jk+F7MJrRSZF5UUfilnF174y/ariq4Wd sTv7SyxLDu7C7OLtGtrtsPtoqXRpTunYHt897WX0ssKy13uj9l4tX1Zes4+wT7hvpMKnonO/5v5d +z9UxlfeqXKuaq1Wqt5RPXeAfWDwoOPBlhrlmqKa94e4h+7WetS212nXlR/GHM44/LQ+tL73a8bX jQ0KDUUNH4/wjowcDTza02jV2Nik1FTSDDcLm6eORR67+Y3rN50thi21rbTWouPguPD4s2+jvx06 4X2i+yTjZMt3Wt9Vt1HaCtuh9uz2mY74jpHO8M6BUytOdXfZdrV9b/T9kdNqp6vOyJ4pOUs4m392 4VzOudnzqeenL8RdGOuO6n5wcdXF2z0BPf2XvC9duex++WKvU++5K3ZXTl+1uXrqGuNax3XL6+19 Fn1tP1j80NZv2d9+w+pG503rm10DywfODjoMXrjleuvyba/b1++svDMwFDJ0dzhyeOQu++7kvaR7 L+9n3J9/sOkh+mHhI6lH5Y+VHtf9qPdj64jlyJlR19G+J0FPHoyxxp7/lP7Th/H8p+Sn5ROqE42T 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 klSQPCgpLyknKSspI3lAUlpSSlJSUkJSXJIoSZAUkxSVFJHES+IksZIYSWFJIUlByf2SApL8knyS aMl9krySPJIoSW5JLkmkJEISlAQkrsSRWIkJi70ruSP5RZIj+VlyW3JLclNyQ/KT5LrkR8k1yVXJ D5Irku8llyWXJBclFyTnJeckZyXfSb6VfCM5Izkt+VpySvKV5KTkhORLyReS45LPJZ9JPpUck3wi OSo5IjksOST5WHJQ8pHkQ8kByQeS/ZJ9kr2S9yXvSfZI3pXslrwj2SXZKdkh2S7ZJnlbslWyRfKW ZLNkk2SjZINkvWSdZK3Ek6yRrJaskqyUrJAsl7wpeUOyTPK65DXJUskSyWLJq5JFkoWSVyTZkpcl CyT/ksyXzJPMlfxT8g/JHMlsySzJ3yV/k/xV8hfJnyUvSWZKXpTMkLwgmS55XvInyXOSaRLVHqva Y1V7rGqPVe2xqj1Wtceq9ljVHqvaY1V7rGqPVe2xqj1Wtceq9ljVHqvaY0dJ1H+s+o9V/7HqP1b9 x6r/WPUfq/5j1X+s+o9V/7HqP1b9x6r/WPUfq/5j1X+s+o9V/7HqP1b9x6r/WPUfq/5j1X+s+o9V /7HqP1b9x6r/WPUfq/5jVXusao9V7bFqO1Ztx6rtWLUdq7Zj1Xas2o5V27FqO7bpWl/Qmr3EBsXR mb3EwsBUjqZ4iXWByRw9TTzlJeYFJnH0JPEEMZF43EtoDEzwEpoC44lxxFgeG8PRaGIUJ0d6CU2A EcRjxHCeMox4lBjqFWsODCEGE4OILGKgV6wZMICj/kQ/IpPoS/QhMojevK4XRz2JHkR3ohvRlehC dCY6ER2JdKIDkUa0J9oRbYk2RGsilUjxiiYDyUQrr2gK0JJo4RVNBZp7RVsDzYimRBMea8zrGhEN eV0Doj5Rj2c+QtTl5Q8TdYiHiNpELd6sJlGDd6lOVCOq8mZViMq8rhJRkUgiKhAPEuWJcrx1WaIM 7/kAUZooxVuXJErwuuJEIpFAFCOKEkW8Im2BeCLOK9IOiCViOFmYKMTJgsT9RAEey0/k42Q0cR+R l8fyEFFEbh7LRUQSEV58eyDoxacBAcLlpMORJUwI9i5xJ3SK/YWjHOJn4jaP3eLoJnGD+Im47sV1 BH704tKBaxxdJX4grvDY9xxdJi4RF3nsAnGek+eIs8R3xLc85RuOznB0mqOviVPEVzx2kjjByS+J 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 IjPyK8TSMTfSwJ9dcPF4yvTpRqMO/kijnLwV1vLyRh3y/ZGy6NzrrZlXR+cGl+S7C0tCJW53sJBd YUnQXfPjSELRI3d0MforCXIc/QvVHBvuS24XL2PoVcIW/G8teOmb/u+bXO4XuPK3CoN/07z21ZbJ RpFlEiZiAsowHuMQRinGYgxGYxRGYgRCCKIEw/EohuERDMUQDMYgDMQAFKM/HkYR+qEv+qA3eqEQ PfEQeqAA+chDdzwIjVzkoBuykYVMZCAdD8CP+3EfuqILfOiMTuiIDmgPL9rhXtyDu9EWd+FOeHAH bkcb3IZbcQtaoxVuxk1oiRvhxg1ogevRHM3QFNehCa7FNUiDQmM0QipcaIgUJCMJiUhAA9RHPdSF Ew7Ew4442BCLq1EHV6E2aiGmfTV7KywQGEaRsCb/4G/8hT/xB37Hb/gVv+BnXMBP+BE/4DzO4SzO 4DRO4SRO4DiO4SiO4DAO4SAOoAr78T2+w7fYh73Yg2/wNXZjF77Cl9iJL/A5KrED2/EZPsUn2IaP 8RG2Ygs2YxM24kNswHp8gPexDu/hXbyDtXgba7Aaq7ASK1CBCJbjLbyJN2DidbyGZViKV7EEr2Ax FmEhyrEAL+MlvIgX8DzmYx6ew7N4Bk9jLuZgNmZhJmZgOqbhKTyJJzAVj+MxTDGK2pcJ+RfyL+Rf yL+QfyH/Qv6F/Av5F/Iv5F/Iv5B/If9C/oX8C/kX8i8B0AFCBwgdIHSA0AFCBwgdIHSA0AFCBwgd IHSA0AFCBwgdIHSA0AFCBwgdIHSA0AFCBwgdIHSA0AFCBwgdIHSA0AFCBwgdIHSAkH8h/0L+hewL 2ReyL2RfyL6QfSH7QvaF7AvZv9w9fIVv+Zf7Ba7wLblXofHvAC25u3cNCmVuZHN0cmVhbQ1lbmRv YmoNMTEwOCAwIG9iag08PC9TdGVtViA4MC9Gb250TmFtZS9FRElESkIrQ2FsaWJyaS9Gb250U3Ry ZXRjaC9Ob3JtYWwvRm9udEZpbGUyIDExMDcgMCBSL0ZvbnRXZWlnaHQgNDAwL0ZsYWdzIDQvRGVz Y2VudCAtMjUwL0ZvbnRCQm94Wy00NzYgLTE5NCAxMjE0IDk1Ml0vQXNjZW50IDc1MC9Gb250RmFt aWx5KENhbGlicmkpL0NhcEhlaWdodCA2MjUvWEhlaWdodCAtNTMxL1R5cGUvRm9udERlc2NyaXB0 b3IvSXRhbGljQW5nbGUgMD4+DWVuZG9iag0xMTA5IDAgb2JqDTw8L1N1YnR5cGUvQ0lERm9udFR5 cGUyL0ZvbnREZXNjcmlwdG9yIDExMDggMCBSL0Jhc2VGb250L0VESURKQitDYWxpYnJpL1dbM1sy MjZdXS9DSURUb0dJRE1hcC9JZGVudGl0eS9DSURTeXN0ZW1JbmZvPDwvU3VwcGxlbWVudCAwL09y ZGVyaW5nKElkZW50aXR5KS9SZWdpc3RyeShBZG9iZSk+Pi9EVyAxMDAwL1R5cGUvRm9udD4+DWVu ZG9iag0xMTEwIDAgb2JqDTw8L0xlbmd0aCAxMDA4ODQvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0 aDEgMzM4OTAwPj5zdHJlYW0NCkiJbFZ9bBTHFZ/Z3dmdvdvvr9u7vS/7jM9f5zvf2b66ru0jKS2m laAlEoX21BCCQQUH27g0SZFaKYE0TtukkSglKG2qkjikUQkOrg+IwKmchiIqnNZ1IHIEUlWgqdzy Z/+Ilb61DThtR5q5mTezt+/9fr/3ZhFGCAXR9xGLcus3ZvMb3vvhNGJf+DxYH9y2bzgp1LO3YX0M IeZc38CO/nW/fP4WYl98GPblHbsf69P/HfZg/hbCMx/v3L714Ssf7x2B/WGwte8EA4M2RWD9Oqxr dvYPP9p/Jv8RrKcR/lHz7j3btv4k+k8X4b9UEH57d//WRweGnJ5NiDTCcZR8ZGv/9kdGBh9A7OEa hNj4wND2ATK3/hLsJ2F/DN1rBPxn0OPoJMQSQimURQX0XunLN6I3kzdzN1q4WXJFmI3OJq8WbuKb 5JZA9+UOtrxQOF44U3i35Q+F9zEtZIsta3PrCpuUzYU+pa+FFuQuvcsshAqruuq7GgV+dQC7SEUI RhtjVIDuYffUZAZnqt4CYxoT1IJJyV6fw7mW9QVcKOZL+Tfyk3kub7hncRDVoDgOjj/XgBsM0V9L iMXBNy8b2MiW5+cWtDkY52G8UL4yXUY9PfNz5QV/XGjJ4bLfitW8bTmFfHtba23I4lPVtW2t7YW8 E2qtTd3ZKq6wp4V0Mc5TkQgCMSRVUrWgpLbydMkkK3JQ8y32Wv6Lr2lOWDUcw0obnms7bnin7phW WNFtKxy2nHDkW6+zQCJGFG1G30EPAd7mWYRxGGzdJ1mUnUM94GexrWDTPZtFEU7q0LMoAYykxqf5 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 dE5hbWUvRURJRFBEK1NpbVN1bi9Gb250U3RyZXRjaC9Ob3JtYWwvRm9udEZpbGUyIDExMTAgMCBS L0ZvbnRXZWlnaHQgNDAwL0ZsYWdzIDQvRGVzY2VudCAtMTQwL0ZvbnRCQm94Wy04IC0xNDUgMTAw MCA4NTldL0FzY2VudCA4NTkvRm9udEZhbWlseShTaW1TdW4pL0NhcEhlaWdodCAwL1R5cGUvRm9u dERlc2NyaXB0b3IvSXRhbGljQW5nbGUgMC9MYW5nL3poLUNOPj4NZW5kb2JqDTExMTIgMCBvYmoN PDwvU3VidHlwZS9DSURGb250VHlwZTIvRm9udERlc2NyaXB0b3IgMTExMSAwIFIvQmFzZUZvbnQv RURJRFBEK1NpbVN1bi9XWzNbNTAwXThbNTAwXTE2WzUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUw MCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMF0zN1s1MDAgNTAwIDUwMF00N1s1MDAgNTAwXTU0WzUw MCA1MDBdODZbNTAwXV0vQ0lEVG9HSURNYXAvSWRlbnRpdHkvQ0lEU3lzdGVtSW5mbzw8L1N1cHBs ZW1lbnQgMC9PcmRlcmluZyhJZGVudGl0eSkvUmVnaXN0cnkoQWRvYmUpPj4vRFcgMTAwMC9UeXBl L0ZvbnQ+Pg1lbmRvYmoNMTExMyAwIG9iag08PC9VUkkoaHR0cDovL3d3dy5tYXJ0aW5saW5raW5n LmNvbS8pL1MvVVJJPj4NZW5kb2JqDTExMTQgMCBvYmoNPDwvVVJJKGh0dHA6Ly93d3cubWFydGlu bGlua2luZy5jb20vKS9TL1VSST4+DWVuZG9iag0xMTE1IDAgb2JqDTw8L1N1YnR5cGUvSW1hZ2Uv TGVuZ3RoIDI3ODIzL0ZpbHRlci9EQ1REZWNvZGUvQml0c1BlckNvbXBvbmVudCA4L0NvbG9yU3Bh Y2UgMTA4OSAwIFIvV2lkdGggMzk3L0hlaWdodCA2MzMvVHlwZS9YT2JqZWN0Pj5zdHJlYW0NCv/Y /+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBcSFBQUFBIX FxscHhwbFyQkJyckJDUzMzM1Ozs7Ozs7Ozs7OwENCwsNDg0QDg4QFA4PDhQUEBEREBQdFBQVFBQd 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 pCSlSlITJJKXSSSSSpJMkkpUppSSSUqUkkklKhV87+iu+Lf+qarCr5/9Fd8W/wDVNTcnyS8pfkkb hqYJ/Vav6oUc8/owPEj8oUsGPslX9UKGefY0eY/KFkD5R/ej+YZy6ykop1s9GuumlOkkpSb4p0kl KSSSSUqEydJJSyWieEklLaJaJ0oCSlkk6ZJSkkkklK0SSSSUpJJJJSkkk2qSl0ySUoqZNT9/igC5 SNjiNOULQlSWfdlZVbvoyFcpeX1tc7QnUhJVpEkkySVJJSkkhSZOkkpSZJKUlL6JJkiklUeKSSZJ SoSS7pJKUlCXdJJSlW6h/RH/ABb/ANU1WVW6j/RHfFv/AFTU3J8kvKX5JG4auCf1Sr+qEPOP0R2l v5Qp4H9Dp/qD8iFnH3D4t/KFj9IDxiznYuyPyJ0wKdbI2a6k6ZOipSSZOkpUpJJaJKUkkkkpWqSS SSl02iSSSlJkkklLpk6ZJS6aEkklKSSkpIqWSTpklKSSSSU1AVIOIUAnTUM95Ti0ocpSkpMLXeKf cT3QJTgpJQ5bcsCaiXHwQMC7qRydt7S2s9zqr24p9xQ62ENkQkqwcfFOdRynWpPuHiEpHisjNpzQ CaPeewmFkT9ZW3tLK4ZInUERKZxm6MVPXpKFc7G7uSBPxUp809S8pcJtzfFKRwkpSSSSSVJJd0kl KVXqP9Ef8W/9U1WlU6n/AEN/9n/qmpuT5JeUvyVHdq9P/oVH9QIWZO7+038oU+lOJwavIEfiULK5 +LwP+kFjdYD+sGweruDhOmCdbQ2a6k6ZJFSk6ZOkpSSSSSl0ySdJSkydMkpSSSSSlJJJklLyU0pp TykpRKSbX+9LRJSkk6UoqUkmSSUpJJJJTUAH8U8fgmBCdRqUklJSlFVLJ/ypfkTIKUnlMl+VJS8h KUyWqSl5S3KKUpKSbj46Id9djm/o3a+CUwluKPmpxMt/WKyfTqc8Dggj+9VsPM+sjcysPpcKC4B8 wYBOp58F0slLXxTIwo2JSU2mu0HnylKpXC/bLDr4LGy+p51DiNj9O8Ej8EZ5RAWQoB6aQlK4iz60 Z9R9rHkjsWmFtdF+sRzqXG+o1PZoeYPmEo5YyF7f3ldad6VU6p/QbD/V/wCqam/aNHiVV6ln02Yj 2NOrtoH+c1LJOPBL1dJJjuEfST+qtb3bB+RAKHku0aTybGfi9qH0+4VbAeH1g/MSlm2BtLbDwHsc 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 6Jn+aP7lN93NbsR5iN7MmhTUGcKatNNZJJJJKkkkklKSSSSUpJJOkpZPCQCdBKk6ZJBLJNKWqZJS uU8Jk6Kl0k2iSSl0kkkqUpJJJJSkydOYSUxTpQmRQpJJJJCkkkyKlJJ0vFK1LJ0kkrUrRIpJJKWS 0TpklLwnTJ4SSFBSCYBOAmlcFy0EQeDoVQyej4lri6CHHkglaCSjMQdwvBI2cmro9NZ7u7gE6fcr zKQxsAaDSEYgJinRjEbBEiTuWEJoUoTJ6xg3hSUGfRCmeElqySSZBK6SZJFCpTpu6dJSk6ZOglWq dMkkldJME6SlJJdkklKTpk5QUolNJSKSKFwn0TeKdFK6SSfsgpZJJIpJWKbVSKYooWSSKQSWrJKS ZJSktUgnSUsnTJJKX7JoTpJJWShJJFC6WqQToJXEpwEykECvCtUuydN2TVyx8VEqSiUVpYpoUgnT lr//2QoNCmVuZHN0cmVhbQ1lbmRvYmoNMTExNiAwIG9iag08PC9TdWJ0eXBlL0ltYWdlL0xlbmd0 aCA5NTQ3L0ZpbHRlci9EQ1REZWNvZGUvQml0c1BlckNvbXBvbmVudCA4L0NvbG9yU3BhY2UgMTA4 OSAwIFIvV2lkdGggNDc4L0hlaWdodCA5Ny9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0K/9j/7gAOQWRv YmUAZIAAAAAB/9sAhAAMCAgICQgMCQkMEQsKCxEVDwwMDxUYExMVExMYFxIUFBQUEhcXGxweHBsX JCQnJyQkNTMzMzU7Ozs7Ozs7Ozs7AQ0LCw0ODRAODhAUDg8OFBQQEREQFB0UFBUUFB0lGhcXFxca JSAjHh4eIyAoKCUlKCgyMjAyMjs7Ozs7Ozs7Ozv/wAARCABhAd4DASIAAhEBAxEB/8QBPwAAAQUB AQEBAQEAAAAAAAAAAwABAgQFBgcICQoLAQABBQEBAQEBAQAAAAAAAAABAAIDBAUGBwgJCgsQAAEE AQMCBAIFBwYIBQMMMwEAAhEDBCESMQVBUWETInGBMgYUkaGxQiMkFVLBYjM0coLRQwclklPw4fFj czUWorKDJkSTVGRFwqN0NhfSVeJl8rOEw9N14/NGJ5SkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2 N0dXZ3eHl6e3x9fn9xEAAgIBAgQEAwQFBgcHBgU1AQACEQMhMRIEQVFhcSITBTKBkRShsUIjwVLR 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 TldQ6DTnX0WGx1VdDdnpsEaeR7Juo9Aqyq6BjP8Asr8bSotEgDnxC1kkhOQrXZXBHXTdzsPo9dMv ybHZd7mlhst1hp5a0dpVOv6q49WQbGX2spPNTTBg/mlw1hbqSQySF0d1cEdNNnN6h0LDzcaugD0f R/mnM7TyI7ym6b0OjB2uc92RYzRjnnRg/kN4C00kuOVcN6K4I3dKWD9b6bH4FdjdW12AvHkQRK3l FzGvaWvAc12hadQQlCXDIS7KlHiiR3cLpH1g6bX0+mrIs9KypoYWkEzGgIgFWq87K6oduE11GL+d lOEOd5VN/iUZnQ+kss9QYzN3Ookf5p0V4AAAAQBwAnSlCyYg690RjKgCduzn5fRqLqqmUPdjWUT6 VrPpDd9KfGUXC6Vi4jZA9W4nc+9+ryTyZVxJM4jVWnhF3TnN6HiVYmTjUE1/ap3P5Int20Hgo9P6 Dh4eO6pw9Z1jS2x7u7Ty0DsFppI8cu6uCPZwsf6q49N7ni+w0u5qB2yPBzm8hXM3oXT8x9LrGloo G0NZoC390+S0UkjkkTd6qEI1VORkfVzFyM8ZVjj6bWtaKAIb7RAE+Hkln9Abk5dWVRc7FdW0MPpi DA42wRHgtdJL3Jd9hSuCPZxeofV1mRTjU41noNocSSRJO6JdP72isHoWKcCzELnOfaAX3u9zy4ag knw8FpJJccqAvZXBHXTdycH6vYuNVY21zsiyxhrL3dmkQQ0awpZHQcd/TR0+l5pYHBxfEkkfvcSt RJLjld34q4I1VOdX0PBZgPwoJbYB6lh+mSODPl2WSMXEtuf0jpxc4ug5uY73Ha0/QB+K3epV5VuF ZViEC54DQ4mIBMOP3IfSel1dNxvSYd1jtbLPE/3JwnQJJ1vQftWmFkADTu2MXEoxKhVS2B3J1JPi SjJJKMm2QaKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSXyqkkp+qkl8qpJKfqpJfKqSSn6qSXy qkkp+qkl8qpJKfqpJfKqSSn6qSXyqkkp+qkl8qpJKfqpJfKqSSn6qSXyqkkp+qkl8qpJKfqpJfKq SSn6qSXyqkkp+qkl8qpJKfqpJfKqSSn6qSXyqkkp+qkl8qpJKfqpJfKqSSn6qSXyqkkp+qkl8qpJ KfqpJfKqSSn6qSXyqkkp+qky+VkklP1UkvlVJJT9VJL5VSSU/VSS+VUklP1UkvlVJJT9VJL5VSSU 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 cnxydioMF8iIN5jM3Dubz6ZTueqb4lddEKPjgAG4VmiTlw2LvnQv1GCvuJZmFeqEO8/AFePiTM+I Y70ZPf5v1wWOanQSXYAY9ByAhKgcRhMIsX8jTBCvxP+Iwv+PcZZ/a/9+bctHqFQhhsFX/nni1/j8 885/sJe0hZzyPfl3oagsMoz/CjAArUUSDQoNCmVuZHN0cmVhbQ1lbmRvYmoNMTExOCAwIG9iag08 PC9TdGVtViAxMTkuNzc3L0ZvbnROYW1lL0VESUROQytDYWxpYnJpLUJvbGRJdGFsaWMvRm9udFN0 cmV0Y2gvTm9ybWFsL0ZvbnRGaWxlMiAxMTE3IDAgUi9Gb250V2VpZ2h0IDcwMC9GbGFncyA5Ni9E ZXNjZW50IC0yNTAvRm9udEJCb3hbLTQ5MyAtMTk0IDEyMzkgOTUyXS9Bc2NlbnQgNzUwL0ZvbnRG YW1pbHkoQ2FsaWJyaSkvQ2FwSGVpZ2h0IDYyNS9YSGVpZ2h0IC01MzEvVHlwZS9Gb250RGVzY3Jp cHRvci9JdGFsaWNBbmdsZSAtMTU+Pg1lbmRvYmoNMTExOSAwIG9iag08PC9MZW5ndGggMjE1L0Zp bHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpo3lRQMW7DMAzc9QqOLTpIdjMaBop08ZC2qN3uikS7 AmJKoOXBv48kOAk6kASPPNyR8ti9d+QiyC/2pscIoyPLuPiVDcIZJ0dQ1WCdiXtXspl1AJnI/bZE nDsaPTSNkN9puETe4GkYqhf1DPKTLbKjKSGH+uc3If0awgVnpAgK2hYsjkIeTzp86BlBFuIDHLaA UJe+2rW9xSVog6xpQmiUUq/trSDZ//Mb6zyaP83isf2mWpG2dzzz8k13H2ZlThbL4cVItuAI778J PmS1HOIqwADUTWpvCg0KZW5kc3RyZWFtDWVuZG9iag0xMTIwIDAgb2JqDTw8L0xlbmd0aCA4MDE3 L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGgxIDIwODYwPj5zdHJlYW0NCmje7Jp3fFRF18fPLVvS C0UgCblhSQBTpTdhSSMQWgiLWRBISAKJQhJT6GisYJSiKBak2FCMyCYUA6ICoqhIUUGwAQIqgijS VEru+5t7Nhgiz/P4fj5v+Seb/PY7c+ZMuTPnzkw+QBIReVE5KRQ3ND22Y8Hi0kuwbIYys6eUakMq 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 Nw0PCfDx8/H1tQSHBlssgX6etlvTri7zCNZCPH18PfybeXuFhLb29PW2+jW/Gub+H5jDGtWoRjWq UY1qVKMa1ahGNapRjWpUoxr1vy3ypTfwrZD45BjfIm2hS8hJxJ+O0lh3WqGW0kJ3WkV6lTttRnqb O22h2dLXohXVA5ZgOcOdlslXLnWnFeoo3+dOq0ivc6fNSP+AtIQ0xqO0cKcxHmUWrSKNOlIcfroi NZjyKZuKqZBKoAlUClsCUsVUZHxnwZKPVAHFoKQfTcKPRsNhm0h5KCsxcrlgLryn4DsHngmoNwk+ 42HLh0e+4ZcLlqKW8NTgoYG5aEeUlhpWUVtDWvSbg9xksJjuhK3wWp0bl074bz2LGFGB0ZYYjUYO 5PKNMYj+05HKMnIlRp8FsMa6R1BY7wmykStDaanxlMI7ZpXWMS6uqzY4P7u4sKRwQqmWUFhcVFic VZpfWBCj9Zs0SRuePzGvtEQbnluSWzwlNycmKXFA4pD4yISsSfnji/Oj4wsn5QwoRSb7v1/gtmj5 JVpufmlebrGWpRXnTswvKc0tzs3RSouzcnInZxXfqRWKknrZCTcesJZfoKEZzVGQX4r66aVZpbkl WlZBTiwaKDQ6yC4sKygtzs8tiaEkSqQB0BCKp8gGETDcWOcyWMSK/TvPaNgKkc+BR6m7JPv/pEbj e/G/+F6IXU3Non3Yg1yQTP6omUnkfVRqhr3L+Bc68e8DwSFbu43z632BWlqNbfCtU7M+Edwaf8L7 il9ticdJyzJkxT5o7JP/JcAAOPKADgoNCmVuZHN0cmVhbQ1lbmRvYmoNMTEyMSAwIG9iag08PC9T dGVtViAxMTkuNzc3L0ZvbnROYW1lL0VESUROQitDYWxpYnJpLUJvbGRJdGFsaWMvRm9udFN0cmV0 Y2gvTm9ybWFsL0ZvbnRGaWxlMiAxMTIwIDAgUi9Gb250V2VpZ2h0IDcwMC9GbGFncyA2OC9EZXNj ZW50IC0yNTAvRm9udEJCb3hbLTQ5MyAtMTk0IDEyMzkgOTUyXS9Bc2NlbnQgNzUwL0ZvbnRGYW1p bHkoQ2FsaWJyaSkvQ2FwSGVpZ2h0IDYyNS9YSGVpZ2h0IC01MzEvVHlwZS9Gb250RGVzY3JpcHRv ci9JdGFsaWNBbmdsZSAtMTU+Pg1lbmRvYmoNMTEyMiAwIG9iag08PC9TdWJ0eXBlL0NJREZvbnRU eXBlMi9Gb250RGVzY3JpcHRvciAxMTIxIDAgUi9CYXNlRm9udC9FRElETkIrQ2FsaWJyaS1Cb2xk SXRhbGljL1dbM1syMjZdXS9DSURUb0dJRE1hcC9JZGVudGl0eS9DSURTeXN0ZW1JbmZvPDwvU3Vw cGxlbWVudCAwL09yZGVyaW5nKElkZW50aXR5KS9SZWdpc3RyeShBZG9iZSk+Pi9EVyAxMDAwL1R5 cGUvRm9udD4+DWVuZG9iag0xMTIzIDAgb2JqDTw8L0xlbmd0aCAyMTUvRmlsdGVyL0ZsYXRlRGVj b2RlPj5zdHJlYW0NCmjeVFAxbsMwDNz1Co4NMkhxMxoGinTx0LSone6KRLsCakqg5cG/jyQ4CTqQ BI883JHy1L635CLIL/amwwiDI8s4+4UNwhVHR3CowDoTt65kM+kAMpG7dY44tTR4qGshv9NwjrzC S99Xe7UD+ckW2dGYkGN1+UlIt4TwhxNSBAVNAxYHIU8fOpz1hCAL8Qn2a0CoSn/YtL3FOWiDrGlE qJVSr829INn/8zvrOphfzeK5/aYakbY3PPPyTQ8fZmFOFsvhxUi24Agfvwk+ZLUc4ibAANXqanEK DQplbmRzdHJlYW0NZW5kb2JqDTExMjQgMCBvYmoNPDwvTGVuZ3RoIDIxNS9GaWx0ZXIvRmxhdGVE ZWNvZGU+PnN0cmVhbQ0KaN5UUDFuwzAM3PUKjg0ySHHTzfCSLh6aFrXTXZFoV0BNCbQ8+PeRBCdB B5LgkYc7Up7a95ZcBPnF3nQYYXBkGWe/sEG44ugIDhVYZ+LWlWwmHUAmcrfOEaeWBg91LeR3Gs6R V3jp+7e92oH8ZIvsaEzIsbr8JKRbQvjDCSmCgqYBi4OQpw8dznpCkIX4BPs1IFSlP2za3uIctEHW NCLUSqnX5l6Q7P/5nXUdzK9m8dyuVCPS9oZnXr7p4cMszMliObwYyRYc4eM3wYeslkPcBBgA1k1q aAoNCmVuZHN0cmVhbQ1lbmRvYmoNMSAwIG9iag08PC9Dcm9wQm94WzAgMCA1OTUuMjIgODQyXS9B bm5vdHMgMiAwIFIvUGFyZW50IDEwNzYgMCBSL1N0cnVjdFBhcmVudHMgMS9Db250ZW50cyAzIDAg Ui9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1LjIyIDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFj ZTw8L0NTMCAxMDg5IDAgUj4+L0ZvbnQ8PC9UVDAgNTUgMCBSL1RUMSA1NCAwIFIvVFQyIDUxIDAg Ui9DMl8wIDU2IDAgUi9DMl8xIDU3IDAgUi9DMl8yIDUyIDAgUi9DMl8zIDUzIDAgUj4+L1Byb2NT ZXRbL1BERi9UZXh0XS9FeHRHU3RhdGU8PC9HUzAgMTA5MCAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVu ZG9iag0yIDAgb2JqDVs1OCAwIFJdDWVuZG9iag0zIDAgb2JqDVs0IDAgUiA1IDAgUiA2IDAgUiA3 IDAgUiA4IDAgUiA5IDAgUiAxMCAwIFIgMTEgMCBSXQ1lbmRvYmoNNCAwIG9iag08PC9MZW5ndGgg OTIxL0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpIicRVbY/bNgz+7l/BT4M0NDq9WLY8HA7Y JdnWoQFanIFiuBaFz3ESb4l95yhY219fUnY859rt21AYFhRRJh8+fMg8RRJcrMFmVkgNMxcr4RLo qujtj9BET8GsRObCjeEC/qILaL+a30kojyCFTRNaTYqr0RbgWKL5VzRvj+REWuHGMCYRKgTZRG/w uc2jq9dwfX21mr9cgNFwc3O7mEOkYDu6uMpzCQryTaQwDEh8wsakQsXgjBVpIg3kh4gBz/+Mlit0 MPVqzl5nUkgp0VUJtNP40d+Ah5nLYKZE7CBfR/fstjp6eN0Vpa/L6gibtoNVUe7qpur4TCn2iauM wavTQ1eXha/bhr/Pf0dC9IcBpwwRyLki52fIuNNGgdNSaN0jvkY85gZBXySJPA2f4E4jZVZffNXn ieREUsRZSqHWw+EUhdCpdQRFDf7QWYzO4q8h/N8vpRhqOqbZ18ISvLBV2cDXRfImS4V0F3jv2aro fN3Aq7r5q262WKl2Ux25ZfTWXLO2KfaQcxszqhcr6gav/UeNRnZskonMZNm3SxR0tcynyies/dqr 3iYihTSJiePYZUImoIxIXC/4S7HLC60/48X1GtU6+RYrQ5hkFP49+4OnhrWnDrjWjv1SlPW+9lyn rPBt91N/SkSJfrsoPu9a5I5rE7O33BhWIHl0kDCA77dSkZ73rzoTJXui1JSoZGxmR0xlgaUsMJRA apVI4lE2HbeaCcB0kRbMtT4O2jlih7cb+K1AvTj2gBJCeb1sjr72J1+RiSvDcq5kzCq0lrum3bd8 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 LjIyIDg0Ml0vQW5ub3RzIDEzIDAgUi9QYXJlbnQgMTA3NiAwIFIvU3RydWN0UGFyZW50cyAyL0Nv bnRlbnRzIDE0IDAgUi9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1LjIyIDg0Ml0vUmVzb3VyY2Vz PDwvQ29sb3JTcGFjZTw8L0NTMCAxMDg5IDAgUj4+L0ZvbnQ8PC9UVDAgNTUgMCBSL1RUMSA1NCAw IFIvVFQyIDUxIDAgUi9DMl8wIDU2IDAgUi9DMl8xIDUyIDAgUi9DMl8yIDUzIDAgUi9DMl8zIDU3 IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9FeHRHU3RhdGU8PC9HUzAgMTA5MCAwIFI+Pj4+L1R5 cGUvUGFnZT4+DWVuZG9iag0xMyAwIG9iag1bNjIgMCBSXQ1lbmRvYmoNMTQgMCBvYmoNPDwvTGVu Z3RoIDQwNDYvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJzFfbjttGEn3XV/TLLsgg4rCb 94VhYz02NlnEWGctwA/eRUBJLYkxRcokNc7k6/dUNa8SpfVLgGAwHE6zL1Wnqk6d/rJwRewrESSB 4yqxjH3pxKGo9OLjd6JYfOHP0klintFOwH80Ad8fHj+4YlML1wmikJ5ehKenAiHqDT7/A5/3NTaJ ksjx4+4Y33cC2mK3+Bk/r1eLh/fixYuHd48/vhGhFC9fvn7zKBZS7PsdHh7VL66QYrVbSCVc/OAP TPFFrCJH+a4nVsfFC9d1vZerXxdv32H9eFPVbfqwWrX7LF0H0/G6EfSmsMNXIeGD2Z5eVOiEOEEC E2VO+GS91nUj3lfppsk2uha7shLv0s0hK3RlL6W0nm2ZWOKn87rKNmmTlYX939U/x/a7fGJ7GKBs T8Ob8lwnjifn9R4NdmOuq7pVeFNe6EyNtISNFcBt4Tp+EtFh23ZwbIejoiAmYwZElY+91LUFf/Qv ecjhvohOQObxq0xaxCa+e0noJOFFhN6lVZMV4qes+JwVe8Sq3OnaDiz6zWxllUWai5Ud+BZFzEqz AtPuRKlHJwgTJ5ZJMh+hy5xzu5SjQNDO0uyc8HYJdnMiEYWRI+Nup/DRHcVbjpCQXpenXkBGfbLe V/pJF032ZC9jS4u/wk+9zZCVT1q8LexlYO3pkdnSKjS96arGrA/nEyVqbD1ldVn1XqtLr5Vy2HFk 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 MCAwIDU5NS4yMiA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgMTA4OSAwIFI+Pi9G b250PDwvVFQwIDU1IDAgUi9UVDEgNTQgMCBSL1RUMiA2MyAwIFIvVFQzIDUxIDAgUi9DMl8wIDU2 IDAgUi9DMl8xIDUzIDAgUi9DMl8yIDU3IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9FeHRHU3Rh dGU8PC9HUzAgMTA5MCAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9iag0xNiAwIG9iag1bNjYgMCBS XQ1lbmRvYmoNMTcgMCBvYmoNPDwvTGVuZ3RoIDQwNzgvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJl YW0NCkiJzFfbjtvKEXzfr5hH6sCiOTO8AoYX8NpIHNjISbyAH5wg4FIjiWclUiaptb1fn+oe3kRR shMgQGCYS3HImb5UdVd/vfFE7CsRJIHrKbGMfenGoajMzeffRHHzlZelm8T8RvsCftELWH9598kT WS08N4hCuuoIV60CIeoMy3/C8qamTTzl4o32GJ24StEe65u/4d+b+5uXv4tXr15+vHv/ViRSvH79 5u2duJFi02/x8k79yxNS3K9vpBIe/uGPr1wtYq3cQHla3O9vXnmep1/f/3Hz7iO+H2+quk1f3t+3 +yw9F6/jNhN0p7DDNyHhhN2eblTserGIZeR6vj3hi/PG1I34vUqzJs9MLdZlJT6m2TYvTLVYSun8 WMjEER+OD1WepU1eFot/3v9lbL/HJ7aHIZbtabhTcEWrk/N6jwa78a6nuq9wp3Tkxv7JV45Y4BME 7sZz/SSi01btw7EhroqCmKwZQqr8iABwZsL/+j+5yPmepCcg8/hWJm3ITpzXSez6kwx9TKsmL8SH vHjMiw1yVa5NvQgc+p8vlFMW6U7cLwLfoYw5aV7gtStZ6oMTRNJVQZLMZ4gx9+5+RIoolLjGOsE1 BJCYFJFyZSyiwCcOxBEQrABgy4ZTJgQ9E8Ap2kkjzZ4rg6il12mstE3lJEBx4vqhgCVuGA4BWix9 Jy/o2iyWoWPoruCn/DAzguMxpZHXG2RTJUexSvjQRAShG+G8CF6OwTjdqvfNJld1NNQ+xRyVRrsq jhi30p3boGf0FxywjOPIIc7hzgHviqYWqwoOUcbhYFG/EOvdsd6S04GzAQpEyrcrRL421VNp35VO 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 cgOQS2uyREabSPqvjYPw3WPztFlSnzTtNnaBo+SXHc2L9bFOmQsbqHGh8B9mCGWvMEOcGArVUHEo iydhrDi7IU5lO8dz8Pb4MGKCwwf/cM/8+LrE/+gc5uXGgsbb0pSt0f2lo8DRbFaYBKpRrNlJuvdK Xw3jNa9InOKzt0Fie4HERXWtU/dj65aONH1BA1p+/3HmWmHRsEKjqmGgzcQus3o1iLXMg/jKUK1V bU5KCgtdDOK3q00+vzZ3fsTFo3dQmj7fJm6IY+yMK8jNILe753m13M7mql1tofW8KnZ1yj0WW1+A 3HWxzSmM7tP5FyfJOUBzqIcg5xf0xAI33zWqk9jvRLXUNk83nbzi4n7uN5gemdBYwSxEhmsD7o0w WYHuUPuJABUIkPG2eY0U6JEI1B/maioKiKECriAFZhO4CtUJQoaOl8FVl8HVZa5IPWaYcivqdCfw ANtpHmfJBZATljavxxUwZ7tzlfAm/AhOBaO++/TleXsf0PQCLEU1xHySPecImv7E3RaxpQYFsmrm VgL4NR30wzfNGC4zoltaERYMTokPuL4nG2U0vQpCG8GDkj1xTtpcsKThG/wd6Ghr80nHjXZhmp9O A+eY7mQcmdzR3PH0/iMpFfwi9lk1OL+AOhATg2g3eOXt90VZMeENodkn7fabTUGCE9u5MP/Wagr0 w60wDfXDya0iJ3EMin4rbks7FW53uSP9YzjQvve5opVCrefFo/GO+njNnv2GE3uQfFRjOHY93DF5 ibY1k23zQejt03Lc+3yKF9Pn+sRh8aFfKXXDixZt93n5vFvjXONmPf6xHh86dIJitRv6MsnDWjbw EFOIzBBUPeU5PC6zwCIeITDR7eFb+PL/XSuHM1f8OD2UsB1GyTxH2l9RGgHY6EzMoCKWwgLpLeph MY1zcRibnTEi0FIK9UleysH4HVUvXua/TKvy3wIMAIMGJO0NCmVuZHN0cmVhbQ1lbmRvYmoNMTgg MCBvYmoNPDwvQ3JvcEJveFswIDAgNTk1LjIyIDg0Ml0vQW5ub3RzIDE5IDAgUi9QYXJlbnQgMTA3 NiAwIFIvU3RydWN0UGFyZW50cyA0L0NvbnRlbnRzIDIwIDAgUi9Sb3RhdGUgMC9NZWRpYUJveFsw IDAgNTk1LjIyIDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCAxMDg5IDAgUj4+L0Zv bnQ8PC9UVDAgNzMgMCBSL1RUMSA3NCAwIFIvQzJfMCA2NyAwIFIvQzJfMSA2OCAwIFIvQzJfMiA3 MCAwIFIvQzJfMyA3NyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vRXh0R1N0YXRlPDwvR1MwIDEw OTAgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTkgMCBvYmoNWzcyIDAgUl0NZW5kb2JqDTIw IDAgb2JqDVsyMSAwIFIgMjIgMCBSIDIzIDAgUiAyNCAwIFIgMjUgMCBSIDI2IDAgUiAyNyAwIFIg MjggMCBSXQ1lbmRvYmoNMjEgMCBvYmoNPDwvTGVuZ3RoIDU5OC9GaWx0ZXIvRmxhdGVEZWNvZGU+ PnN0cmVhbQ0KSInklEuL3DAMx+/5FDoXxiPZ8gtCIM+lhYGWBnpYlh6m3YVCC7tz6Nev5JnJZqb0 Ad1bCXHsSP5Ltn72Y4WQ2ILP3qCFTWIyKcDT5+rDK/hWPRYzmZyKx8lBRuog9m3/HmF/ADQ+Bm1d lNZZD3DYi/lGzA8HEYk5m5TOYdgaUon76p083Vxt30Jdb3f96wFcgKbphh4qgodFYdvbjwgE831F FlAe+UgqBMlmExEdzF+rGqXTzF+qcSfz16LxWfSmQmMZvovaDoowHYXRIDLDvAcL85OE2JBx5GEe RLh1ybYuWDcE65EcDVTG6Im8mzToKkeJEF1WKVSpktc5N1lPsfug9sX0r2+RVtmospQMRg3+qXqR CIu6V/UkhfYvpK7KpdK/LIQsxZ2Cecy9tVJuT4wtTeLm5G1xtJlpGK7LsFRgpXHByDivGRY0T+2R 3yzgem8ESSb5WCA2gY/kXlKLa2hlo0j4ul7SsTJlSSRhjhRrp4RJhtOJYqbREruEPHWOp59WJXUg WpZ2+0zXJjz37+Y3v0kgyDE8bchtbXPX4eQjsh+oS7kJNeUuLRKruCEtceUkUzxL/FWlV9mF/2ZG s+H6z7OajUd38bfs/vU9RmfMyiWipdgQGWS9qjjyBd+r4ufCWi6g2WhiOIImZWunRJbZekokjJez JCQQ5aAkKAZo+9RQwlrxwMEONISWxhF1gkPXqTN6bqnNmToKZZxc+ad3JLLgdS3CqjC5eL5IMcdJ J+iJ5rEX9ge2LlJh0k9yDPpA0j9fwOpHNIYifAc/BBgAPjdnag0KZW5kc3RyZWFtDWVuZG9iag0y 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 aoex7s0CX4Cd9g6kbFHcQBx4JVJJzR1HSo99PO0sqsTfGqgoDK5xRkW4jUIm+iq3zzfwuN8m08TZ Ym+gf9VA94+EHHydbdDZslvErDE0dAC3uhMXJX/UcabmeKGrvIjuVMTeKOXaHvYqhj8CDACgVUvL DQplbmRzdHJlYW0NZW5kb2JqDTI4IDAgb2JqDTw8L0xlbmd0aCAzNTMvRmlsdGVyL0ZsYXRlRGVj b2RlPj5zdHJlYW0NCkiJrJJvS8MwEMbf91PkZYs0vbs0aSulMNsKCgPBvCsiY+KYuioi7OubpP+2 6twbCyXp5fJ77npPkwOAsG+hpu2DvvWQbbyopEdkyPSzB0yvWZPDokpjQqIEK3NDxPW1y460hi7R vwz0i7spuoDipDJm7j95TqGwx2M6cBOLLRw4UZ/nX6RqRnH6yCX8jcJkjqL0dxIgniSFFpXNUY2v ghDRl5IC1/OMSeeZ80YbH4NQ+STlDyKnRKUDNjnADuh6WTIvuv9YtSzPo2V5UzGRsaK4qmz8WBcc CQfRvRXd7wMlfL5bfX5t27dt+7ptN3z9vnOVdPC7kRzDQAbrC61xLBMzcnCjQ0YA+h0pwU2/KLlI QTC9M7rMPFZ6Wmaf3fKvZ8EpM5sy5VCvZJKIZ+qw3FygLI9naKbVe6kHGUNi3M8mrheymFnNDNFY oneu6H//NMVQnd+P06i1x74FGADD3sVlDQplbmRzdHJlYW0NZW5kb2JqDTI5IDAgb2JqDTw8L0Ny b3BCb3hbMCAwIDU5NS4yMiA4NDJdL0Fubm90cyAzMCAwIFIvUGFyZW50IDEwNzYgMCBSL1N0cnVj dFBhcmVudHMgNS9Db250ZW50cyAzMSAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NS4yMiA4 NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgMTA4OSAwIFI+Pi9Gb250PDwvVFQwIDc0 IDAgUi9UVDEgNzMgMCBSL0MyXzAgNjcgMCBSL0MyXzEgNjggMCBSL0MyXzIgNzAgMCBSL0MyXzMg NzcgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL0V4dEdTdGF0ZTw8L0dTMCAxMDkwIDAgUj4+Pj4v VHlwZS9QYWdlPj4NZW5kb2JqDTMwIDAgb2JqDVs3OSAwIFJdDWVuZG9iag0zMSAwIG9iag08PC9M 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 n0mpQwV1U8Q0uRYLzTKfFrJlp5xrKCCUEIZel+I4L3+9o3tkznWBXW6a5ZJ0cZSAS15DzgSowKuy HTEVJgv0Vv9lrMuRHfWCURffZnuOBcGuMwowAMP/a30NCmVuZHN0cmVhbQ1lbmRvYmoNMzIgMCBv YmoNPDwvQ3JvcEJveFswIDAgNTk1LjIyIDg0Ml0vQW5ub3RzIDMzIDAgUi9QYXJlbnQgMTA3NiAw IFIvU3RydWN0UGFyZW50cyA2L0NvbnRlbnRzIDM0IDAgUi9Sb3RhdGUgMC9NZWRpYUJveFswIDAg NTk1LjIyIDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCAxMDg5IDAgUj4+L0ZvbnQ8 PC9UVDAgNzQgMCBSL1RUMSA4MiAwIFIvVFQyIDgzIDAgUi9UVDMgNzMgMCBSL0MyXzAgNjcgMCBS L0MyXzEgNjggMCBSL0MyXzIgNzcgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL0V4dEdTdGF0ZTw8 L0dTMCAxMDkwIDAgUj4+Pj4vVHlwZS9QYWdlPj4NZW5kb2JqDTMzIDAgb2JqDVs4NCAwIFJdDWVu ZG9iag0zNCAwIG9iag08PC9MZW5ndGggMzYxOS9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0K SIncV02P3MgNvc+v0CkYLzAyWcX6AhoDSCrJSIBdJHADOThBDk52gQAJsPbBfz+PpY9Wa9TT3bPG HmJjenpa1SySj3x8/PWBqiimcsnVZKqnKFxHX33518Nff6j++/Brecx1iuXEdAB/6QE8f999pOrz 14pqF7y+2oBXa1xVff2Mxx/w+JevMBKSr3FiukZgyqiNnx/+gv/t8eH9n6vD4f2P3R9zFUP1/Nzm rnrg6pfFxPvO/IMqro4/P7CpCP/xC75wFY2vnSFbHf/zcCAi+3z890P/I76/NhpPRj88UG2k+gZr P1bFMI+GqSYSqY6fK1Mdv+CKJ0Ys1THDbmOjaaw3NnvjiC1nLn+TY3Z20DtXLuKCYJNaIrVU3Jpd QzjlufP6fHn0W3+KaTUb1CzHmoJe/s+H73LDYt2p9Qig3XeyrpYL0BdxQCh2usxR6owJhKwLNTzg mMVPQ71JwjlvYVgQWNm4VCI0V4gC9P54nGw8qTdaXZ+rVOouVUyxCi7WyY9V9+jqdzsGeTb4WL2b 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 yrppvlzWSiHq1UTodRa6sxW1kQOQoCynIxclVCS/k43kNumNPnUOPmdhA+vJMPADQJlbXpqJoDxl QdUo6rlBlaGkN7tQ9sqfDEUOQxlRhVJgNPVikTQVjOqCkejNWBWIpj6XniKc7N0unh2Zk/HosWk9 NI02GRbrzpfFOqzLqYgzqJHoA6/ntmOPSCT/OiNZ6PoGPPNG7MW2PIIHeIoxtzAYK4DwtddU+WbD 59ix+Rnj2ocVcQGeokcd3hoAFj4V61slI94KFrvJuBLxzc/YeHD6qTcD3mcztpLOhooqZyyysCAD i3EKhgEbhqztbnl+ULSXZxSrN3vEDex0IHP2ldKHNABVHIAvVyWZschK3aQzTfNuOaeD+WUzsuO6 5Qtve1bC/lQZcdoUub4p6cctCaJJS6Ef676pD0u7WhMtjZGrMUYjz9vsBwoSslrbpTRmYDHlj826 zGzJiG5/fDymaqhzmMz3FU0ltJs+8qaPjyurltX9x5+/7o7f7o5f745fqk/f70dJRk1FnXW8ogLx lrHMApUW8U5aVfmy1pjCLHjr7tJ7bC5P+ttqqpjLvjBSgRrm7iau0Z0lBrhpkUm1ZZVwhVs5ZEkf NqbH6LN2rHQdbYw33+D2dUoIAOi3AAMAYmmnNQ0KZW5kc3RyZWFtDWVuZG9iag0zNSAwIG9iag08 PC9Dcm9wQm94WzAgMCA1OTUuMjIgODQyXS9QYXJlbnQgMTA3NiAwIFIvU3RydWN0UGFyZW50cyAx NS9Db250ZW50cyAzNyAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NS4yMiA4NDJdL1Jlc291 cmNlcyAzNiAwIFIvVHlwZS9QYWdlPj4NZW5kb2JqDTM2IDAgb2JqDTw8L1hPYmplY3Q8PC9JbTEg MzkgMCBSPj4vQ29sb3JTcGFjZTw8L0NzNiAxMDg5IDAgUj4+L0ZvbnQ8PC9UVDIgODUgMCBSL1RU NCA4NiAwIFIvVFQ2IDg3IDAgUi9UVDggODggMCBSPj4vUHJvY1NldFsvUERGL1RleHQvSW1hZ2VD XS9FeHRHU3RhdGU8PC9HUzEgMTA5MCAwIFI+Pj4+DWVuZG9iag0zNyAwIG9iag08PC9MZW5ndGgg NTM5MzkvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJtFdbb9vIFX4X0P9wXgpQTUSTQw4v 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 ENrRIrSDLcjlJY9w4wva7WC6hPY5NiFuBeX7cXnS2/9AnqDJi4dToIBtP6JQ0kcUSm6uUBBJoeTm CiW336JQ4tZgMD5donSXKH1KlP6qRMnvVCj55wSKK6EbhXL9cvnzrz++XP4TYAAwYoLLDQplbmRz dHJlYW0NZW5kb2JqDTM4IDAgb2JqDVsvSUNDQmFzZWQgMTEwNSAwIFJdDWVuZG9iag0zOSAwIG9i ag08PC9TdWJ0eXBlL0ltYWdlL0xlbmd0aCA5MzYyL0ZpbHRlci9EQ1REZWNvZGUvQml0c1BlckNv bXBvbmVudCA4L0NvbG9yU3BhY2UgMzggMCBSL1dpZHRoIDQ3OS9IZWlnaHQgOTgvVHlwZS9YT2Jq ZWN0Pj5zdHJlYW0NCv/Y/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8V GBMTFRMTGBcSFBQUFBIXFxscHhwbFyQkJyckJDUzMzM1Ozs7Ozs7Ozs7OwENCwsNDg0QDg4QFA4P DhQUEBEREBQdFBQVFBQdJRoXFxcXGiUgIx4eHiMgKCglJSgoMjIwMjI7Ozs7Ozs7Ozs7/8AAEQgA YgHfAwEiAAIRAQMRAf/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEA AAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGh sUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0 lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhED ITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2 dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQAC EQMRAD8A9VVHO6z0zp525eQ2t/OzVzv81slW7S8VPNYl4ado840XkeRZdZfY/IJNznE2F3O6dZU2 DCMhNmgPtY8k+HYPeW/XrozJDGXWRxDQAf8AOcFX/wCf+DP9Ft2zzLZj71w6StjlMXifqxe9N9Dx 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 hg8tDvBXMvoeBlY9eOWmtlRlhZodeeZ5WikkckzWp02UIR103cjM+rmJk2Y8PdVTjt2CpvcTPPZP 1HoFOU3HGO/7KcfRhYO3PiNVrJI+5PTXZXBHXTdx8z6vsu6f9mpsi02Cyy6z3Oe4Aj3H5o2L0THp xn1WudfZawsfa/V20iNrZmAFpJIe5KqvrauCN3TkdN+ruPh2C2yx2Q5v82HCGt8w3XVFHQ8SvAvw 8cmsX/Ss5d5eGgWkkkZyJu1CEezm4PQ8PExn0keq61pZZY7ktP5o8AsqzFw8TI/Z3T912deNjrnn d6VZ5+Gi6LJ9b7PZ6ABu2n0weN0aKj0bo46ex1lrvUyrdbbPxgJ0Z6Ek/TxWyhsAPq2On9Ox8CkV 1CXQA6w/SMK2kkmEkmyvAA0CkkkkEqSSSSUpJJJJSkkkklKSSSSUpJJJJSkl8qpJKfqpJfKqSSn6 qSXyqkkp+qkl8qpJKfqpJfKqSSn6qSXyqkkp+qkl8qpJKfqpJfKqSSn6qSXyqkkp+qkl8qpJKfqp JfKqSSn6qSXyqkkp+qkl8qpJKfqpJfKqSSn6qSXyqkkp+qkl8qpJKfqpJfKqSSn6qSXyqkkp+qkl 8qpJKfqpJfKqSSn6qSXyqkkp+qkl8qpJKfqpJfKqSSn6qSXyqkkp+qkl8qpJKfqpJfKqSSn6qSXy qkkp+qkl8qpJKfqpJfKqSSn6qSXyqkkp/9kKDQplbmRzdHJlYW0NZW5kb2JqDTQwIDAgb2JqDTw8 L1N0ZW1WIDIwMC9Gb250TmFtZS9BcmlhbC1CbGFjay9Gb250U3RyZXRjaC9Ob3JtYWwvRm9udFdl aWdodCA5MDAvRmxhZ3MgMzIvRGVzY2VudCAtMzA5L0ZvbnRCQm94Wy0xOTQgLTMwNyAxNjg4IDEw ODNdL0FzY2VudCAxMTAwL0ZvbnRGYW1pbHkoQXJpYWwpL1hIZWlnaHQgNTE1L0NhcEhlaWdodCA3 MTgvVHlwZS9Gb250RGVzY3JpcHRvci9JdGFsaWNBbmdsZSAwPj4NZW5kb2JqDTQxIDAgb2JqDTw8 L1N0ZW1WIDEzNi9Gb250TmFtZS9UaW1lc05ld1JvbWFuUFMtQm9sZE1UL0ZvbnRTdHJldGNoL05v cm1hbC9Gb250V2VpZ2h0IDcwMC9GbGFncyAzNC9EZXNjZW50IC0yMTYvRm9udEJCb3hbLTU1OCAt MzA3IDIwMDAgMTAyNl0vQXNjZW50IDg5MS9Gb250RmFtaWx5KFRpbWVzIE5ldyBSb21hbikvWEhl aWdodCAtNTQ2L0NhcEhlaWdodCA2NTYvVHlwZS9Gb250RGVzY3JpcHRvci9JdGFsaWNBbmdsZSAw Pj4NZW5kb2JqDTQyIDAgb2JqDTw8L0xlbmd0aCAyMTcvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJl YW0NCmjeVFC7bsMwDNz1FRxbdJDiFpkMA0W6eOgDtZNdkWhHQE0JtDz47ysJToIMJMEjD3ekPLQf LbkI8oe96TDC4Mgyzn5hg3DG0RHsKrDOxK0r2Uw6gEzkbp0jTi0NHupayN80nCOv8NT3+xf1DPKb LbKjMSFv1fGUkG4J4Q8npAgKmgYsDkIePnX40hOCLMQ72K8BoSr9btP2FuegDbKmEaFWSr0214Jk H+dX1nkwF83ivv2uGpG2Nzzz8k03H2ZhThbL4cVItuAIb78JPmS1HOJfgAEA3F5qeQoNCmVuZHN0 cmVhbQ1lbmRvYmoNNDMgMCBvYmoNPDwvTGVuZ3RoIDIxNi9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0 cmVhbQ0KaN5UULtuwzAM3PUVHFt0kOI2m2GgSBcPfaB2sisS7QioKYGWB/99JcFJkIEkeOThjpSH 9qMlF0H+sDcdRhgcWcbZL2wQzjg6gl0F1pm4dSWbSQeQidytc8SppcFDXQv5m4Zz5BWe+n7/op5B frNFdjQm5K06nhLSLSH84YQUQUHTgMVByMOnDl96QpCFeAf7NSBUpd9t2t7iHLRB1jQi1Eqp1+Za kOzj/Mo6D+aiWdy331Uj0vaGZ16+6ebDLMzJYjm8GMkWHOHtN8GHrJZD/AswANrBancKDQplbmRz dHJlYW0NZW5kb2JqDTQ0IDAgb2JqDTw8L1N0ZW1WIDEyNC9Gb250TmFtZS9ET0tFTkQrQ2FsaWJy aS1Cb2xkL0ZvbnRTdHJldGNoL05vcm1hbC9Gb250RmlsZTIgNDYgMCBSL0ZvbnRXZWlnaHQgNzAw L0ZsYWdzIDQvRGVzY2VudCAtMjUwL0ZvbnRCQm94Wy00OTMgLTE5NCAxMjM5IDk1Ml0vQXNjZW50 IDc1MC9Gb250RmFtaWx5KENhbGlicmkpL0NhcEhlaWdodCA2MjUvWEhlaWdodCAtNTMxL1R5cGUv Rm9udERlc2NyaXB0b3IvSXRhbGljQW5nbGUgMD4+DWVuZG9iag00NSAwIG9iag08PC9TdWJ0eXBl L0NJREZvbnRUeXBlMi9Gb250RGVzY3JpcHRvciA0NCAwIFIvQmFzZUZvbnQvRE9LRU5EK0NhbGli cmktQm9sZC9XWzNbMjI2XV0vQ0lEVG9HSURNYXAvSWRlbnRpdHkvQ0lEU3lzdGVtSW5mbzw8L1N1 cHBsZW1lbnQgMC9PcmRlcmluZyhJZGVudGl0eSkvUmVnaXN0cnkoQWRvYmUpPj4vRFcgMTAwMC9U eXBlL0ZvbnQ+Pg1lbmRvYmoNNDYgMCBvYmoNPDwvTGVuZ3RoIDc0MjkvRmlsdGVyL0ZsYXRlRGVj b2RlL0xlbmd0aDEgMjAyMjA+PnN0cmVhbQ0KSInsVn9UFNcV/t7sT0AQBIUIyoNhEcuPRUAsanCF XWpC0QB6uqQ23YVdYI/AcpbVaHLS2JO2pmjapLY2ptXEmpraahxMmpKUWmqNaWq0tjVpGmNqrflh IomJsbUSoPfNDguo7Wl7kv92Z++87373u2/eu3d4CxiAGKyHDoXL6q1FHVuCF4GUTmJdTWuCPPt9 60ryjwOGD5s7W9p3vF2xB5h5CIhKbGlb1/zAmcu5pO0D2MJWr9tzpmHfG8Csl4krbSUitj+mHMiJ Jz+rtT24du+DO1aRXwIkfKXN3+SGoUXkXib/3nb32s4ESC8AZb2k5x3udm9x3LQgkLge0L/bGfB2 Jhy8vIviNP/UTBiA4S7dSUMcrd6EMtRgKZb3IZZtQzLmsyNP2u3mfNMBciVwdgRmMLbNlqiXYlNT F8lzjZt0tQk3LTJtkpZj0dBrpw7T7eiUMutRZj018NJA/NDhhDLrwImBOYUsISNBtaQ4yWQyGuXM AmnurOzS4uKicmluSbacGSepXEnpvHJdcdFMSZc0ypRLwme6kx8t0zmGsqR1GQvq5xhYriU5PdFs 1qXPjLUU88nVNXJpznSD3mzUGcymWaUV8orbb848Fp0yK23GrJRoGmek0Th00BB35QND3ODn9PbB PumtMmd5lnFdbIxkiDJvy5k5NWtO2o3VsZNjDXGpydPTTOaEuOhPLXEPbZ1uSY6OTrZMT7OIuSxD C6B+2MKIRSxiEYtYxCIWsYhFLGIRi1jEIhaxiH3Shjg8TncdxMej3gU24Qp5DKFPEbtNwzoksvs1 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 jnc4VgY4tvkEV6TqGx+85CTqmJ/OOogP8GFO3rmL4IeL8NZdgO0F/EY+5bV80is2Dy/DeXjB5uB5 OAfP2FN4wmahzmagFs7AY1aF6bAKFTYFj6T+ISsDhGUosSJMhkUosHEYl/wD5sH90IN7zIW7oQsT Lr7DHLhNrudRHqOcdD/XzB3kUt2zpm8qvrlrHpjE7z/oV5bOYppdyrayhEpQjiCTz7Qya5l2poMe FkT1e5u9im80DWXYsI0dY9dIIWPdUGiLrtE2JQVap/s0pqk2xW39h76t27OkoNf1RZ1QPWFIj62z Kw7V8tqQRm4OaaNaQSMtDdsau+rY2uBFZ1QtqHWVrKnYVi9cdva74i7F7pKD/XScVuI0RgQPYIxw j0zkpPzlTXwq75DvkkKoA2G8ulEuWZa31RlPelF6YjrCy9H5UoJ2sRqdWI4QVKenNjD+VNnAyq1y 1OcVq0f9x5UVZI55kVma+krW182xihc1k9q2D+s4qZGUVKxaIIKgYQWWBBm1QDINIf0wYYkyi0Yy aQRISqx/WHAUgagLuVY2tSBIdhVW0iWRnHB8Df/vCxxbO1OvIfRXgAEAqRNVGw0KZW5kc3RyZWFt DWVuZG9iag00NyAwIG9iag08PC9MZW5ndGggMjM4L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFt DQpo3lSQTU/EIBCG7/yKOa7ZAyx+XRoS3XpojO7GVu8sTCuJpWRKD/33Qm2qHoDMvPPMvAw/VmXl XQR+psHUGKF13hKOw0QG4YKd83CQYJ2Ja7TcptcBeILreYzYV74doCgYf0viGGmGXXl6fjqX+6a5 34sr4CeySM53sGtu5PtHytRTCF/Yo48gQCmw2DJ+fNHhVfcI/C//qzVzQJBLfFidDBbHoA2S9h1C IYS4Vum5M0IBevtfZ/KHurTmUxPbqoUUiq1QIW8fHxRL7FqVu+T/bubMRJR8L0tZbGVDzuO2tzCE PDsf9i3AANQPcWgKDQplbmRzdHJlYW0NZW5kb2JqDTQ4IDAgb2JqDTw8L1N0ZW1WIDAvRm9udE5h bWUvRE9LRVBEK01TTWluY2hvL0ZvbnRTdHJldGNoL05vcm1hbC9Gb250RmlsZTIgNTkgMCBSL0Zv bnRXZWlnaHQgNDAwL0ZsYWdzIDcvRGVzY2VudCAtMTQwL0ZvbnRCQm94Wy04MiAtMTM3IDk5NiA4 NTldL0FzY2VudCA4NTkvRm9udEZhbWlseShNUyBNaW5jaG8pL0NhcEhlaWdodCAwL1R5cGUvRm9u dERlc2NyaXB0b3IvSXRhbGljQW5nbGUgMC9MYW5nL2phPj4NZW5kb2JqDTQ5IDAgb2JqDTw8L1N1 YnR5cGUvQ0lERm9udFR5cGUyL0ZvbnREZXNjcmlwdG9yIDQ4IDAgUi9CYXNlRm9udC9ET0tFUEQr TVNNaW5jaG8vV1szWzUwMF0xNzI4WzUwMF1dL0NJRFRvR0lETWFwL0lkZW50aXR5L0NJRFN5c3Rl bUluZm88PC9TdXBwbGVtZW50IDAvT3JkZXJpbmcoSWRlbnRpdHkpL1JlZ2lzdHJ5KEFkb2JlKT4+ L0RXIDEwMDAvVHlwZS9Gb250Pj4NZW5kb2JqDTUwIDAgb2JqDTw8L1VSSShodHRwOi8vd3d3Lm1h cnRpbmxpbmtpbmcuY29tLykvUy9VUkk+Pg1lbmRvYmoNNTEgMCBvYmoNPDwvU3VidHlwZS9UcnVl VHlwZS9Gb250RGVzY3JpcHRvciAxMTAyIDAgUi9MYXN0Q2hhciAxMTkvV2lkdGhzWzQ5OCAwIDAg MjUyIDAgMCA1MDcgNTA3IDUwNyAwIDUwNyA1MDcgMCA1MDcgMCAyNjggMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTE3IDAgMCAwIDQ4NyAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCA0NzkgMCA0MjMgMCA0OTggMCA0NzEgMCAyMjkgMCA0NTUgMjI5IDc5OSA1MjUgNTI3 IDAgMCAzNDkgMCAzMzUgMCAwIDcxNV0vQmFzZUZvbnQvRURJRURHK0NhbGlicmkvRmlyc3RDaGFy IDQzL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9UeXBlL0ZvbnQ+Pg1lbmRvYmoNNTIgMCBvYmoN PDwvU3VidHlwZS9UeXBlMC9EZXNjZW5kYW50Rm9udHNbNDkgMCBSXS9CYXNlRm9udC9ET0tFUEQr TVNNaW5jaG8vVG9Vbmljb2RlIDQ3IDAgUi9FbmNvZGluZy9JZGVudGl0eS1IL1R5cGUvRm9udD4+ DWVuZG9iag01MyAwIG9iag08PC9TdWJ0eXBlL1R5cGUwL0Rlc2NlbmRhbnRGb250c1sxMTEyIDAg Ul0vQmFzZUZvbnQvRE9LRkNEK1NpbVN1bi9Ub1VuaWNvZGUgNjAgMCBSL0VuY29kaW5nL0lkZW50 aXR5LUgvVHlwZS9Gb250Pj4NZW5kb2JqDTU0IDAgb2JqDTw8L1N1YnR5cGUvVHJ1ZVR5cGUvRm9u dERlc2NyaXB0b3IgMTEwMSAwIFIvTGFzdENoYXIgMTQ4L1dpZHRoc1syNzggMCAwIDAgMCA4ODkg NjY3IDAgMzMzIDMzMyAwIDAgMjc4IDMzMyAyNzggMjc4IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2 IDU1NiA1NTYgNTU2IDU1NiAyNzggMjc4IDAgMCAwIDU1NiAwIDY2NyA2NjcgNzIyIDcyMiA2Njcg NjExIDc3OCA3MjIgMjc4IDUwMCAwIDU1NiA4MzMgNzIyIDc3OCA2NjcgMCA3MjIgNjY3IDYxMSA3 MjIgMCA5NDQgMCAwIDYxMSAwIDAgMCAwIDAgMCA1NTYgNTU2IDUwMCA1NTYgNTU2IDI3OCA1NTYg NTU2IDIyMiAyMjIgNTAwIDIyMiA4MzMgNTU2IDU1NiA1NTYgNTU2IDMzMyA1MDAgMjc4IDU1NiA1 MDAgNzIyIDUwMCA1MDAgNTAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMjIyIDIyMiAzMzMgMzMzXS9CYXNlRm9udC9BcmlhbE1UL0ZpcnN0Q2hhciAzMi9FbmNv ZGluZy9XaW5BbnNpRW5jb2RpbmcvVHlwZS9Gb250Pj4NZW5kb2JqDTU1IDAgb2JqDTw8L1N1YnR5 cGUvVHJ1ZVR5cGUvRm9udERlc2NyaXB0b3IgMTA5MyAwIFIvTGFzdENoYXIgMTIyL1dpZHRoc1sy NzggMCAwIDAgMCAwIDcyMiAwIDMzMyAzMzMgMCAwIDI3OCAzMzMgMjc4IDI3OCA1NTYgNTU2IDU1 NiAwIDAgMCAwIDAgMCA1NTYgMzMzIDAgMCAwIDAgMCAwIDcyMiA3MjIgNzIyIDcyMiAwIDYxMSAw IDAgMjc4IDAgMCA2MTEgODMzIDAgNzc4IDY2NyA3NzggNzIyIDY2NyA2MTEgNzIyIDAgOTQ0IDAg NjY3IDAgMCAwIDAgMCAwIDAgNTU2IDYxMSA1NTYgNjExIDU1NiAzMzMgNjExIDYxMSAyNzggMCA1 NTYgMjc4IDg4OSA2MTEgNjExIDYxMSAwIDM4OSA1NTYgMzMzIDYxMSAwIDc3OCAwIDU1NiA1MDBd L0Jhc2VGb250L0FyaWFsLUJvbGRNVC9GaXJzdENoYXIgMzIvRW5jb2RpbmcvV2luQW5zaUVuY29k aW5nL1R5cGUvRm9udD4+DWVuZG9iag01NiAwIG9iag08PC9TdWJ0eXBlL1R5cGUwL0Rlc2NlbmRh bnRGb250c1s0NSAwIFJdL0Jhc2VGb250L0RPS0VORCtDYWxpYnJpLUJvbGQvVG9Vbmljb2RlIDQy IDAgUi9FbmNvZGluZy9JZGVudGl0eS1IL1R5cGUvRm9udD4+DWVuZG9iag01NyAwIG9iag08PC9T dWJ0eXBlL1R5cGUwL0Rlc2NlbmRhbnRGb250c1sxMTA5IDAgUl0vQmFzZUZvbnQvRE9LRU1DK0Nh bGlicmkvVG9Vbmljb2RlIDQzIDAgUi9FbmNvZGluZy9JZGVudGl0eS1IL1R5cGUvRm9udD4+DWVu ZG9iag01OCAwIG9iag08PC9SZWN0WzEzMS4zNCAxMi40NDMzIDIzMy4zMTggMjQuNDc2M10vU3Vi dHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgNTAgMCBSL0YgNC9IL0kvU3Ry dWN0UGFyZW50IDcvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTU5IDAgb2JqDTw8 L0xlbmd0aCAyMDIzOC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoMSAxNTg4MzI+PnN0cmVhbQ0K SIns1mtwVGcZB/Dn7C3ZbLKbK0nIbUOgQLILB8IdWigkKZRLkJvEUiEmJIFCEkNKodCKtd6xor3g pYqXqhVruwgqrejUGceOOn5wnFE/IHaczrRWxi+Onyyuz3/3OfSQAdqOn+z8w/ze9znvec95/+ec 3bOIIyIxOSZBcbs3z567+W+/eV2c9j/p6K6+g+PJwBOBx8SZt0jEOTowOrj/pQfqHxFn/jmR0MnB fYcHYkuyQzr3AuYP7e7t/+u0c9XiLFmn2wuGdMC5tO5W3X5Yt6cO7R8/9LP73aW6/bQ46Vf2jfT1 St2JXXruet1+bX/vodHuy85rEhg6rvOTw737d79y+WSHOLNDut7vRsd2jz7Z8OAR3f+MSPAXEpAp 2f/IJXlB0xdIU6apzVlRFAgFQ2GJSCjaKiuKJBKMhJywEwq2Lqxqn1/dMr+97XT0woUzp0+fRWhx pFbaZFyO69nCmcY2RxYWzB+/a8ecXrG/DiIiIiIiIiIiIiIiIqJ3kV1ERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERE7wKl8ktxBH9BSWibr0NaJ6yOaNWoeyUU1ZFGSVsdkListTqo4z1Wh7S+z+qI1o9r7Wgt slfOWl0gDzkNubpMx7c4p6wukH3OP7Uuys8P7LRa5wd+latz84Nrrdb5wVMd3Ws7N3a0rd+8fs9w 39DIzTelQ7o1dqds1KpN1stmtUeGpU+GZEQ2yW4ZlHtln/TK2FvM/V/2zpBVMlPmiqv/FkhS+nW9 cbVEE6zRfd2yWkdX6cxZkpJ1uq9fq6T2h2VUMw7o3D7tMb9HZ6/Uo5Jqvdwud2i/PXd0tx6DlZPX rJ3U+oC2vWosd73YHtcKW/25VcZ0b79u7c/dh3t0bETXxJ4hHc2fr0/3jOiR2DNuacc03Uju6HGd MaJrzrrxtQ617kx0Tz58m/u6e9Z943pXp3tedd9wf+8+5V5yz7vPuc/LjKFWmZlNZ9slORAfbHBH jh7YduUdJUq6wzhm86/dA+7d7vCGP7jD2664wwePPDp3a9feWvdBd6c7kqsG3R43wGf1f/Sscu+x Y84JCUuhHNN/IjusvyglstIJBwKRaCgQLgyGXpZAdu9LV/6t+8px4KY1q7plhUj2H3IxezF3xFTd PPWXP2p9QJ7VNqlvvfxb8Z3/RfRthfct3mBRKdI2nnvj+kcqpNKbmc36jsqP5+dUS83Vo/JtlUy6 urdO6m9ylH9F37rXrJUfz88s0f7ahEUSu3rm/Fr5cX/+Sk3knTMmxV7tb22t/PlD+rRspiqZsFZC 1xd9mvqLkJFUc7Izk9w1kMzIlu3NmeV1Gae3Z3dHOuOkzkugs6Vr1+p0JqB1sHNROhPUotAGQ1pH MRjWImyDEa0jGCzQImaDhVoXYzCqRbUNFmldg8GYFpU2WKx1FQZLtJhsg3Gt6zCY0CJug6VaJzBY pkWZDZZrXY7BilTGmVQ2P52pTDmlL6YzVSlBNynlJMtakuVdLV1bty+ua+5JZ6pTMnGoJpXswi3J JHv1nLX5rcH81uRUMlPTlknqGnVa1radz76sdX0qKYudxelMQ6o5nWlMnXHqOzvOBBq0CTZqE2rS JpzUJtKsTcEUbQpbtIlO1aZomjaxW7Qpnq5NyQxt4jO1SbRqU9qmTVlKm/K0NhWztKmcrU2Vq82k OdpUz9Wmpl2b2nnaTJ6vTd2CTn2KTRplIaIsQpTFiLIEUZYiyjJEuRVRbkOU5YiyAlFuR5SViLIK UToQpRNRuhDlDkRZjShrEOVORFmLKOsQZT2ibECUbkTZiCjvQZSkRtmEKJsRZQuibEWUbYjyXkTZ jig9iPI+RLkLUXYgyt2I8n5E2YkouxClF1E+gCh9iNKPKLsRZQBRBhFlCFH2IMpeRLkHUfYhSrNG 2Y8ow4gygiijiPJBRBlDlAOIMo4o9yLKQUS5D1EOIcphRLkfUY4gylFEeQBRHkSUDyHKMUT5MKI8 hCgfQZSHEeWjiPIxRPk4okzRKJ9AlE8iyqcQ5dOIchxRPoMojyDKZxHlBKJ8DlE+jyiPIspjiPI4 ojyBKCcR5QuI8kVE+RKifBlRnkSUryDKVxHlFKJ8DVG+jijfQJQWjfJNRHkKUb6FKN9GlO8gytOI 8l1EOY0o30OUZxDl+4jyLKI8hygZRDmDKD9AlLOIcg5RfogoP0KUHyPKeUR5HlFeQJSfIMoFRPmp Rsn/r1nfYfGjyaadiWX/klj+R+LF356/jP7nd17oy/49+2fJCn5Xaq/+iqDN/dagyL6q+yf8uqw9 rANTrm4ey5mjylTU+qCJq4UqZvtiNlbom1+sGlSJSthYwsZL7Rhw1SwbK7QexxSpgArZeFgVqIj1 GK+x80ZsTsD4xwptHe+YiPXeuTC33c6P7I127VW+4xKm1K4zbuN1qtLOUWv3xlsvYtdRYHNKrY7a PP99W6CWqQq7bu/eJyxr2CzTZ9Stttq5Jvv2FXpjuj+kpms9VTVrvQ1ztN9g601TbXa8d1zY1ir2 3cfr8eb71UwQ8j2Ha2iGeb61/CI+sRsI+56DX90E5b7ncA1df6pd48RriPnWDtygL7T1b9R7n9GQ bRf4nvtb9fGb9CHfeb1jyu1e43orfPe+ztd714Z7Xylvft6jlrn2Jn2B9d4zn9iHfLX3WZ7YY473 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 KZa+oteXd8cBvtolGtQBfOfZwjWp7P9LvtuJFvSokc6nfbQabjmd37n/u+9mXvvE19hjk/a28Rjr LOrmi87kfnHSt/GM6WzkH+LFvdk4zTrtV2gNscQN53jEeNtoWCjftW7GFt7DF53eB/1zTwF3vEvu ot+zVr+ypk/2WYOe1GvPWN4bYjljDJ/cc39htu3THS9jyEzP+eac41wnPuhinaklyOT93Atdzy2L 50TXd//PPbIsejs013yRZ6XM6yg+5NY1lnXCOD/LZbtZf+NXeHt28/yJjT2rTrrbp3PmaX3Mz+fg yT/shz/3iX5+nmLZC6gP4C/yDT+V3HqRfPCZq23fky/An7do8UJ9g2fuY9fq/yFaH0DHp/p9jZYb 9MLneKw3jstfo/XGnyqN3z7WX+u/X+s7MhU881rfwYa/1Oel8vtzNIzIeoqG8W71XOH5Jrtf6jc4 5qmeRa+i+5/q/qXuP9dv7u/qc6p3bpIVPZ90l/VS91nfxH+qz0Olc68y5ny+xGOsZqzifc8N7snE t3OOPfKsT3fNYw3HG1+SF5btGEtdet31vbzXr7wbt3ku9Nl9rMu7iVYbLMfxd/hmfbNu2Taf3d2t nM9z0We1Petj/vu07z1jHfL9sELP9dP+YLYt65/xI3/+ET9ivsR0id2SryXGS8xe65nC616/7/X7 Gq1ule+b7p6j5e3/W9QdZjQWOrivg4nw3VPVfYrWl8Zo89AYLY+7+rxEy/Gj9rhLDYn63onOqf77 b9X1tX6j+1H7r9Xe5bmp5/zvpDOz9m/p3FMsbburPujkM+rsW7rrNUSrXeX7a333/PgiPm+f0Hur +piW10s9g3437eHne6L9Gb+r/J9tc6/3kOkl7RGn2MzyP8cyPonrW33yjs+It039Jk/2kp8af40W P9Ro5gViFizmmrHXXp4RjOuM18E0xPxOe8xLm1jirYPeWZ65jIlD54/p3i6WtZs5Zqc91+JMx3OJ 9eS+Z6+zztHPOt33vHdI766HYLDcb7Kdj2mfOXMrusxssSK//Zf1BAPuRWfSvTwjgl37dBfapu// p1jOlY7DMRqGsN/Qcau97cr/LtG+pDO/RevFyH6py7gdX2y0ZzwEfuilV8Y6yDRFw7prOH8nnrlv w2uOFqfo4n6/holzf59jqd+Qvn0nzzgFr5a6XDD0t1jmgWcIYwHyFfksyyHxytjIOhKb23Tfeesa kOPbtcA0T/pPvvksMuIf5x4Y0vgo4yzibg2rukbsxJ886+IxHth3XmD7rMMp3T3pnuurvws/Zjny EHxTVukPYKqz9o96n/QO9mLO6aJhnFl23UfDN/B8lo/G+s4sCC1mIjAds00fDXeZ7j1afj5LRnLM mHsQnzEaBjzqLPJxD8yyVi/cU8k95ye5O+gfdLFrH8v45XuMZc4zX+U6gG+MGadYygE/49tJC70n 2dozJPuzziIjtnM8gW2nWOZSL5q+Y5tYf9vIth/Sgh5nx+TPIVre5buO+73eXdOxEbSN8w9JV3xB n3XOHUXP/hpEm7pB/uM35gbs5HVJfEzT/Q9aXTpj/c6J/5rf3GsH/Qc/I3fOh5wX0KZWwNs9Y60e Q3fWmVwXT+kfvnGsGEfNsewz1AXXkaz/lP5nLFGeW+lAb0B+Y0/o4Qtqins5Onb6Z52J3UO0euHe lTEafYW9YzrbpbNFl00s+99Wehmnsk9/BzPRK6jBrm3ZzuBw2xjdsr65LtpG7JE/cyxtBn/8dxVt 1yf72XXDMYWv13LGPSPjxaw/OLcXb2oL/RN5z/UsdfeyQpP8Wsv3vMb0nfGt56Mhlnq4zhI/azlC HKNX7rGcN0/oek47p7P22xp+pzZ14uteASbwrOo+wnn+m27GA/7uY6mz5z/3G9cy03Yt2Om+cb59 5dw/xrqcxvPkqOWE9lH75DWxvUu0zQ89NvJBjnnX2fI03soz6TkaXjbWPujd9czyvETrO5534U9t tO+M5XNOOM+NOY7iM4l+ofH+sf74sf5Q1yUa1mFeLXfAwGDfn+u3c4n6MkfrZWDi52j1AYxC/b1K ZtewIudbtPzHDo5VcoMaRIxsK137k7nAuDVjUvSBFvrQI/FTL7mLjptoNXCM1p/Qbyd58As2ACvx 3Eg/evRc950/xlvkylNd7svP0foHvcZ2ID7pla7R5Bc23Eou99ny/hLLGeoQSz3yLOH9TvzAoEXG d53FP9zBDsQLe85TfOGaxqyY8Rc9+GfRvtazf6m2+S5bjPJnrnvuB4e0rlWmp7RfaPzysf4erZ51 iY5r+ZT4gfuxwVHnibkh8cy1mZg8rOxznp6zX+GJbWyPrGOuaZkHsqPvRrytL99nfSPTt3SGe/sV WpbZctLXOL9N364ZxqvnRA9es/yPHWwjx43vOvfIk2wv9xb32aHaD787bze6R7ztxJu+YR2oa5F8 7Jr1U/yoOe/1u/ji3x/ra6VT7DBGq4slH/Ps08lOf/tYr9Fy9Bat7z5Hw5qWZx+t9+TZyf0Yn5JL xqvkT5eWsSL2cxxhM3Ca4zLTcu/Py3MOcce845iz7Tf6D8Z4j9bXqFfUvSlaz8KOzERg9ksssYCx wVj37tFq9rU+B51DHu5jt4vsN0WLjVn8PDueYikPfYz9k/bmaHG/j9avqf3wQe97ooUdhvpOf4XO pX7Tr/Cp7yKD+7RtZ3/4jmUwdqHXUIOhC03oMJdNsmsv+p7dyDPPHaY5idclWi27VTnxlee+o57G Ntgcf7svEwuT3qlvjkXqH3wH7fMkBok9eugsvpwHF5sO+DnHAQu73sQHW0B3FL2yDy4jD3he5e9Z vMHL2IdZiPibZWfjZmyMrMQ8WNZ5cxBfzwpl3fWPOPE3OXmOZQ92Tns2sX3JM9PCT9gXO4J1iGfs xv4gesxMl3Qfu2CrOR5nyovoWS7ig4VvwfvQoZ56jqD/DKJPDCIf9ci57zqC7Jwh9pGN2YT8gBfx 4/zr9P8k2q7z2MK9EF/1/yO8XHrjWG4wOpyZfs1b0uhhW7JzgQDO5gbZZZFFFgGSRfb39+SnxwXX QZ+mauQF0d3VLL6KRX7UOv3RuUrPs334iN/Ivo85V9iPjyv5hcxe+vyOzFOSP0hnV9fJ4XudL35z R4mR6xn78XuUbteFMckEY7R6FPEjnpwLMcZHsBC9DDxBHMqebcz1wDWDGHMm5JfrhHsLZxwx5w72 0kcjljkK/sPnk3g9CxpvENtRa7at6F7FfJ/AN8ZUu5jrqWcvY4UuZtzt/ost7t/cK3IdrEpdIr+o ZWP1GyzquJk2lbCHegD+5zyNA7/GnFPcJRP1hZrnOcj1dV/1TFozjY1/5GLm3af3/Q2Z0EXyMr5r 8T8oFrbtIxvO1T/3AOPZ7Cvx2aZ186J/l3R5PpqkkzuQbUXOoP3IooZMktWKCXHjTvjeTJLv3se5 HKXLdy73JXLQNQffXWv3jadjdEz/W7kGbvH5jtLpWY01vrGVO05+4Zf9y3Kx6T7e59Ute3fpnfuY z9I4h55D3yqxe4wlTjnE0l5kGUs5v7w2NvRTr8C98IMZsZH4+bzu69pWNKVv6iezJsQa9Q1+1phD qWkb/Su+v8aMnfr0RB750Gk/e9Z1ra98oXevW4fzeS19rsHrKquls9MTPY4X54a+Pu2bkg5spobv 0vdY5fpOoDPXLHwu7yvZZZs3VeeY9mJTJ0Knn6P4/L1K/uH/NsnzPnr6pDVTLxmbxn/2r9M6udPH 0vZ1zHfOdm4TH1iv0DVmbFTWPTvu9I/zAhNie+F70Bq12HGhxg8x12/qnvP0KWYMBD84ktxp9c2u +uF8Jb65Djqn8n/3cewGI+Uab2KOdO3Gx6HBf2ysTY137toxrY9JzjWW9W8Xy7ptm8mDk2RY967B T8y8j9ybom37Pj1blP8NkjE0+DjT/A6+HdN6H0s/fN7ksv11DrinOh4HPV+S/9jsXLCcPLu0zt6z QMb9xgLu2cY/U7z33TE4NPS6BxuzuyYyT9gu9JBDxjD5bEc9me1Yy37mc8vPXD9ad8x2GifZb/tn P83vvsj+gkGo1z5PE3ngfk8tHpLs3A/3SRY1sdM7cd/GXCPPMd9R45/yfIxlbrtesw/qRfznG+yH 3Z9j7sl/iSVOcp9axxJzQfizSjzgB3DWusadeXWts+xixqPr6uel8pJPd3WNfjXqmXPF/Qp9zA7c sbPixvmBpe6ijbcPVS73lzMYdT748xDL2ow9YIE+5t7Anq3+P8u3se4HKxuHgyvBPBvZRb49aA95 iM6ML8EV1BJ0t7BPrjG3qE/fxqzOaeZB7jbfXnddcQ36qD+B0Ti7rsGT9Z+SrFu1f5f4XVMG7c32 k1O5Huf/3ue+4Ti4tjKTreT7GO99dT53Sc6Q+Keko4tlDMgB9/D8bn/9fUr7sXnQOn3JdnBvWzkI LzMdecJcR/7xXmKVa5XvU6F7ncd9zPfvHMv+e4xlD/VdvUt83mfMyN07JL6WTPYeYsbze/GRe6sb erMP0w0e5/Etwv6z9GMzZ+K7S/261ct9nsYKrNFr3HOpX8ZA1FjidJFe13DygdlnV305iRyzUyJm q+mDfx/xm+cQ8/2cYq7J4LiL/pvXOXgSL3zoGLXGcycez4Kc1aH6fbzhf0u3+3GLjok3y+PpORbe Y+Ita9wxbNhpHbvxFXwBLz5Nae8h6fAZTekfvo5ad577HKa07poKHzntO+1a/fsP+h5zDrzGXAuM R7mXRd825jpjrIjvBz25E+QDsukB9BvjqxedDXYZx+MX+eW+St2mljEXbZIO8sw4izvLfLKv+7DZ WMD57pz3LLBPcn1efSLb2seMuS7SwTuxxm5ieEjkfPX9c1z3jfdTQ9ausQZ5jhyluzzvkuyWndZv frBWtpEz5ntIckatO4/B6WAWZg/qW4nNfSzxwyDeQbqwg/yAD/8h22k/MlbLmBCck3mNr27J6LUO Xt/FErdmPJflt3T0SV9r70bvnl9Z893JOrDP9QC+bfrukwzOto+2zZt470Pm5T7RvyPZBrbhPzmF DdjY69uxN7k3WD75fmzw56fvnWs2ew7pOUqH57hB+5z7fdp3kk9guUF74D2Lr5PcUXu3jbiQ831a Qxd+20ZjP2w56rx9JtRZn1GeZcHs+UzpCc4z1vFnSPyOy0l6XJcKXdL3oP3uOy3yOVqva8GUdDqG xMNY2Hi4VUMds62enpH6WOYKenOst0m/7WDd+KZPOqG13m/xQORLXndPsA2bG3LANb3k3eLNRD7D jx5kWtZO35uY+w40xNJ3ahi9apQu12d6xtdK337QY/zEX58rfavfr/X5Rf+g10rl/U8/6FPlY/25 7v1av5HxVp8vld4qPadv6Gvd+1blvNXvZ32/iuet2pLlvGrfi/hfJMeErdf6LHXgD/nxJdFnxcD/ Xz7Y80nvT2n/k+L8KfFmeqh2PlX/HrVOrJ/rd5FzJ9vYZ73E5SmW/l31vCY/OE/WHmXPs2JPHJ6q PS/699x4/1J1PciHa43Lg3xE1lTfS311baZXlv+lbnC/qHfrWNYr6jN1gx5NPzEW8B30vLKtfu5k KzMis+W26lrXp7E7WA3cOcQ814FnH+se5t2L+DYxz5PgXGOf8i/kk9d32kdMqePoHmPGT8y39CBq 2FDP6yzfsh5w2LHauEnxOuss6KktGm88b/F4PhjEc9AavWGvfcbLzAHuv/uk23hmuEHTB/9G7UfG QzrLQqt4PztsG3zuBcSdGWWo35znMe3BN/a8xHy/jM24K44Bsy699k7y6FHgVrBC+S71pdz9q84N PVMsY7uPZX/0WdMLS+zADpwT7+DdtfRxP7Z6Itd337jYOXHQOvfG+HYte/b6blFfnwd9j/W9a/CC FYvsf8V8z8E+xujgEHzxWguHdOIx/0UxBEN771py8/wITu30r5XDnouKPs9txkmshfwl9z1fZhzb aT8xj1jOqeQ2eDBE11jmPGeyapzpKpZ3Enu4DxC6y7+HWPYH7iT3gDqwEQ98d/o+JDnucSbb4jmW Wsn9955jkkvf2qe9eR+9M+89xHubtoqF75X9OsTcs/L/Psm3X/Zt0h7usOW7ziDjo5rfirF9yDHx d44DNIl3k+JU8vEx5p5+TvFFJmdGX+i1ftQ7e46Nf5bhen5MxB3yvc79BsKnXAN66QbbM8s8JSr+ f4v5foBbwCL36Ul9oz6W/Vut59nR/YF3aodr/K8o1+3hF/zU+j7m/pUpz4v0O/bzfkz/kUsddm9d S575eO/SM7/30jGl/5uY+9r2xv6t+Pq07nfHPhJPlmdCdsTctxyvLukocVlJbj7THKuWfeS5cQW9 hb4JPuObPKSuuP/77Mjdg97xc5Peu8Y7T+pUV+0ylriVC/RP90DwFrWWXgwGIgbXmHG/cbb7HPjq vsZnHctaAg6hr1Az6NXl/13dT+3+rLMkx6h5Z8U9YwGwjnU/K/b0GWJ5lEzqN7OWfQMfuB8gkxwh HsxaJ8lin+fajWxyfDgHvjlj8uxc40XOGgeSX867c8y9Lc9gxOgu5nwp/KWOl7rNHGj9a50jOk8x 31nqGViFvkDOEyfHspdc6jc6fXeN+wvP92rjMea5FZuJCb0rz3GeYXaSGVUeOTXE8m5d5Ode7/jH +3iDPG/SozfaSz67hrHH89Sp2uJYkd/cBfdRcpHZ05iIXDL+HsRvnkJfY87Dq/6Db32neJLbl8oH gQPufxG3W3SJ95glk+uW7/Wj4t3CisaD5IvP6JL4bsnpk6ydvpkfOBcIXuOCXOchMGGJ4X8l23eS fMB+aj21pqtn8fcq5z/1bA/1CZV/n+JnfThKlvH3nWIEFiX/Djoz27KvMqmX10T0AGzY1PfvVR5y qL/45XmDc8C2c8x5Tq68xhLXEDv2Gh9Mkmf5fgebjDd4OZdPOvfcPw/iX0sHtf0Yc90BD2Bfiek/ YnkfJu0v9fK5QcZZg2Qjl/p30hp32fMee4yrwTfraM9U9Ie3aiM4AZxSnr/FT5zwPZa9Ns9xT1XG pfJRNyF6MHbSn676dr3ZpCe1xb3ddbb4+O90ntw76iF3nvg9Kb7cbXJmp3+OScbT62oD/bfE8kul h6rj2ohXkfPPqpNzwo6Mq/OMRd7Sc8HK5A/1gbg91zP8c/ysO2VG/Gv8rMu/1fXC83uNU/Hhjx/0 t9X/Vt0POlXqKp0rbQv9n/gqbY7yOMLz7u677+5qVxdCQlyRQMIgcZhLXJYszCFLAhnFhcEcMghw fEAQmAo3llCIwTGgxGAHBTAO4ErtfnLFSVXyOV/zG/JX8nTPM6vRSmBchStV71M909PT09Mz090v 5FYTfm3l7omrb50tYnsVfePeuatHZbzCOyc/h7r47OKJW8PdNRdLXC3k1+/+/5yTqwgm7vxMyrlc I/QVzy7nazmb+mDyP4urgyX2zPX27Wq32mByTHD6XL2eLBl3a1V4e8t6Ol2MTXs63J1RH7tz4rzD wF7gE2AQaAvsO6njPRgC/s511gOL6I/mwN4ZWVPu6S7OE2wg3QK8CbzB/mnqW8j5yzi2gL5ZTl4j 6SrKyX07ENicKrLruKdG6lpHOTmT19ieQ/sT5IsOuYP5YCL3DfBcjtK+dqAH2BbYvPsu26L/WGDv vOg/RP8Ifyv3L3vto8wejkm8n0+94pOdwHfAJe5D7tZ18S3OIwu08d1UAy1szwRywAwixbcm7dls R0Tae3dxIPDkk9QTehC5KiADxEhFfgH1JagzSZtkTh31JSgvvAbOy5E63c6+WuooAyopl2Y/y3Nt 47nIeVzk2ckeNtI31Vyviu2U6YNwn6k3v9F+mmNx8wDr95kaIAu4PaSUZ2kteaJ3Hu2p8PyXpZ1l ClnDzqnk/qp0zr/Qz8PcbyD/N8z7HvQe8Q/0/4m5PcAR2FkA7yu0/4M95IF/Q8cY+kLHMTYCPz2C z78HT3T+F/gr+o9wLmOgu9X2EDQBW0LuvcycURuT5qzaXGHOg26GD84rPzIdsLcDuq6w/YOea4p7 jHQfA9D5Eeg+9XfSXID8OHAO60j7DMY6MLYePuhQmYyuvxV38AR03YPcVeAKMF/jwVt6bwvQP4jx m+AXQD8FhFfQGKnv0nSB16V2VJlLzCUbFIFZWZyfMNfQtkjAniR0hM9BytyFzF2lFr3wYy/m92L+ Hsg8Qb+AfRTUpkmAXWvYjqaMXwJvDLpPoz0dChg7AZkhtC1sW/zWgXV3YP3dkPk1eCPA2anA+k3a HoHcZMRwHpFS2edptS/kuqGeq9h8gnafoM1+/wnu+B30n8COC/TN0AtQ0XsOc59HR3QdS9/Hft8D dgM7gcPAHqAX965Dz8PSG6AfgQ7Cni7dV1b3KPijnlfKoylznP13lCbNFj3vjPqylI5A5wTP+ncq TeiZjaN9BPZZGhapyBzE/uR9WRqByty09h9g/tsacybTAs/vxWkCbz1B/4VKb+tdSoNGk+gR8G+r ryLzgZ5phmc/cRcK1C32nkJ7FO1RbefUh6eAP6F/HziJtiAP/Ap9wdfAh9q2/DOKyFzE3u5rLHdx JGVeB3ZAbzvoFozLmexD+6HODRWPAYllj3TdDGK2jDk95Tj/SHFNaZx9S+WtCA6oD2KKi0oTuk4/ 5C6rLtlv0vwWc8RmoTeBu5g3BJxD+wbwcREp3eOo3teU8v4MXNY3a/d3HPShNyfv4QbWfQo8BuRd 78AeFyMGH8SY0NWgq/UeJcwK7LkLeAP36AP0jwKHEaOniT/IGRnFXuBDfRsptfVdjTGWL7QT/U6s MwDaDOwpgci3AmLLMeBttA/rni1kzjGOCX+bkRgdR/5IElnE4QqskcR7szG3HTmvgNgseI9UIPHk Ha07l7Me6mTNI3XQxsD+Q7SyjlsMrAhsHd7IurKVtVwna4G1lGmljGCtOcQ3IjFsAPgE96AfNl3R +rSD8zexFtvL+nMr+4OsNaSGW0P+Lo7JnG3Qk/bktxDt3NNa9QPW0rz7KehDzWMbsf+4uQV7PgfO wk8S3yTPDGosMMwlocZf+z5dXbqB6GDNI+0Y684lQAt58+kv4S2lDzewLf5b5sk7mYj1lNS+9ZTf RP3rWY92B7bWdTWY8BpYw24mOuizNva7SbfTTz3st9Ffm2m/2DyX/BXk7QjsP4TI7dRc8TF8egw+ OYiz7dD3nDDb4bfPgD8wn/xe81/Ety2o0Lc3BuTh03HlxfAmJa4kinjotb/QeBmpvEWKcSiGeBfz aIprxDEesp0priv0uMaHmNYDJzS35oCsxtf3Yest7muMNE89En+Oal2XNtfBf1ykEanEVyt7nXu9 QzrOuPY7xuTjGr8T8JPd+2eUE/oUOK/9kEhrTvXpMOd9wb0L7db6M9T5TyEzqrZH1O3mhpo/fCqx /A5wUmVtPnHU6XN7/9zY+jPvnaeL2fY8nN8dtf8rU2kaecDOv6+0VnV8o7VtldbaP+i7k9waltAE c2+o8X9Uz7FSMaxvxhTpbqATaAEeAbuABqDSPq4pkP+hPuaPETNX3j+HBjUWDJt1QBNiaUZz5rCZ pf8WA+if1P8P4dVgrBo5oxx1t8S2lfKWzC/xTzXdmgQ+vadCgZlolyPu1+j/Yh70LezX5nsZr0d+ z6J2z2k97/LaVb4Pu4c0zqxez+0m5l1W5DC3H3clA6T1zth2jjSD9xsV0QZ+m+ayiON1QCXx4vPz eherFHdxfvf0DgRqc0HfeMS3bv/n8jzjR+TLP+mY3u8MkVJ/3dHzt/fqhsrmdK0z6ock9aZw921t eg33UmqY7+Cz87qexCCJqe6t2HuW5/uyCM23mP+t3vsQsmnaHNO4dBV88e9NzcEx1BLyDuSM5qnt 98CTN7JP/8cCPZ+vdb0A8SWOdxjgLSRQI8VQuwSsq+IeTXj9RPFf6hrWuWb/FbHW/sDm3dlABbBA 7ARSvE+VzA1Z9tcx70huLgtsjq8FDjEnSLyv45iTkbn9nL8LPojDZheTk0SKPg2LcVr6+xl79jM2 W1nHj5QeKI6V0hD1XyV9kC3SvL4Ld3eqSd2ZR8V+F+5TV9G+CO1q/W+V/ldF/kScn9DhaFjMK3e0 TsrJvdN7YON72aRYPbF2vLi3/VzD32+ecVRyxS2lGaW39I41YY+NzNevoV2mcRM+Z15u4X3Ieu0y jU0FjUFiZxtjVkSkKSP0F1Ifypm6cd4BqTUkZjXrenZM1pe4sYVyzcTrrC/kTiyWcwFt5/nEgFrq qGENsQLtV0WX2EfdQjPUO9vjryQ/OS1O6h4z/vzp5KRe8XROK/OMeVKjLSnO+RLrfWn1ub16vhD/ 13NunP59HnXv2fFSJe898vS3eOcb8S2u8vYz3b5yHs8fT70ASvWWe2svBV1LCL/SoxK3DGlQss8y Ut9Gp7+25C7IOhHvTYI0Sf+2kVe6r9J2wuuHJTLO504u7mGK/0vm+vN9OX9/bZPkH8A/LjcU9L3J G6lCux+Q+3SBaPJKgbTXLn9OyRAxhpe9ZOReMuSfTP5dNvI+S1v+YdqZhzYx97wIfg77noWX7def A9n/8/ruLsodHmJOE/QDPV69pn2R89pDMhdthdPzY+OU6XEyftvZ488pmf9S+9O1n4USGesfyc8F pf2kjufwU/k/Dru2b0eprf0eDP3rztNMooWSuT+9v1traQfL/0tg4+EC5pdyM1GLTI712zAmmKhz GgiXs6SGrWGOEmSJWYpTqjvryVUQLh9a+VP2n5BymeL6o7rGLNondVt1IP9uU/Oon087zVnQs9qe QUTKt3jW3Ejr1ueNDxf/H+VtljM+SCx7JbD/BYI3A5s3hCf13jygD9gc2P8Egfw/1JDKuIu/OeqV HNXLttBZ9E0D6YzAxn35j1jt0RlcU/5T5gespzz9dc9o2xr5NjGs63dTbx/3003donNNYOvkOcBK rjeT/UauWUX+PNI6tmdybj1tlrFm+m0O5dy/lqzThftn/zMfmkjr73FS8kUf/v/kbLaTJ+0Bc0T9 t5TnUh5M5B3x+0LuRWrnTm/tGvrbnecS2ruIdm6g3YvJW0RdO5291LeK/Cau59DEc/Qx36O11N1A 3W7eqyXrCV1OLOM+GjmvmTLLOG8V6UKi1WuLPf9jvtqDq6yO+J6GQO5NcpPcGxJIIAFCghAEeUgk GHkGkKC8DCQVEZSIomgUKgKxWBQMQlAJElBeFkwQBdIkaAx0WlqcSBlpR6cdWmrHWlu0RRm0o1Y7 k/72fL/T+8k47bROp/6xe/Y73+6ePXvO7tntdwmo7uWA2wCzAHMApdQznPufTF9EuHZfynX+P0GE Z9WLNqZxLo3nqXQG/2cQIj7Qffb8irMZTnD9m56Nuxdd6etMzmVSR3fq1HwVQR77lgUv5+k9jP9n 3erl5FTtbU00xvS+ae0+lDkynqB9W9iXt3sDlFfv+Ehh7wC61ni56SbenVw5LsnyDnT9GHr+inEN YBdq5Rbk4z9h/ddtbETkI8x/jBx7Cn3OHwHPgec0xj8jD3+BHvI46N+B5zjm34FcO+TbvV6XoPEY J+fB8wngPfB/DDgHuxXOWh6bB/GdJBcBLdjrGcA5y+v81xV0qnxm6SxC2Af+WtLFahLsT4WdXS28 aWPdngP2nCY/QZnwtldbya+wnwvYbyPsOAm5E5Iu+yB7Cn79O+x4CzLwCeRSoDOMuTTYrnRIXkaP chYyb9p8cQjwI55HkjRAb4u9bxqXk+HvFHnXvqEGfjJyBDpfx/qn4ZuLgJ+jt7mIt/n3yFsfAP5g fZUIjfHwr0Ic7IyDXQmwKQh7EuFX5QlYeAM6zwE+pJ+Pg+cs5E7i3/t4Rz/F3EeYO4bx1xjPe3LW V3XY/xHs/2/49z70n4Yd5yHTDPpz0A72Q+Y30HkG82esvgQF46tVYafq9uBD7HcHbH4LfAdx73Wf P4PcBxhP2X0nynaMLRhPQHYHxi/gh1/CppPwVzPkT2P+U4DeoZN27yGsEZYm2HLC7iUGtsXCbvWZ 1gf97TnXSw78q3dooPaE8ir+t2FP1TiXw9jLGchvgd42e8ZBrJNsfd1se8kw5rpYn3j95De1X9EY 0zhP4f12b1sm85TLiWHmMLeHNJ9MEnXpGGRMxvC7i4nmP/0XsDlB80G7PasMmwMuwFd6V9+F/y7Y 8w4iXhPtHXsBPnzD3vvOsgT/FB4Bv0Il6Eqb++L4fut7MkyqcKYbrA0JzG0aR0sBIwATjfc+Z/vy nPa5edBh8zBGzelB2Y11d6NO3Y2Y9SDAMQLoBgjbby+/undR87i+l+M0Z+JeGMR5gvwUun6BsRU6 GqFbY/e3GOcqdPwFfLG44wHmlCDucEgOgV/vchvuWyPWaoWus/j3KsbPAUexz3bExX77HgzgfrV+ 1hyntXZ/3NeQ1MJX3pgEv4RQzwRRnwVlJ3xaAntKOj6TzeApwffbAJ2vhf9roVfHxbDtAei9Czz6 bwPWfg1QC/oJ+x7puvpmV2G0Nal7o3A+CYAIIIl0b8iF5FHoXQX5KsytA+9m7KUa3zXYfyVsq7b9 aADrxctW8NQA6kE3gLcO9mzHv/Xg2YPxMYwNGBvAsw10PXh0rhawF/NbIbcXsMy+j57MNuylHn5d DzsOQN862LgdPAfsHuPtWkvxbw/GavutulR3ADVuGLoT4JMky19nfRWCfCJkE6UIfIW2zyjhndMc p71lNmNjFaGZd+Y+wnTj1ezTTPQdXAmopPxXgfv/7/j+W/km471NoUtgnM/GgA+m+njiCO6fm19m vNpiI+XvMV4dqL1NhfFqX60JtU7UvqCIeosYq6MBC4zXu4yi33Re61HtNQopX0q5sZxbBJhpvLpa +VZz3RHUp7X3ldQ7iedwq/Hq0nKuo3Gm+VDzmea/ZO6pm4nWhzqn+c/V6H1NtBdQXs0PPcirOSeR fgj55ty7kcIx2SffjTx5/K+1TSp16ncOv5M5uroqnZDEdVwNmk69amsmZcIm2iPqehrXGVwjybdX VzOlUTaDvM5WVx/n+eTUxiz6IZ32B2hPBv1VYLx4GcS99uZ8OuV0b/o+z+b56vmVmeidbAe85vvn 7BT60416vu49/MR4d0Z1ar96aZxu47p6Z24w3+y4/bqx62p/3Wsv+lHPsYJzGh+uj3U9kTs7d34F pN05KmgPNJRyCi5HpBG6E5yeofR5su+fk3V9lq3zjXc3s8x/UOeTL8N8uZdTfr3D2g+5/JNN/+jd K6Q/BlBfHnkyaUMafaP6XL4Kcb3JBJe/VGYU9UynfpXRGMk30XzgYsDFgYsFFw8KqYSeBOdT578r KNfH91/jsZh+6GmiMa35bjZ94fpQjRGN0aAPhhAG0w/Oj/46s7sPIvRfFs8uhd9pPFNdr5Q+6E/f 6f0ooL+ncj6ZMjrXj3tzef4O4+V69a/m+q+b8yP0W1ffeeSZaM51b0C6iea+CPf2v8hpo2nXRMJI juO5t3H8Vh2V1NOD617OdXXU2MrlmnONV6/0oZ3x5Mvhdy79fDXpTO6lE+dVxzATjat5xstBC2mL xscUnsEk+raYuiu4Z9U9n/4o4JmM5r6uJ88c/tOYyaLekTzHf5XXXS+j9moNFkta75Z7kxTCPFf1 t+1ZqEN5u1A2jv9iqTPIMY5rB8gb8dFOTmUMZTqZaE/Ymf9cvRTHuQDHeOpIJx3w2ay8ro7oRB+4 HizeZ2u8b81Yznfxfbt9OdkA/RHy7dOtEUNZ5yO/rhh+x/v2594Vx59oojViom/fCT7a2eR6VZdz nC2d6MsYzoV04yUrzHtynTZA9hlEhIFROjosXdIqY2aUAafMKGs1HWsbpSbTjqamPLNR1paXtBqZ VdZoGs2m8qYrh0t+09AhQIMHAQ3MB+p/GVBeLlBOH6Be2UA9e0h+m2RJT+lRnFM8f0Ibupxekk26 r+RIH9L90Gfmkh6A/uwy0pfLQMknfYUMlkGkh6G3HEJ6BPrV4ZZumj4Nq143FWjKtUCTJgJNGA80 dgzQNUVAowqBripQw0bKVVJAJVfLKCkkPVqukSLS42SsjCFdLBNkPOnJMkkmki6RKXIt6evh4qmk Z8h0meYZdudirHr7IqCKhUC3LAC6eR7Q3BuBysuAZpcCzZqpht0gs2QmlcyR2VJK+ttSLmWkb5K5 ciPp+XKzzCN9q9wiC0jfJhWykPQdcrssIn2X3CmLPcPWrcWqD68Bemg10INVQCtXAC2/H2jZUqB7 K4HuXqKG3SN3yxIquU/ulUrS30ETuZT0A7Jc7ie9SlbKCtLflQelivT35CFZTfoReVjWkH4UDeda z7Bn92DVXTuBnnkaaFsd0FNbgDY/CfT4JqCNG4DWV6thj6FjraaSGtkoG0g/IY/LJtK1slmeJL1V npItpLej660jvUOekadJ75ZdspP09+VZ2eMZduwoVn2lFeilI0DNTUCNh4EOvgh04HmghnqgfXvV sOdkn+ylkv3SIPWkX5AD8jzpQ3JQXiT9A2mUw6RbpFmaSL8sL8kR0m3yirSS/qEck6OW/ocAAwA5 UYhPDQplbmRzdHJlYW0NZW5kb2JqDTYwIDAgb2JqDTw8L0xlbmd0aCAyNDAvRmlsdGVyL0ZsYXRl RGVjb2RlPj5zdHJlYW0NCmjeVJA9b8QgDIZ3foXHnjpAPtrrELHcdcjQDzVpdw6cHFIDiJAh/75A ojt1wNZjY/u16ak9t0YHoJ/eyg4DDNooj7NdvES44KgNFCUoLcNO2cpJOKCxuFvngFNrBgtNQ+hX TM7Br/DQ9y+P7AD0wyv02owxUpffPzHSLc794oQmAAPOQeFA6OlNuHcxIdBceA/2q0MoMxf7bKtw dkKiF2ZEaBhjFU/u6ZkDGvU/T+qt6jLIq/Dk/rtkPFFRbPS60TFTVWdKDaM7VpzEvnuHNCFtf1Ms F+/jMvlEWXISqw3eruisS7rSI38CDAAJMXKQCg0KZW5kc3RyZWFtDWVuZG9iag02MSAwIG9iag08 PC9VUkkoaHR0cDovL3d3dy5tYXJ0aW5saW5raW5nLmNvbS8pL1MvVVJJPj4NZW5kb2JqDTYyIDAg b2JqDTw8L1JlY3RbMTMwLjQ0IDE0LjE4MzMgMjMyLjQxOCAyNi4yMTYzXS9TdWJ0eXBlL0xpbmsv QlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSA2MSAwIFIvRiA0L0gvSS9TdHJ1Y3RQYXJlbnQg OC9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNNjMgMCBvYmoNPDwvU3VidHlwZS9U cnVlVHlwZS9Gb250RGVzY3JpcHRvciA2NSAwIFIvTGFzdENoYXIgMzIvV2lkdGhzWzI3OF0vQmFz ZUZvbnQvQXJpYWwtQm9sZEl0YWxpY01UL0ZpcnN0Q2hhciAzMi9FbmNvZGluZy9XaW5BbnNpRW5j b2RpbmcvVHlwZS9Gb250Pj4NZW5kb2JqDTY0IDAgb2JqDTw8L1VSSShodHRwOi8vd3d3Lm1hcnRp bmxpbmtpbmcuY29tLykvUy9VUkk+Pg1lbmRvYmoNNjUgMCBvYmoNPDwvU3RlbVYgMTM1Ljg0L0Zv bnROYW1lL0FyaWFsLUJvbGRJdGFsaWNNVC9Gb250U3RyZXRjaC9Ob3JtYWwvRm9udFdlaWdodCA3 MDAvRmxhZ3MgOTYvRGVzY2VudCAtMjExL0ZvbnRCQm94Wy01NjAgLTM3NiAxNDg5IDEwMDBdL0Fz Y2VudCA5MDUvRm9udEZhbWlseShBcmlhbCkvQ2FwSGVpZ2h0IDcxOC9YSGVpZ2h0IDUxNS9UeXBl L0ZvbnREZXNjcmlwdG9yL0l0YWxpY0FuZ2xlIC0xNT4+DWVuZG9iag02NiAwIG9iag08PC9SZWN0 WzEzMS4zNCAxNC4zNjMzIDIzMy4zMTggMjYuMzk2M10vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cg MC9UeXBlL0JvcmRlcj4+L0EgNjQgMCBSL0YgNC9IL0kvU3RydWN0UGFyZW50IDkvQm9yZGVyWzAg MCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTY3IDAgb2JqDTw8L1N1YnR5cGUvVHlwZTAvRGVzY2Vu ZGFudEZvbnRzWzQ1IDAgUl0vQmFzZUZvbnQvRElKSENJK0NhbGlicmktQm9sZC9Ub1VuaWNvZGUg NjkgMCBSL0VuY29kaW5nL0lkZW50aXR5LUgvVHlwZS9Gb250Pj4NZW5kb2JqDTY4IDAgb2JqDTw8 L1N1YnR5cGUvVHlwZTAvRGVzY2VuZGFudEZvbnRzWzExMTIgMCBSXS9CYXNlRm9udC9ESUpIQ0gr U2ltU3VuL1RvVW5pY29kZSA3MSAwIFIvRW5jb2RpbmcvSWRlbnRpdHktSC9UeXBlL0ZvbnQ+Pg1l bmRvYmoNNjkgMCBvYmoNPDwvTGVuZ3RoIDIxNS9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0K aN5UUDFuwzAM3PUKjg0ySHEzGgaKdPHQtKid7opEuwJqSqDlwb+PJDgJOpAEjzzckfLUvrfkIsgv 9qbDCIMjyzj7hQ3CFUdHcKjAOhO3rmQz6QAykbt1jji1NHioayG/03COvMJL31d7tQP5yRbZ0ZiQ Y3X5SUi3hPCHE1IEBU0DFgchTx86nPWEIAvxCfZrQKhKf9i0vcU5aIOsaUSolVKvzb0g2f/zO+s6 mF/N4rn9phqRtjc88/JNDx9mYU4Wy+HFSLbgCB+/CT5ktRziJsAA1epqcQoNCmVuZHN0cmVhbQ1l bmRvYmoNNzAgMCBvYmoNPDwvU3VidHlwZS9UeXBlMC9EZXNjZW5kYW50Rm9udHNbNDkgMCBSXS9C YXNlRm9udC9ESUpISkcrTVNNaW5jaG8vVG9Vbmljb2RlIDc2IDAgUi9FbmNvZGluZy9JZGVudGl0 eS1IL1R5cGUvRm9udD4+DWVuZG9iag03MSAwIG9iag08PC9MZW5ndGggMzEzMi9GaWx0ZXIvRmxh dGVEZWNvZGU+PnN0cmVhbQ0KaN58mUuvHLcRRvf6FbNMkIX4fgCCgOmebsCLPBA72feDdAREVxdX 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 b0DU9YLC0fjw2KSoZIKuZePDz6kxBt2Ixqfy1KXRg64YJlTenCLvbcoyx4cnpOfziwL++ETelXjZ 0dIbHx63Vh5/dICa6+qst6PM+5CUj5mnmWeJHicX6pbOUNNXJc8UHSnRqaA3qPBH3gmo9VbVPMaH AjqlzaoRxodadqBqqkre+FB0paBnFRcsp1Wc7tTLFLTHp1Eoe1AMU8+wUQXLz4rL5bPxsRReKK5o ddqyU3GhelYVjsaHIgnlqKoJH59ClUN32EPeHR+u/1xzT5XwxqdyR9fPT90Ux4frMRfGel6ju6rb 7riUk9+r7jw+pOsqP4/D/KLxcZzpz8NTS8N2TkYV7capqQdPx3k/LY4/Rv7I+So9x+mgCU/K5cYh UTgI9KKXlFCO82AlWmtl5U5Av6qt2srs3eth+Xr0/uWh+vjp7a29fNPLuF6qrzfqTy/tl8fz1y+v 13P09e/dfwQYAJPY+X8KDQplbmRzdHJlYW0NZW5kb2JqDTcyIDAgb2JqDTw8L1JlY3RbMTYxLjEg MTMuMzQzMyAyNjIuOTg5IDI1LjM3NjNdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9C b3JkZXI+Pi9BIDc4IDAgUi9GIDQvSC9JL1N0cnVjdFBhcmVudCAxMC9Cb3JkZXJbMCAwIDBdL1R5 cGUvQW5ub3Q+Pg1lbmRvYmoNNzMgMCBvYmoNPDwvU3VidHlwZS9UcnVlVHlwZS9Gb250RGVzY3Jp cHRvciAxMTAyIDAgUi9MYXN0Q2hhciAxMTkvV2lkdGhzWzQ5OCAwIDAgMjUyIDAgMCA1MDcgNTA3 IDUwNyAwIDUwNyA1MDcgMCA1MDcgMCAyNjggMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDQ3OSAwIDQyMyAw IDAgMCA0NzEgMCAyMjkgMCA0NTUgMjI5IDc5OSA1MjUgNTI3IDAgMCAzNDkgMCAzMzUgMCAwIDcx NV0vQmFzZUZvbnQvRURJRURHK0NhbGlicmkvRmlyc3RDaGFyIDQzL0VuY29kaW5nL1dpbkFuc2lF bmNvZGluZy9UeXBlL0ZvbnQ+Pg1lbmRvYmoNNzQgMCBvYmoNPDwvU3VidHlwZS9UcnVlVHlwZS9G b250RGVzY3JpcHRvciAxMTAxIDAgUi9MYXN0Q2hhciAxNDgvV2lkdGhzWzI3OCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDI3OCAwIDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2 IDU1NiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMzMzIDMzM10vQmFzZUZvbnQvQXJpYWxNVC9GaXJzdENoYXIgMzIvRW5jb2Rp bmcvV2luQW5zaUVuY29kaW5nL1R5cGUvRm9udD4+DWVuZG9iag03NSAwIG9iag08PC9MZW5ndGgg MjE2L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpo3lRQu27DMAzc9RUcW3SQ4mY0DBTJ4qEP xG53RaIdATEl0PLgv48kOAk6kASPPNyR8tAeW3IR5A9702GEwZFlnP3CBuGMoyPYVWCdiVtXspl0 AJnI3TpHnFoaPNS1kKc0nCOv8NL3+zf1CvKbLbKjMSH76vcvId0SwhUnpAgKmgYsDkIePnX40hOC LMQn2K8BoSr9btP2FuegDbKmEaFWSr0394Jk/8/vrPNgLprFc/tDNSJtb3jm5ZsePszCnCyWw4uR bMERPn4TfMhqOcRNgAEA2SRqdQoNCmVuZHN0cmVhbQ1lbmRvYmoNNzYgMCBvYmoNPDwvTGVuZ3Ro IDIzOS9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0KaN5UkE1vwyAMhu/8Ch879QCl204R0tZK XSrtQ0u2OwUnRVoIcsgh/36QRdl2AGS/fuwX80N5LL2LwN+oNxVGaJy3hEM/kkG4YOs87CRYZ+IS zbfpdACe4GoaInalb3ooCsbfkzhEmmBzLM9P59O2rvdbcQP8lSyS8y1s6lv58Zky1RjCF3boIwhQ Ciw2jB+edXjRHQL/y/9q9RQQ5BzvFie9xSFog6R9i1AIIfYqPfdGKEBv/+tM/lCXxlw1sbVaSKHY AhXy7vFBscQuVblL/u9qzoxEyfe8lNlWNuQ8rnsLfciz82HfAgwAwGFxUgoNCmVuZHN0cmVhbQ1l bmRvYmoNNzcgMCBvYmoNPDwvU3VidHlwZS9UeXBlMC9EZXNjZW5kYW50Rm9udHNbMTEwOSAwIFJd L0Jhc2VGb250L0RJSkhLSCtDYWxpYnJpL1RvVW5pY29kZSA3NSAwIFIvRW5jb2RpbmcvSWRlbnRp dHktSC9UeXBlL0ZvbnQ+Pg1lbmRvYmoNNzggMCBvYmoNPDwvVVJJKGh0dHA6Ly93d3cubWFydGlu bGlua2luZy5jb20vKS9TL1VSST4+DWVuZG9iag03OSAwIG9iag08PC9SZWN0WzE2MS44OCAxNC4w MDMzIDI2My43NjkgMjYuMDM2M10vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRl cj4+L0EgODAgMCBSL0YgNC9IL0kvU3RydWN0UGFyZW50IDExL0JvcmRlclswIDAgMF0vVHlwZS9B bm5vdD4+DWVuZG9iag04MCAwIG9iag08PC9VUkkoaHR0cDovL3d3dy5tYXJ0aW5saW5raW5nLmNv bS8pL1MvVVJJPj4NZW5kb2JqDTgxIDAgb2JqDTw8L1VSSShodHRwOi8vd3d3Lm1hcnRpbmxpbmtp bmcuY29tLykvUy9VUkk+Pg1lbmRvYmoNODIgMCBvYmoNPDwvU3VidHlwZS9UcnVlVHlwZS9Gb250 RGVzY3JpcHRvciAxMDkzIDAgUi9MYXN0Q2hhciA1Ny9XaWR0aHNbMjc4IDAgMCAwIDAgMCA3MjIg MCAwIDAgMCAwIDAgMCAwIDAgNTU2IDU1NiA1NTYgMCAwIDU1NiAwIDAgMCA1NTZdL0Jhc2VGb250 L0FyaWFsLUJvbGRNVC9GaXJzdENoYXIgMzIvRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nL1R5cGUv Rm9udD4+DWVuZG9iag04MyAwIG9iag08PC9TdWJ0eXBlL1RydWVUeXBlL0ZvbnREZXNjcmlwdG9y IDY1IDAgUi9MYXN0Q2hhciAzMi9XaWR0aHNbMjc4XS9CYXNlRm9udC9BcmlhbC1Cb2xkSXRhbGlj TVQvRmlyc3RDaGFyIDMyL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9UeXBlL0ZvbnQ+Pg1lbmRv YmoNODQgMCBvYmoNPDwvUmVjdFsxNjEuODggMTMuOTQzMyAyNjMuNzY5IDI1Ljk3NjNdL1N1YnR5 cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDgxIDAgUi9GIDQvSC9JL1N0cnVj dFBhcmVudCAxMi9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNODUgMCBvYmoNPDwv U3VidHlwZS9UcnVlVHlwZS9Gb250RGVzY3JpcHRvciA0MCAwIFIvTGFzdENoYXIgMTIyL1dpZHRo c1szMzMgMCAwIDAgMCAwIDAgMCAwIDAgMCA2NjAgMCAwIDAgMCA2NjcgNjY3IDY2NyA2NjcgNjY3 IDY2NyA2NjcgMCA2NjcgNjY3IDMzMyAwIDAgMCAwIDAgMCA3NzggNzc4IDc3OCA3NzggNzIyIDY2 NyAwIDAgMzg5IDAgMCA2NjcgOTQ0IDgzMyA4MzMgNzIyIDAgNzc4IDcyMiA3MjIgODMzIDAgMTAw MCAwIDAgMCAwIDAgMCAwIDAgMCA2NjcgNjY3IDY2NyA2NjcgNjY3IDM4OSA2NjcgNjY3IDMzMyAw IDY2NyAzMzMgMTAwMCA2NjcgNjY3IDY2NyA2NjcgNDQ0IDYxMSA0NDQgNjY3IDAgOTQ0IDY2NyA2 MTEgNTU2XS9CYXNlRm9udC9BcmlhbC1CbGFjay9GaXJzdENoYXIgMzIvRW5jb2RpbmcvV2luQW5z aUVuY29kaW5nL1R5cGUvRm9udD4+DWVuZG9iag04NiAwIG9iag08PC9TdWJ0eXBlL1RydWVUeXBl L0ZvbnREZXNjcmlwdG9yIDExMDEgMCBSL0xhc3RDaGFyIDE0Ni9XaWR0aHNbMjc4IDAgMCAwIDAg ODg5IDAgMCAzMzMgMzMzIDAgNTg0IDI3OCAzMzMgMjc4IDI3OCA1NTYgNTU2IDU1NiA1NTYgNTU2 IDU1NiA1NTYgMCA1NTYgNTU2IDI3OCAwIDAgMCAwIDAgMTAxNSA2NjcgNjY3IDcyMiA3MjIgNjY3 IDYxMSAwIDcyMiAyNzggMCAwIDU1NiA4MzMgMCAwIDY2NyAwIDAgNjY3IDYxMSA3MjIgMCA5NDQg NjY3IDY2NyAwIDAgMCAwIDAgMCAwIDU1NiA1NTYgNTAwIDU1NiA1NTYgMjc4IDU1NiA1NTYgMjIy IDIyMiA1MDAgMjIyIDgzMyA1NTYgNTU2IDU1NiA1NTYgMzMzIDUwMCAyNzggNTU2IDUwMCA3MjIg NTAwIDUwMCA1MDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDIyMl0vQmFzZUZvbnQvQXJpYWxNVC9GaXJzdENoYXIgMzIvRW5jb2RpbmcvV2luQW5zaUVuY29k aW5nL1R5cGUvRm9udD4+DWVuZG9iag04NyAwIG9iag08PC9TdWJ0eXBlL1RydWVUeXBlL0ZvbnRE ZXNjcmlwdG9yIDEwOTMgMCBSL0xhc3RDaGFyIDEyMS9XaWR0aHNbMjc4IDAgMCAwIDAgODg5IDcy MiAwIDAgMCAwIDAgMCAzMzMgMjc4IDAgMCA1NTYgMCA1NTYgMCA1NTYgMCAwIDAgMCAzMzMgMCAw IDAgMCAwIDAgNzIyIDcyMiA3MjIgMCAwIDAgNzc4IDAgMjc4IDAgMCA2MTEgODMzIDcyMiA3Nzgg MCAwIDAgNjY3IDYxMSAwIDY2NyAwIDAgMCAwIDAgMCAwIDAgMCAwIDU1NiA2MTEgNTU2IDYxMSA1 NTYgMzMzIDYxMSA2MTEgMjc4IDAgNTU2IDI3OCA4ODkgNjExIDYxMSA2MTEgMCAzODkgNTU2IDMz MyA2MTEgNTU2IDc3OCAwIDU1Nl0vQmFzZUZvbnQvQXJpYWwtQm9sZE1UL0ZpcnN0Q2hhciAzMi9F bmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvVHlwZS9Gb250Pj4NZW5kb2JqDTg4IDAgb2JqDTw8L1N1 YnR5cGUvVHJ1ZVR5cGUvRm9udERlc2NyaXB0b3IgNDEgMCBSL0xhc3RDaGFyIDU3L1dpZHRoc1sy NTAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTAwIDAgNTAwIDUwMCA1MDAgNTAwIDAg MCA1MDAgNTAwXS9CYXNlRm9udC9UaW1lc05ld1JvbWFuUFMtQm9sZE1UL0ZpcnN0Q2hhciAzMi9F bmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvVHlwZS9Gb250Pj4NZW5kb2JqDTg5IDAgb2JqDTw8L0Zp cnN0IDkwIDAgUi9Db3VudCA1L0xhc3QgOTEgMCBSPj4NZW5kb2JqDTkwIDAgb2JqDTw8L0ZpcnN0 IDkzIDAgUi9QYXJlbnQgODkgMCBSL0EgOTQgMCBSL05leHQgOTEgMCBSL0NvdW50IDMvTGFzdCA5 NSAwIFIvU0UgMTQxIDAgUi9UaXRsZShCZXN0IFByYWN0aWNlcyBmb3IgTWFjaGluZXJ5IEx1YnJp Y2F0aW9uLnBkZik+Pg1lbmRvYmoNOTEgMCBvYmoNPDwvUGFyZW50IDg5IDAgUi9BIDkyIDAgUi9Q cmV2IDkwIDAgUi9TRSAxMzIgMCBSL1RpdGxlKFJlZ2lzdHJhdGlvbkZvcm0tV2hpdG5leSk+Pg1l bmRvYmoNOTIgMCBvYmoNPDwvRFszNSAwIFIvRml0SCA4NDZdL1MvR29Ubz4+DWVuZG9iag05MyAw IG9iag08PC9QYXJlbnQgOTAgMCBSL0EgOTkgMCBSL05leHQgOTcgMCBSL1NFIDEzOSAwIFIvVGl0 bGUoY292ZXIgcGFnZS5wZGYpPj4NZW5kb2JqDTk0IDAgb2JqDTw8L0RbMTA4MSAwIFIvRml0SCA4 NDZdL1MvR29Ubz4+DWVuZG9iag05NSAwIG9iag08PC9QYXJlbnQgOTAgMCBSL0EgOTYgMCBSL1By ZXYgOTcgMCBSL1NFIDE0NSAwIFIvVGl0bGUoTFVCIENOKT4+DWVuZG9iag05NiAwIG9iag08PC9E WzE4IDAgUi9GaXRIIDg0Nl0vUy9Hb1RvPj4NZW5kb2JqDTk3IDAgb2JqDTw8L1BhcmVudCA5MCAw IFIvQSA5OCAwIFIvTmV4dCA5NSAwIFIvUHJldiA5MyAwIFIvU0UgMTQ0IDAgUi9UaXRsZShsdWIg ZW4pPj4NZW5kb2JqDTk4IDAgb2JqDTw8L0RbMSAwIFIvRml0SCA4NDZdL1MvR29Ubz4+DWVuZG9i ag05OSAwIG9iag08PC9EWzEwODEgMCBSL0ZpdEggODQ2XS9TL0dvVG8+Pg1lbmRvYmoNMTAwIDAg b2JqDTw8L0sgMTAxIDAgUi9QYXJlbnRUcmVlIDEwMiAwIFIvUGFyZW50VHJlZU5leHRLZXkgMTYv Um9sZU1hcCAxMDMgMCBSL1R5cGUvU3RydWN0VHJlZVJvb3QvQ2xhc3NNYXAgMTA0IDAgUj4+DWVu ZG9iag0xMDEgMCBvYmoNPDwvS1sxNDEgMCBSIDEzMiAwIFJdL1AgMTAwIDAgUi9TL0RvY3VtZW50 Pj4NZW5kb2JqDTEwMiAwIG9iag08PC9OdW1zWzBbMTA3MCAwIFIgMTA2NyAwIFIgMTA2MyAwIFIg MTA2NCAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2 MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAw IFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIg MTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2 MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAw IFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIg MTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA2MSAwIFIgMTA1NSAwIFIgMTA1NiAwIFIgMTA1 NyAwIFIgMTM1IDAgUiAxMjkgMCBSIDEwNzQgMCBSXTFbNTkyIDAgUiA1OTMgMCBSIDU5NCAwIFIg NTk1IDAgUiA1OTYgMCBSIDU5NyAwIFIgNTk4IDAgUiA1OTkgMCBSIDYwMCAwIFIgNjAxIDAgUiA2 MDIgMCBSIDYwMyAwIFIgNjA0IDAgUiA2MDUgMCBSIDYwNiAwIFIgNjA3IDAgUiA2MDggMCBSIDYw OSAwIFIgNjEwIDAgUiA2MTEgMCBSIDYxMiAwIFIgNjEzIDAgUiA2MTQgMCBSIDYxNSAwIFIgNjE2 IDAgUiA2MTcgMCBSIDYxOCAwIFIgNjE5IDAgUiA2MjAgMCBSIDYyMSAwIFIgNjIyIDAgUiA2MjMg MCBSIDEwMTQgMCBSIDEwMTUgMCBSIDEwMTIgMCBSIDEyMyAwIFIgMTAxMiAwIFIgOTk4IDAgUiA5 OTkgMCBSIDEwMDAgMCBSIDEwMDEgMCBSIDEwMDIgMCBSIDEwMDMgMCBSIDEwMDQgMCBSXTJbNjI3 IDAgUiA2MjggMCBSIDYyOSAwIFIgNjMwIDAgUiA2MzEgMCBSIDYzMiAwIFIgNjMzIDAgUiA2MzQg MCBSIDYzNSAwIFIgOTg2IDAgUiA5ODggMCBSIDk4MiAwIFIgOTg0IDAgUiA5NzggMCBSIDk4MCAw IFIgOTc0IDAgUiA5NzYgMCBSIDk3MCAwIFIgOTcyIDAgUiA5NjYgMCBSIDk2OCAwIFIgOTYyIDAg UiA5NjQgMCBSIDk1OCAwIFIgOTYwIDAgUiA5NTQgMCBSIDk1NiAwIFIgOTUwIDAgUiA5NTIgMCBS IDk0NiAwIFIgOTQ4IDAgUiA5NDAgMCBSIDk0NCAwIFIgOTQyIDAgUiA5MzYgMCBSIDkzOCAwIFIg OTMyIDAgUiA5MzQgMCBSIDkyOCAwIFIgOTMwIDAgUiA5MjQgMCBSIDkyNiAwIFIgOTIwIDAgUiA5 MjIgMCBSIDkxNiAwIFIgOTE4IDAgUiA5MTIgMCBSIDkxNCAwIFIgOTA4IDAgUiA5MTAgMCBSIDkw NCAwIFIgOTA2IDAgUiA5MDAgMCBSIDkwMiAwIFIgODk2IDAgUiA4OTggMCBSIDg5MiAwIFIgODk0 IDAgUiA2MzcgMCBSIDg2NCAwIFIgODYyIDAgUiA4NTggMCBSIDg1OSAwIFIgODU2IDAgUiAxMjQg MCBSIDg1NiAwIFJdM1s2NDIgMCBSIDg1MiAwIFIgODU0IDAgUiA4NDggMCBSIDg1MCAwIFIgODQ0 IDAgUiA4NDYgMCBSIDg0MCAwIFIgODQyIDAgUiA4MzYgMCBSIDgzOCAwIFIgODMyIDAgUiA4MzQg MCBSIDgyOCAwIFIgODMwIDAgUiA4MjQgMCBSIDgyNiAwIFIgODIwIDAgUiA4MjIgMCBSIDgxNiAw IFIgODE4IDAgUiA2NDQgMCBSIDgwMSAwIFIgODAzIDAgUiA3OTcgMCBSIDc5OSAwIFIgNzkzIDAg UiA3OTUgMCBSIDc4OSAwIFIgNzkxIDAgUiA3ODUgMCBSIDc4NyAwIFIgNzgxIDAgUiA3ODMgMCBS IDc3NyAwIFIgNzc5IDAgUiA3NzMgMCBSIDc3NSAwIFIgNzY3IDAgUiA3NzEgMCBSIDc2OSAwIFIg NjQ2IDAgUiA2NDcgMCBSIDY0OCAwIFIgNjQ5IDAgUiA2NTAgMCBSIDY1MSAwIFIgNjUyIDAgUiA2 NTMgMCBSIDY1NCAwIFIgNjU1IDAgUiA3NDUgMCBSIDc0MyAwIFIgNzExIDAgUiA3MTIgMCBSIDcx MyAwIFIgNzE0IDAgUiA3MTUgMCBSIDcxNiAwIFIgNzE3IDAgUiA3MTggMCBSIDcxOSAwIFIgNzIw IDAgUiA3MjEgMCBSIDcyMiAwIFIgNzIzIDAgUiA3MjQgMCBSIDcyNSAwIFIgNzI2IDAgUiA2Nzcg MCBSIDY3OCAwIFIgNjc5IDAgUiA2ODAgMCBSIDY4MSAwIFIgNjgyIDAgUiA2ODMgMCBSIDY4NCAw IFIgNjg1IDAgUiA2ODYgMCBSIDY4NyAwIFIgNjg4IDAgUiA2ODkgMCBSIDY5MCAwIFIgNjkxIDAg UiA2OTIgMCBSIDY5MyAwIFIgNjc1IDAgUiA2NzMgMCBSIDY3MSAwIFIgMTI1IDAgUiA2NzEgMCBS IDY2NSAwIFIgNjY2IDAgUl00WzE0NyAwIFIgMTQ4IDAgUiAxNDkgMCBSIDE1MCAwIFIgMTUxIDAg UiAxNTIgMCBSIDE1MyAwIFIgMTU0IDAgUiAxNTUgMCBSIDE1NiAwIFIgMTU3IDAgUiAxNTggMCBS IDE1OSAwIFIgMTYwIDAgUiAxNjEgMCBSIDE2MiAwIFIgMTYzIDAgUiAxNjQgMCBSIDE2NSAwIFIg MTY2IDAgUiAxNjcgMCBSIDE2OCAwIFIgMTY5IDAgUiAxNzAgMCBSIDE3MSAwIFIgMTcyIDAgUiAx NzMgMCBSIDE3NCAwIFIgMTc1IDAgUiAxNzYgMCBSIDE3NyAwIFIgMTc4IDAgUiAxNzkgMCBSIDE4 MCAwIFIgMTgxIDAgUiAxODIgMCBSIDU1MSAwIFIgNTUyIDAgUiA1NDkgMCBSIDEyNiAwIFIgNTQ5 IDAgUl01WzE4NSAwIFIgMTg2IDAgUiAxODcgMCBSIDE4OCAwIFIgMTg5IDAgUiAxOTAgMCBSIDE5 MSAwIFIgMTkyIDAgUiAxOTMgMCBSIDE5NCAwIFIgNTM2IDAgUiA1MzggMCBSIDUzMiAwIFIgNTM0 IDAgUiA1MjggMCBSIDUzMCAwIFIgNTI0IDAgUiA1MjYgMCBSIDUyMCAwIFIgNTIyIDAgUiA1MTYg MCBSIDUxOCAwIFIgNTEyIDAgUiA1MTQgMCBSIDUwOCAwIFIgNTEwIDAgUiA1MDQgMCBSIDUwNiAw IFIgNTAwIDAgUiA1MDIgMCBSIDQ5NiAwIFIgNDk4IDAgUiA0OTAgMCBSIDQ5NCAwIFIgNDkyIDAg UiA0ODYgMCBSIDQ4OCAwIFIgNDgyIDAgUiA0ODQgMCBSIDQ3OCAwIFIgNDgwIDAgUiA0NzQgMCBS IDQ3NiAwIFIgNDcwIDAgUiA0NzIgMCBSIDQ2NiAwIFIgNDY4IDAgUiA0NjIgMCBSIDQ2NCAwIFIg NDU4IDAgUiA0NjAgMCBSIDQ1NCAwIFIgNDU2IDAgUiA0NTAgMCBSIDQ1MiAwIFIgNDQ2IDAgUiA0 NDggMCBSIDQ0MiAwIFIgNDQ0IDAgUiAxOTYgMCBSIDQxMyAwIFIgNDE1IDAgUiA0MDkgMCBSIDQx MSAwIFIgNDA1IDAgUiA0MDcgMCBSIDQwMSAwIFIgNDAzIDAgUiAzNjQgMCBSIDM2MiAwIFIgMzYw IDAgUiAzNTYgMCBSIDM1NyAwIFIgMzU0IDAgUiAxMjcgMCBSIDM1NCAwIFJdNlszOTcgMCBSIDM5 OSAwIFIgMzkzIDAgUiAzOTUgMCBSIDM4OSAwIFIgMzkxIDAgUiAzODUgMCBSIDM4NyAwIFIgMzgx IDAgUiAzODMgMCBSIDM3NyAwIFIgMzc5IDAgUiAyMDMgMCBSIDM1MiAwIFIgMzQ4IDAgUiAzNTAg MCBSIDM0NCAwIFIgMzQ2IDAgUiAzNDAgMCBSIDM0MiAwIFIgMzM2IDAgUiAzMzggMCBSIDMzMiAw IFIgMzM0IDAgUiAzMjggMCBSIDMzMCAwIFIgMzI0IDAgUiAzMjYgMCBSIDMyMCAwIFIgMzIyIDAg UiAyMDUgMCBSIDIwNiAwIFIgMjA3IDAgUiAyMDggMCBSIDIwOSAwIFIgMjEwIDAgUiAyMTEgMCBS IDIxMiAwIFIgMjEzIDAgUiAyMTQgMCBSIDIxNSAwIFIgMjk3IDAgUiAyNjUgMCBSIDIzMSAwIFIg MjY2IDAgUiAyNjcgMCBSIDI2OCAwIFIgMjY5IDAgUiAyNzAgMCBSIDI3MSAwIFIgMjcyIDAgUiAy NzMgMCBSIDI3NCAwIFIgMjc1IDAgUiAyNzYgMCBSIDI3NyAwIFIgMjc4IDAgUiAyNzkgMCBSIDI4 MCAwIFIgMjMzIDAgUiAyMzQgMCBSIDIzNSAwIFIgMjM2IDAgUiAyMzcgMCBSIDIzOCAwIFIgMjM5 IDAgUiAyNDAgMCBSIDI0MSAwIFIgMjQyIDAgUiAyNDMgMCBSIDI0NCAwIFIgMjQ1IDAgUiAyNDYg MCBSIDI0NyAwIFIgMjQ4IDAgUiAyMzEgMCBSIDIzMSAwIFIgMjMxIDAgUiAyMzEgMCBSIDIzMSAw IFIgMjMxIDAgUiAyMzEgMCBSIDIzMSAwIFIgMjMxIDAgUiAyMzEgMCBSIDIzMSAwIFIgMjI5IDAg UiAyMjUgMCBSIDIyNiAwIFIgMjIzIDAgUiAxMjggMCBSIDIyMyAwIFJdNyAxMjMgMCBSIDggMTI0 IDAgUiA5IDEyNSAwIFIgMTAgMTI2IDAgUiAxMSAxMjcgMCBSIDEyIDEyOCAwIFIgMTMgMTI5IDAg UiAxNCAxMjkgMCBSIDE1IDEzMCAwIFJdPj4NZW5kb2JqDTEwMyAwIG9iag08PC9JbmxpbmVTaGFw ZS9GaWd1cmUvRGVmYXVsdC9QL0Ryb3BDYXAvRmlndXJlL091dGxpbmUvU3Bhbi9TdWJzY3JpcHQv U3Bhbi9TdXBlcnNjcmlwdC9TcGFuL1RPQS9UT0MvVE9GL1RPQy9TdHJpa2VvdXQvU3Bhbi9UZXh0 Qm94L0Rpdi9Ob3JtYWwvUC9FbmRub3RlL05vdGUvRm9vdG5vdGUvTm90ZS9VbmRlcmxpbmUvU3Bh bi9UT0ZJL1RPQ0kvRnJhbWUvRGl2LyNFNiNBRCNBMyNFNiM5NiM4Ny9QL1NoYXBlL0ZpZ3VyZS9U T0FJL1RPQ0k+Pg1lbmRvYmoNMTA0IDAgb2JqDTw8L0RlZmF1bHQgMTA1IDAgUi8jRTYjQUQjQTMj RTYjOTYjODcrMVsxMTggMCBSIDExOSAwIFIgMTIwIDAgUiAxMjEgMCBSIDEyMiAwIFJdL0xJKzEg MTA2IDAgUi9Ob3JtYWwgMTA3IDAgUi9MSVsxMTUgMCBSIDExNiAwIFIgMTE3IDAgUl0vI0U2I0FE I0EzI0U2Izk2Izg3WzEwOCAwIFIgMTA5IDAgUiAxMTAgMCBSIDExMSAwIFIgMTEyIDAgUiAxMTMg MCBSIDExNCAwIFJdPj4NZW5kb2JqDTEwNSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxp Z24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dElu ZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMTA2IDAgb2Jq DTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9M clRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJ bmRlbnQgMzYuMD4+DWVuZG9iag0xMDcgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWdu L0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dElu ZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMTA4IDAgb2Jq DTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2Rl L0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJ bmRlbnQgMC4wPj4NZW5kb2JqDTEwOSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24v U3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVu dCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMTEwIDAgb2JqDTw8 L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xy VGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMTkzLjAvRW5kSW5kZW50IDAuMC9TdGFydElu ZGVudCAwLjA+Pg1lbmRvYmoNMTExIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9T dGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50 IDMwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMTEyIDAgb2JqDTw8 L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRi L1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50 IDM2LjA+Pg1lbmRvYmoNMTEzIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFy dC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IDAu MC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0xMTQgMCBvYmoNPDwvU3Bh Y2VBZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3Bh Y2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYu MD4+DWVuZG9iag0xMTUgMCBvYmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0L08v TGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgLTE4LjAv RW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTExNiAwIG9iag08PC9TcGFj ZUFmdGVyIDAuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFj ZUJlZm9yZSAwLjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDM2 LjA+Pg1lbmRvYmoNMTE3IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5 L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgLTE4 LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTExOCAwIG9iag08PC9T cGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRi L1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50 IDAuMD4+DWVuZG9iag0xMTkgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3Rp ZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAx OTMuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0xMjAgMCBvYmoNPDwv U3BhY2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIv U3BhY2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgMzAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50 IDAuMD4+DWVuZG9iag0xMjEgMCBvYmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0 L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgMC4w L0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag0xMjIgMCBvYmoNPDwvU3Bh Y2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3Bh Y2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4w Pj4NZW5kb2JqDTEyMyAwIG9iag08PC9LWzM1PDwvT2JqIDU4IDAgUi9QZyAxIDAgUi9UeXBlL09C SlI+Pl0vUCAxMDEyIDAgUi9TL0xpbmsvUGcgMSAwIFI+Pg1lbmRvYmoNMTI0IDAgb2JqDTw8L0tb NjQ8PC9PYmogNjIgMCBSL1BnIDEyIDAgUi9UeXBlL09CSlI+Pl0vUCA4NTYgMCBSL1MvTGluay9Q ZyAxMiAwIFI+Pg1lbmRvYmoNMTI1IDAgb2JqDTw8L0tbODk8PC9PYmogNjYgMCBSL1BnIDE1IDAg Ui9UeXBlL09CSlI+Pl0vUCA2NzEgMCBSL1MvTGluay9QZyAxNSAwIFI+Pg1lbmRvYmoNMTI2IDAg b2JqDTw8L0tbMzk8PC9PYmogNzIgMCBSL1BnIDE4IDAgUi9UeXBlL09CSlI+Pl0vUCA1NDkgMCBS L1MvTGluay9QZyAxOCAwIFI+Pg1lbmRvYmoNMTI3IDAgb2JqDTw8L0tbNzQ8PC9PYmogNzkgMCBS L1BnIDI5IDAgUi9UeXBlL09CSlI+Pl0vUCAzNTQgMCBSL1MvTGluay9QZyAyOSAwIFI+Pg1lbmRv YmoNMTI4IDAgb2JqDTw8L0tbOTA8PC9PYmogODQgMCBSL1BnIDMyIDAgUi9UeXBlL09CSlI+Pl0v UCAyMjMgMCBSL1MvTGluay9QZyAzMiAwIFI+Pg1lbmRvYmoNMTI5IDAgb2JqDTw8L0tbNDk8PC9P YmogMTA4MyAwIFIvUGcgMTA4MSAwIFIvVHlwZS9PQkpSPj48PC9PYmogMTA4NCAwIFIvUGcgMTA4 MSAwIFIvVHlwZS9PQkpSPj5dL1AgMTM1IDAgUi9TL0xpbmsvUGcgMTA4MSAwIFI+Pg1lbmRvYmoN MTMwIDAgb2JqDVsxMzEgMCBSXQ1lbmRvYmoNMTMxIDAgb2JqDTw8L0sgMC9QIDEzMiAwIFIvUy9Q YXJ0L1BnIDM1IDAgUj4+DWVuZG9iag0xMzIgMCBvYmoNPDwvSW5mbyAxMzMgMCBSL0sgMTMxIDAg Ui9QIDEwMSAwIFIvUy9QYXJ0L01ldGFkYXRhIDEzNCAwIFI+Pg1lbmRvYmoNMTMzIDAgb2JqDTw8 L0NyZWF0aW9uRGF0ZShEOjIwMDkwMzI2MTQwOTExKzA4JzAwJykvQXV0aG9yKFdoaXRuZXlTaGVu KS9DcmVhdG9yKFBTY3JpcHQ1LmRsbCBWZXJzaW9uIDUuMi4yKS9Qcm9kdWNlcihBY3JvYmF0IERp c3RpbGxlciA4LjEuMCBcKFdpbmRvd3NcKSkvTW9kRGF0ZShEOjIwMDkwMzI2MTQwOTExKzA4JzAw JykvVGl0bGUoUmVnaXN0cmF0aW9uRm9ybS1XaGl0bmV5KT4+DWVuZG9iag0xMzQgMCBvYmoNPDwv U3VidHlwZS9YTUwvTGVuZ3RoIDE1NDUvVHlwZS9NZXRhZGF0YT4+c3RyZWFtDQo8P3hwYWNrZXQg YmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHht bG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA0LjAtYzMxNiA0 NC4yNTM5MjEsIFN1biBPY3QgMDEgMjAwNiAxNzoxNDozOSI+CiAgIDxyZGY6UkRGIHhtbG5zOnJk Zj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxy ZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDov L25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+UFNjcmlw dDUuZGxsIFZlcnNpb24gNS4yLjI8L3hhcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhhcDpNb2Rp ZnlEYXRlPjIwMDktMDMtMjZUMTQ6MDk6MTErMDg6MDA8L3hhcDpNb2RpZnlEYXRlPgogICAgICAg ICA8eGFwOkNyZWF0ZURhdGU+MjAwOS0wMy0yNlQxNDowOToxMSswODowMDwveGFwOkNyZWF0ZURh dGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjph Ym91dD0iIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRz LzEuMS8iPgogICAgICAgICA8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgog ICAgICAgICA8ZGM6dGl0bGU+CiAgICAgICAgICAgIDxyZGY6QWx0PgogICAgICAgICAgICAgICA8 cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1bHQiPlJlZ2lzdHJhdGlvbkZvcm0tV2hpdG5leTwvcmRm OmxpPgogICAgICAgICAgICA8L3JkZjpBbHQ+CiAgICAgICAgIDwvZGM6dGl0bGU+CiAgICAgICAg IDxkYzpjcmVhdG9yPgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjps aT5XaGl0bmV5U2hlbjwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwv ZGM6Y3JlYXRvcj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRp b24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnBkZj0iaHR0cDovL25zLmFkb2JlLmNv bS9wZGYvMS4zLyI+CiAgICAgICAgIDxwZGY6UHJvZHVjZXI+QWNyb2JhdCBEaXN0aWxsZXIgOC4x LjAgKFdpbmRvd3MpPC9wZGY6UHJvZHVjZXI+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAg ICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXBNTT0i aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyI+CiAgICAgICAgIDx4YXBNTTpEb2N1bWVu dElEPnV1aWQ6YWZkYjNhMTYtZmUwNi00ZjE0LThhYzAtNjMzNGJmODI3NGFhPC94YXBNTTpEb2N1 bWVudElEPgogICAgICAgICA8eGFwTU06SW5zdGFuY2VJRD51dWlkOmVjZGM5Y2Q5LTViNmUtNGFk NC04NTRlLTA4MThhYzUyOGVjZTwveGFwTU06SW5zdGFuY2VJRD4KICAgICAgPC9yZGY6RGVzY3Jp cHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InIiPz4NCmVu ZHN0cmVhbQ1lbmRvYmoNMTM1IDAgb2JqDTw8L0EgMTM2IDAgUi9LWzQ4IDEyOSAwIFJdL1AgMTM3 IDAgUi9TL05vcm1hbC9QZyAxMDgxIDAgUj4+DWVuZG9iag0xMzYgMCBvYmoNPDwvU3BhY2VBZnRl ciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZv cmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5k b2JqDTEzNyAwIG9iag08PC9LWzEwNzIgMCBSIDEzNSAwIFJdL1AgMTM4IDAgUi9TL1RleHRCb3g+ Pg1lbmRvYmoNMTM4IDAgb2JqDTw8L0tbMTA1MCAwIFIgMTA1MSAwIFIgMTA1MiAwIFIgMTA1MyAw IFIgMTA1NCAwIFIgMTM3IDAgUl0vUCAxMzkgMCBSL1MvU2VjdD4+DWVuZG9iag0xMzkgMCBvYmoN PDwvSyAxMzggMCBSL1AgMTQwIDAgUi9TL1BhcnQ+Pg1lbmRvYmoNMTQwIDAgb2JqDTw8L0tbMTM5 IDAgUiAxNDQgMCBSIDE0NSAwIFJdL1AgMTQxIDAgUi9TL1BhcnQ+Pg1lbmRvYmoNMTQxIDAgb2Jq DTw8L0luZm8gMTQyIDAgUi9LIDE0MCAwIFIvUCAxMDEgMCBSL1MvUGFydC9NZXRhZGF0YSAxNDMg MCBSPj4NZW5kb2JqDTE0MiAwIG9iag08PC9DcmVhdGlvbkRhdGUoRDoyMDA5MDMyNjE0MTIzNisw OCcwMCcpL0F1dGhvcihhbXloZSkvQ3JlYXRvcihBY3JvYmF0IFBERk1ha2VyIDguMSBmb3IgV29y ZCkvUHJvZHVjZXIoQWNyb2JhdCBEaXN0aWxsZXIgOC4xLjAgXChXaW5kb3dzXCkpL01vZERhdGUo RDoyMDA5MDMyNjE0MTIzNiswOCcwMCcpL0NvbXBhbnkobGlua2luZ2JpeikvVGl0bGUoKT4+DWVu ZG9iag0xNDMgMCBvYmoNPDwvU3VidHlwZS9YTUwvTGVuZ3RoIDE0NTAvVHlwZS9NZXRhZGF0YT4+ c3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5 ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBY TVAgQ29yZSA0LjAtYzMxNiA0NC4yNTM5MjEsIFN1biBPY3QgMDEgMjAwNiAxNzoxNDozOSI+CiAg IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3lu dGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAg IHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6 TW9kaWZ5RGF0ZT4yMDA5LTAzLTI2VDE0OjEyOjM2KzA4OjAwPC94YXA6TW9kaWZ5RGF0ZT4KICAg ICAgICAgPHhhcDpDcmVhdGVEYXRlPjIwMDktMDMtMjZUMTQ6MTI6MzYrMDg6MDA8L3hhcDpDcmVh dGVEYXRlPgogICAgICAgICA8eGFwOk1ldGFkYXRhRGF0ZT4yMDA5LTAzLTI2VDE0OjEyOjM2KzA4 OjAwPC94YXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eGFwOkNyZWF0b3JUb29sPkFjcm9iYXQg UERGTWFrZXIgOC4xIGZvciBXb3JkPC94YXA6Q3JlYXRvclRvb2w+CiAgICAgIDwvcmRmOkRlc2Ny aXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4 bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8ZGM6 Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0PgogICAgICAgICA8ZGM6Y3JlYXRvcj4K ICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGk+YW15aGU8L3JkZjps aT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L2RjOmNyZWF0b3I+CiAgICAgIDwv cmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAg ICAgICAgICB4bWxuczp4YXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyI+CiAg ICAgICAgIDx4YXBNTTpEb2N1bWVudElEPnV1aWQ6MzdjMmRhMDMtMjY1Yi00NmZhLWI0ZTEtZThh YmU1Y2VlYTUxPC94YXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eGFwTU06SW5zdGFuY2VJRD51 dWlkOmU5ZWRiZWZkLWJlM2QtNGU0Ni04MzIzLWQxMmJhODZkZTM2YTwveGFwTU06SW5zdGFuY2VJ RD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFi b3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnBkZj0iaHR0cDovL25zLmFkb2JlLmNvbS9wZGYvMS4z LyI+CiAgICAgICAgIDxwZGY6UHJvZHVjZXI+QWNyb2JhdCBEaXN0aWxsZXIgOC4xLjAgKFdpbmRv d3MpPC9wZGY6UHJvZHVjZXI+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+ CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJyIj8+DQplbmRzdHJlYW0NZW5kb2JqDTE0NCAw IG9iag08PC9LIDU5MSAwIFIvUCAxNDAgMCBSL1MvUGFydD4+DWVuZG9iag0xNDUgMCBvYmoNPDwv SyAxNDYgMCBSL1AgMTQwIDAgUi9TL1BhcnQ+Pg1lbmRvYmoNMTQ2IDAgb2JqDTw8L0tbMTQ3IDAg UiAxNDggMCBSIDE0OSAwIFIgMTUwIDAgUiAxNTEgMCBSIDE1MiAwIFIgMTUzIDAgUiAxNTQgMCBS IDE1NSAwIFIgMTU2IDAgUiAxNTcgMCBSIDE1OCAwIFIgMTU5IDAgUiAxNjAgMCBSIDE2MSAwIFIg MTYyIDAgUiAxNjMgMCBSIDE2NCAwIFIgMTY1IDAgUiAxNjYgMCBSIDE2NyAwIFIgMTY4IDAgUiAx NjkgMCBSIDE3MCAwIFIgMTcxIDAgUiAxNzIgMCBSIDE3MyAwIFIgMTc0IDAgUiAxNzUgMCBSIDE3 NiAwIFIgMTc3IDAgUiAxNzggMCBSIDE3OSAwIFIgMTgwIDAgUiAxODEgMCBSIDE4MiAwIFIgMTgz IDAgUiAxODQgMCBSIDE4NSAwIFIgMTg2IDAgUiAxODcgMCBSIDE4OCAwIFIgMTg5IDAgUiAxOTAg MCBSIDE5MSAwIFIgMTkyIDAgUiAxOTMgMCBSIDE5NCAwIFIgMTk1IDAgUiAxOTYgMCBSIDE5NyAw IFIgMTk4IDAgUiAxOTkgMCBSIDIwMCAwIFIgMjAxIDAgUiAyMDIgMCBSIDIwMyAwIFIgMjA0IDAg UiAyMDUgMCBSIDIwNiAwIFIgMjA3IDAgUiAyMDggMCBSIDIwOSAwIFIgMjEwIDAgUiAyMTEgMCBS IDIxMiAwIFIgMjEzIDAgUiAyMTQgMCBSIDIxNSAwIFIgMjE2IDAgUiAyMTcgMCBSIDIxOCAwIFIg MjE5IDAgUiAyMjAgMCBSIDIyMSAwIFIgMjIyIDAgUl0vUCAxNDUgMCBSL1MvU2VjdD4+DWVuZG9i ag0xNDcgMCBvYmoNPDwvQSA1OTAgMCBSL0MvI0U2I0FEI0EzI0U2Izk2Izg3KzEvSyAwL1AgMTQ2 IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTQ4IDAgb2JqDTw8 L0EgNTg5IDAgUi9LIDEvUCAxNDYgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDE4IDAgUj4+ DWVuZG9iag0xNDkgMCBvYmoNPDwvQSA1ODggMCBSL0sgMi9QIDE0NiAwIFIvUy8jRTYjQUQjQTMj RTYjOTYjODcvUGcgMTggMCBSPj4NZW5kb2JqDTE1MCAwIG9iag08PC9BIDU4NyAwIFIvSyAzL1Ag MTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTUxIDAgb2Jq DTw8L0EgNTg2IDAgUi9LIDQvUCAxNDYgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDE4IDAg Uj4+DWVuZG9iag0xNTIgMCBvYmoNPDwvQSA1ODUgMCBSL0sgNS9QIDE0NiAwIFIvUy8jRTYjQUQj QTMjRTYjOTYjODcvUGcgMTggMCBSPj4NZW5kb2JqDTE1MyAwIG9iag08PC9BIDU4NCAwIFIvSyA2 L1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTU0IDAg b2JqDTw8L0EgNTgzIDAgUi9LIDcvUCAxNDYgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDE4 IDAgUj4+DWVuZG9iag0xNTUgMCBvYmoNPDwvQSA1ODIgMCBSL0sgOC9QIDE0NiAwIFIvUy8jRTYj QUQjQTMjRTYjOTYjODcvUGcgMTggMCBSPj4NZW5kb2JqDTE1NiAwIG9iag08PC9BIDU4MSAwIFIv SyA5L1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTU3 IDAgb2JqDTw8L0EgNTgwIDAgUi9LIDEwL1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9Q ZyAxOCAwIFI+Pg1lbmRvYmoNMTU4IDAgb2JqDTw8L0EgNTc5IDAgUi9LIDExL1AgMTQ2IDAgUi9T LyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTU5IDAgb2JqDTw8L0EgNTc4 IDAgUi9LIDEyL1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRv YmoNMTYwIDAgb2JqDTw8L0EgNTc3IDAgUi9LIDEzL1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5 NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTYxIDAgb2JqDTw8L0EgNTc2IDAgUi9LIDE0L1AgMTQ2 IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTYyIDAgb2JqDTw8 L0EgNTc1IDAgUi9LIDE1L1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+ Pg1lbmRvYmoNMTYzIDAgb2JqDTw8L0EgNTc0IDAgUi9LIDE2L1AgMTQ2IDAgUi9TLyNFNiNBRCNB MyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTY0IDAgb2JqDTw8L0EgNTczIDAgUi9LIDE3 L1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTY1IDAg b2JqDTw8L0EgNTcyIDAgUi9LIDE4L1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAx OCAwIFI+Pg1lbmRvYmoNMTY2IDAgb2JqDTw8L0EgNTcxIDAgUi9LIDE5L1AgMTQ2IDAgUi9TLyNF NiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTY3IDAgb2JqDTw8L0EgNTcwIDAg Ui9LIDIwL1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoN MTY4IDAgb2JqDTw8L0EgNTY5IDAgUi9LIDIxL1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4 Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTY5IDAgb2JqDTw8L0EgNTY4IDAgUi9LIDIyL1AgMTQ2IDAg Ui9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTcwIDAgb2JqDTw8L0Eg NTY3IDAgUi9LIDIzL1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1l bmRvYmoNMTcxIDAgb2JqDTw8L0EgNTY2IDAgUi9LIDI0L1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNF NiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTcyIDAgb2JqDTw8L0EgNTY1IDAgUi9LIDI1L1Ag MTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTczIDAgb2Jq DTw8L0EgNTY0IDAgUi9LIDI2L1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAw IFI+Pg1lbmRvYmoNMTc0IDAgb2JqDTw8L0EgNTYzIDAgUi9LIDI3L1AgMTQ2IDAgUi9TLyNFNiNB RCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTc1IDAgb2JqDTw8L0EgNTYyIDAgUi9L IDI4L1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTc2 IDAgb2JqDTw8L0EgNTYxIDAgUi9LIDI5L1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9Q ZyAxOCAwIFI+Pg1lbmRvYmoNMTc3IDAgb2JqDTw8L0EgNTYwIDAgUi9LIDMwL1AgMTQ2IDAgUi9T LyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTc4IDAgb2JqDTw8L0EgNTU5 IDAgUi9LIDMxL1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRv YmoNMTc5IDAgb2JqDTw8L0EgNTU4IDAgUi9LIDMyL1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5 NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTgwIDAgb2JqDTw8L0EgNTU3IDAgUi9LIDMzL1AgMTQ2 IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTgxIDAgb2JqDTw8 L0EgNTU2IDAgUi9LIDM0L1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+ Pg1lbmRvYmoNMTgyIDAgb2JqDTw8L0EgNTU1IDAgUi9LIDM1L1AgMTQ2IDAgUi9TLyNFNiNBRCNB MyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNMTgzIDAgb2JqDTw8L0tbNTUxIDAgUiA1NTIg MCBSXS9QIDE0NiAwIFIvUy9UZXh0Qm94Pj4NZW5kb2JqDTE4NCAwIG9iag08PC9LIDU0OSAwIFIv UCAxNDYgMCBSL1MvVGV4dEJveD4+DWVuZG9iag0xODUgMCBvYmoNPDwvQSA1NDggMCBSL0sgMC9Q IDE0NiAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMjkgMCBSPj4NZW5kb2JqDTE4NiAwIG9i ag08PC9BIDU0NyAwIFIvSyAxL1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAyOSAw IFI+Pg1lbmRvYmoNMTg3IDAgb2JqDTw8L0EgNTQ2IDAgUi9LIDIvUCAxNDYgMCBSL1MvI0U2I0FE I0EzI0U2Izk2Izg3L1BnIDI5IDAgUj4+DWVuZG9iag0xODggMCBvYmoNPDwvQSA1NDUgMCBSL0Mv I0U2I0FEI0EzI0U2Izk2Izg3KzEvSyAzL1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9Q ZyAyOSAwIFI+Pg1lbmRvYmoNMTg5IDAgb2JqDTw8L0EgNTQ0IDAgUi9LIDQvUCAxNDYgMCBSL1Mv I0U2I0FEI0EzI0U2Izk2Izg3L1BnIDI5IDAgUj4+DWVuZG9iag0xOTAgMCBvYmoNPDwvQSA1NDMg MCBSL0sgNS9QIDE0NiAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMjkgMCBSPj4NZW5kb2Jq DTE5MSAwIG9iag08PC9BIDU0MiAwIFIvSyA2L1AgMTQ2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4 Ny9QZyAyOSAwIFI+Pg1lbmRvYmoNMTkyIDAgb2JqDTw8L0EgNTQxIDAgUi9LIDcvUCAxNDYgMCBS L1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDI5IDAgUj4+DWVuZG9iag0xOTMgMCBvYmoNPDwvQSA1 NDAgMCBSL0sgOC9QIDE0NiAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMjkgMCBSPj4NZW5k b2JqDTE5NCAwIG9iag08PC9BIDUzOSAwIFIvQy8jRTYjQUQjQTMjRTYjOTYjODcrMS9LIDkvUCAx NDYgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDI5IDAgUj4+DWVuZG9iag0xOTUgMCBvYmoN PDwvS1s0MTcgMCBSIDQxOCAwIFIgNDE5IDAgUiA0MjAgMCBSIDQyMSAwIFIgNDIyIDAgUiA0MjMg MCBSIDQyNCAwIFIgNDI1IDAgUiA0MjYgMCBSIDQyNyAwIFIgNDI4IDAgUiA0MjkgMCBSIDQzMCAw IFIgNDMxIDAgUiA0MzIgMCBSIDQzMyAwIFIgNDM0IDAgUiA0MzUgMCBSIDQzNiAwIFIgNDM3IDAg UiA0MzggMCBSIDQzOSAwIFIgNDQwIDAgUl0vUCAxNDYgMCBSL1MvTD4+DWVuZG9iag0xOTYgMCBv YmoNPDwvQSA0MTYgMCBSL0MvI0U2I0FEI0EzI0U2Izk2Izg3KzEvSyA1OS9QIDE0NiAwIFIvUy8j RTYjQUQjQTMjRTYjOTYjODcvUGcgMjkgMCBSPj4NZW5kb2JqDTE5NyAwIG9iag08PC9LWzM2NiAw IFIgMzY3IDAgUiAzNjggMCBSIDM2OSAwIFIgMzcwIDAgUiAzNzEgMCBSIDM3MiAwIFIgMzczIDAg UiAzNzQgMCBSIDM3NSAwIFJdL1AgMTQ2IDAgUi9TL0w+Pg1lbmRvYmoNMTk4IDAgb2JqDTw8L0sg MzY0IDAgUi9QIDE0NiAwIFIvUy9UZXh0Qm94Pj4NZW5kb2JqDTE5OSAwIG9iag08PC9LIDM2MiAw IFIvUCAxNDYgMCBSL1MvVGV4dEJveD4+DWVuZG9iag0yMDAgMCBvYmoNPDwvSyAzNjAgMCBSL1Ag MTQ2IDAgUi9TL1RleHRCb3g+Pg1lbmRvYmoNMjAxIDAgb2JqDTw8L0tbMzU2IDAgUiAzNTcgMCBS XS9QIDE0NiAwIFIvUy9UZXh0Qm94Pj4NZW5kb2JqDTIwMiAwIG9iag08PC9LIDM1NCAwIFIvUCAx NDYgMCBSL1MvVGV4dEJveD4+DWVuZG9iag0yMDMgMCBvYmoNPDwvQSAzNTMgMCBSL0sgMTIvUCAx NDYgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yMDQgMCBvYmoN PDwvS1szMTAgMCBSIDMxMSAwIFIgMzEyIDAgUiAzMTMgMCBSIDMxNCAwIFIgMzE1IDAgUiAzMTYg MCBSIDMxNyAwIFIgMzE4IDAgUl0vUCAxNDYgMCBSL1MvTD4+DWVuZG9iag0yMDUgMCBvYmoNPDwv QSAzMDkgMCBSL0sgMzAvUCAxNDYgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+ DWVuZG9iag0yMDYgMCBvYmoNPDwvQSAzMDggMCBSL0sgMzEvUCAxNDYgMCBSL1MvI0U2I0FEI0Ez I0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yMDcgMCBvYmoNPDwvQSAzMDcgMCBSL0sgMzIv UCAxNDYgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yMDggMCBv YmoNPDwvQSAzMDYgMCBSL0sgMzMvUCAxNDYgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMy IDAgUj4+DWVuZG9iag0yMDkgMCBvYmoNPDwvQSAzMDUgMCBSL0sgMzQvUCAxNDYgMCBSL1MvI0U2 I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yMTAgMCBvYmoNPDwvQSAzMDQgMCBS L0sgMzUvUCAxNDYgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0y MTEgMCBvYmoNPDwvQSAzMDMgMCBSL0sgMzYvUCAxNDYgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3 L1BnIDMyIDAgUj4+DWVuZG9iag0yMTIgMCBvYmoNPDwvQSAzMDIgMCBSL0sgMzcvUCAxNDYgMCBS L1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yMTMgMCBvYmoNPDwvQSAz MDEgMCBSL0sgMzgvUCAxNDYgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVu ZG9iag0yMTQgMCBvYmoNPDwvQSAzMDAgMCBSL0sgMzkvUCAxNDYgMCBSL1MvI0U2I0FEI0EzI0U2 Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yMTUgMCBvYmoNPDwvQSAyOTkgMCBSL0sgNDAvUCAx NDYgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yMTYgMCBvYmoN PDwvSyAyOTcgMCBSL1AgMTQ2IDAgUi9TL1RleHRCb3g+Pg1lbmRvYmoNMjE3IDAgb2JqDTw8L0tb MjY1IDAgUiAyNjYgMCBSIDI2NyAwIFIgMjY4IDAgUiAyNjkgMCBSIDI3MCAwIFIgMjcxIDAgUiAy NzIgMCBSIDI3MyAwIFIgMjc0IDAgUiAyNzUgMCBSIDI3NiAwIFIgMjc3IDAgUiAyNzggMCBSIDI3 OSAwIFIgMjgwIDAgUl0vUCAxNDYgMCBSL1MvVGV4dEJveD4+DWVuZG9iag0yMTggMCBvYmoNPDwv S1syMzMgMCBSIDIzNCAwIFIgMjM1IDAgUiAyMzYgMCBSIDIzNyAwIFIgMjM4IDAgUiAyMzkgMCBS IDI0MCAwIFIgMjQxIDAgUiAyNDIgMCBSIDI0MyAwIFIgMjQ0IDAgUiAyNDUgMCBSIDI0NiAwIFIg MjQ3IDAgUiAyNDggMCBSXS9QIDE0NiAwIFIvUy9UZXh0Qm94Pj4NZW5kb2JqDTIxOSAwIG9iag08 PC9LIDIzMSAwIFIvUCAxNDYgMCBSL1MvVGV4dEJveD4+DWVuZG9iag0yMjAgMCBvYmoNPDwvSyAy MjkgMCBSL1AgMTQ2IDAgUi9TL1RleHRCb3g+Pg1lbmRvYmoNMjIxIDAgb2JqDTw8L0tbMjI1IDAg UiAyMjYgMCBSXS9QIDE0NiAwIFIvUy9UZXh0Qm94Pj4NZW5kb2JqDTIyMiAwIG9iag08PC9LIDIy MyAwIFIvUCAxNDYgMCBSL1MvVGV4dEJveD4+DWVuZG9iag0yMjMgMCBvYmoNPDwvQSAyMjQgMCBS L0tbODkgMTI4IDAgUiA5MV0vUCAyMjIgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAg Uj4+DWVuZG9iag0yMjQgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkv Ty9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAv RW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMjI1IDAgb2JqDTw8L0EgMjI4 IDAgUi9LIDg3L1AgMjIxIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAzMiAwIFI+Pg1lbmRv YmoNMjI2IDAgb2JqDTw8L0EgMjI3IDAgUi9LIDg4L1AgMjIxIDAgUi9TLyNFNiNBRCNBMyNFNiM5 NiM4Ny9QZyAzMiAwIFI+Pg1lbmRvYmoNMjI3IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRB bGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1Rl eHRJbmRlbnQgMzUuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0yMjgg MCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGlu Z01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAzNS4wL0VuZEluZGVudCAwLjAv U3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTIyOSAwIG9iag08PC9BIDIzMCAwIFIvSyA4Ni9QIDIy MCAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMzIgMCBSPj4NZW5kb2JqDTIzMCAwIG9iag08 PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vQ2VudGVyL08vTGF5b3V0L1dyaXRpbmdNb2RlL0xy VGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRl bnQgMC4wPj4NZW5kb2JqDTIzMSAwIG9iag08PC9BIDIzMiAwIFIvS1s0MyA3NSA3NiA3NyA3OCA3 OSA4MCA4MSA4MiA4MyA4NCA4NV0vUCAyMTkgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMy IDAgUj4+DWVuZG9iag0yMzIgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0NlbnRl ci9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAu MC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0yMzMgMCBvYmoNPDwvQSAy NjQgMCBSL0sgNTkvUCAyMTggMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVu ZG9iag0yMzQgMCBvYmoNPDwvQSAyNjMgMCBSL0sgNjAvUCAyMTggMCBSL1MvI0U2I0FEI0EzI0U2 Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yMzUgMCBvYmoNPDwvQSAyNjIgMCBSL0sgNjEvUCAy MTggMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yMzYgMCBvYmoN PDwvQSAyNjEgMCBSL0sgNjIvUCAyMTggMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAg Uj4+DWVuZG9iag0yMzcgMCBvYmoNPDwvQSAyNjAgMCBSL0sgNjMvUCAyMTggMCBSL1MvI0U2I0FE I0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yMzggMCBvYmoNPDwvQSAyNTkgMCBSL0sg NjQvUCAyMTggMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yMzkg MCBvYmoNPDwvQSAyNTggMCBSL0sgNjUvUCAyMTggMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1Bn IDMyIDAgUj4+DWVuZG9iag0yNDAgMCBvYmoNPDwvQSAyNTcgMCBSL0sgNjYvUCAyMTggMCBSL1Mv I0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yNDEgMCBvYmoNPDwvQSAyNTYg MCBSL0sgNjcvUCAyMTggMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9i ag0yNDIgMCBvYmoNPDwvQSAyNTUgMCBSL0sgNjgvUCAyMTggMCBSL1MvI0U2I0FEI0EzI0U2Izk2 Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yNDMgMCBvYmoNPDwvQSAyNTQgMCBSL0sgNjkvUCAyMTgg MCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yNDQgMCBvYmoNPDwv QSAyNTMgMCBSL0sgNzAvUCAyMTggMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+ DWVuZG9iag0yNDUgMCBvYmoNPDwvQSAyNTIgMCBSL0sgNzEvUCAyMTggMCBSL1MvI0U2I0FEI0Ez I0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yNDYgMCBvYmoNPDwvQSAyNTEgMCBSL0sgNzIv UCAyMTggMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yNDcgMCBv YmoNPDwvQSAyNTAgMCBSL0sgNzMvUCAyMTggMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMy IDAgUj4+DWVuZG9iag0yNDggMCBvYmoNPDwvQSAyNDkgMCBSL0sgNzQvUCAyMTggMCBSL1MvI0U2 I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0yNDkgMCBvYmoNPDwvU3BhY2VBZnRl ciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJl Zm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1l bmRvYmoNMjUwIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5 b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZElu ZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTI1MSAwIG9iag08PC9TcGFjZUFmdGVy IDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVm b3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVu ZG9iag0yNTIgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlv dXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5k ZW50IDAuMC9TdGFydEluZGVudCAyOC4wPj4NZW5kb2JqDTI1MyAwIG9iag08PC9TcGFjZUFmdGVy IDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVm b3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVu ZG9iag0yNTQgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlv dXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5k ZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMjU1IDAgb2JqDTw8L1NwYWNlQWZ0ZXIg MC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZv cmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMjguMD4+DWVu ZG9iag0yNTYgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlv dXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5k ZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMjU3IDAgb2JqDTw8L1NwYWNlQWZ0ZXIg MC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZv cmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5k b2JqDTI1OCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91 dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRl bnQgMC4wL1N0YXJ0SW5kZW50IDIxLjA+Pg1lbmRvYmoNMjU5IDAgb2JqDTw8L1NwYWNlQWZ0ZXIg MC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZv cmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5k b2JqDTI2MCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91 dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRl bnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0yNjEgMCBvYmoNPDwvU3BhY2VBZnRlciAw LjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9y ZSAwLjAvVGV4dEluZGVudCAyOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5k b2JqDTI2MiAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91 dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRl bnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0yNjMgMCBvYmoNPDwvU3BhY2VBZnRlciAw LjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9y ZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRv YmoNMjY0IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0 L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVu dCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTI2NSAwIG9iag08PC9BIDI5NiAwIFIvSyA0 Mi9QIDIxNyAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMzIgMCBSPj4NZW5kb2JqDTI2NiAw IG9iag08PC9BIDI5NSAwIFIvSyA0NC9QIDIxNyAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcg MzIgMCBSPj4NZW5kb2JqDTI2NyAwIG9iag08PC9BIDI5NCAwIFIvSyA0NS9QIDIxNyAwIFIvUy8j RTYjQUQjQTMjRTYjOTYjODcvUGcgMzIgMCBSPj4NZW5kb2JqDTI2OCAwIG9iag08PC9BIDI5MyAw IFIvSyA0Ni9QIDIxNyAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMzIgMCBSPj4NZW5kb2Jq DTI2OSAwIG9iag08PC9BIDI5MiAwIFIvSyA0Ny9QIDIxNyAwIFIvUy8jRTYjQUQjQTMjRTYjOTYj ODcvUGcgMzIgMCBSPj4NZW5kb2JqDTI3MCAwIG9iag08PC9BIDI5MSAwIFIvSyA0OC9QIDIxNyAw IFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMzIgMCBSPj4NZW5kb2JqDTI3MSAwIG9iag08PC9B IDI5MCAwIFIvSyA0OS9QIDIxNyAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMzIgMCBSPj4N ZW5kb2JqDTI3MiAwIG9iag08PC9BIDI4OSAwIFIvSyA1MC9QIDIxNyAwIFIvUy8jRTYjQUQjQTMj RTYjOTYjODcvUGcgMzIgMCBSPj4NZW5kb2JqDTI3MyAwIG9iag08PC9BIDI4OCAwIFIvSyA1MS9Q IDIxNyAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMzIgMCBSPj4NZW5kb2JqDTI3NCAwIG9i ag08PC9BIDI4NyAwIFIvSyA1Mi9QIDIxNyAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMzIg MCBSPj4NZW5kb2JqDTI3NSAwIG9iag08PC9BIDI4NiAwIFIvSyA1My9QIDIxNyAwIFIvUy8jRTYj QUQjQTMjRTYjOTYjODcvUGcgMzIgMCBSPj4NZW5kb2JqDTI3NiAwIG9iag08PC9BIDI4NSAwIFIv SyA1NC9QIDIxNyAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMzIgMCBSPj4NZW5kb2JqDTI3 NyAwIG9iag08PC9BIDI4NCAwIFIvSyA1NS9QIDIxNyAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcv UGcgMzIgMCBSPj4NZW5kb2JqDTI3OCAwIG9iag08PC9BIDI4MyAwIFIvSyA1Ni9QIDIxNyAwIFIv Uy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMzIgMCBSPj4NZW5kb2JqDTI3OSAwIG9iag08PC9BIDI4 MiAwIFIvSyA1Ny9QIDIxNyAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMzIgMCBSPj4NZW5k b2JqDTI4MCAwIG9iag08PC9BIDI4MSAwIFIvSyA1OC9QIDIxNyAwIFIvUy8jRTYjQUQjQTMjRTYj OTYjODcvUGcgMzIgMCBSPj4NZW5kb2JqDTI4MSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0 QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9U ZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0yODIg MCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGlu Z01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9T dGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMjgzIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRB bGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1Rl eHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTI4NCAw IG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5n TW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDI4LjAvRW5kSW5kZW50IDAuMC9T dGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMjg1IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRB bGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1Rl eHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTI4NiAw IG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5n TW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0 YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0yODcgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFs aWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4 dEluZGVudCAyOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTI4OCAw IG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5n TW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0 YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0yODkgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFs aWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4 dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMjkwIDAg b2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdN b2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMjguMC9FbmRJbmRlbnQgMC4wL1N0 YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0yOTEgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFs aWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4 dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMjkyIDAg b2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdN b2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3Rh cnRJbmRlbnQgMC4wPj4NZW5kb2JqDTI5MyAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxp Z24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0 SW5kZW50IDI4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMjk0IDAg b2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdN b2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3Rh cnRJbmRlbnQgMC4wPj4NZW5kb2JqDTI5NSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxp Z24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0 SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0yOTYgMCBv YmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01v ZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFy dEluZGVudCAwLjA+Pg1lbmRvYmoNMjk3IDAgb2JqDTw8L0EgMjk4IDAgUi9LIDQxL1AgMjE2IDAg Ui9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAzMiAwIFI+Pg1lbmRvYmoNMjk4IDAgb2JqDTw8L1Nw YWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIv U3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMTAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50 IDAuMD4+DWVuZG9iag0yOTkgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3Rp ZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAw LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMzAwIDAgb2JqDTw8L1Nw YWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIv U3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQg MC4wPj4NZW5kb2JqDTMwMSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlm eS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAu MC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0zMDIgMCBvYmoNPDwvU3Bh Y2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9T cGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAw LjA+Pg1lbmRvYmoNMzAzIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5 L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4w L0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTMwNCAwIG9iag08PC9TcGFj ZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1Nw YWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAu MD4+DWVuZG9iag0zMDUgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkv Ty9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAv RW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMzA2IDAgb2JqDTw8L1NwYWNl QWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3Bh Y2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4w Pj4NZW5kb2JqDTMwNyAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9P L0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9F bmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0zMDggMCBvYmoNPDwvU3BhY2VB ZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFj ZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+ Pg1lbmRvYmoNMzA5IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08v TGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0Vu ZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTMxMCAwIG9iag08PC9BIDM1MSAw IFIvSyAzNTIgMCBSL1AgMjA0IDAgUi9TL0xJPj4NZW5kb2JqDTMxMSAwIG9iag08PC9BIDM0NyAw IFIvS1szNDggMCBSIDM0OSAwIFJdL1AgMjA0IDAgUi9TL0xJPj4NZW5kb2JqDTMxMiAwIG9iag08 PC9BIDM0MyAwIFIvS1szNDQgMCBSIDM0NSAwIFJdL1AgMjA0IDAgUi9TL0xJPj4NZW5kb2JqDTMx MyAwIG9iag08PC9BIDMzOSAwIFIvS1szNDAgMCBSIDM0MSAwIFJdL1AgMjA0IDAgUi9TL0xJPj4N ZW5kb2JqDTMxNCAwIG9iag08PC9BIDMzNSAwIFIvS1szMzYgMCBSIDMzNyAwIFJdL1AgMjA0IDAg Ui9TL0xJPj4NZW5kb2JqDTMxNSAwIG9iag08PC9BIDMzMSAwIFIvS1szMzIgMCBSIDMzMyAwIFJd L1AgMjA0IDAgUi9TL0xJPj4NZW5kb2JqDTMxNiAwIG9iag08PC9BIDMyNyAwIFIvS1szMjggMCBS IDMyOSAwIFJdL1AgMjA0IDAgUi9TL0xJPj4NZW5kb2JqDTMxNyAwIG9iag08PC9BIDMyMyAwIFIv S1szMjQgMCBSIDMyNSAwIFJdL1AgMjA0IDAgUi9TL0xJPj4NZW5kb2JqDTMxOCAwIG9iag08PC9B IDMxOSAwIFIvS1szMjAgMCBSIDMyMSAwIFJdL1AgMjA0IDAgUi9TL0xJPj4NZW5kb2JqDTMxOSAw IG9iag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01v ZGUvTHJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0 YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNMzIwIDAgb2JqDTw8L0sgMjgvUCAzMTggMCBSL1MvTGJs L1BnIDMyIDAgUj4+DWVuZG9iag0zMjEgMCBvYmoNPDwvSyAzMjIgMCBSL1AgMzE4IDAgUi9TL0xi b2R5Pj4NZW5kb2JqDTMyMiAwIG9iag08PC9LIDI5L1AgMzIxIDAgUi9TLyNFNiNBRCNBMyNFNiM5 NiM4Ny9QZyAzMiAwIFI+Pg1lbmRvYmoNMzIzIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRB bGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0 SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag0zMjQg MCBvYmoNPDwvSyAyNi9QIDMxNyAwIFIvUy9MYmwvUGcgMzIgMCBSPj4NZW5kb2JqDTMyNSAwIG9i ag08PC9LIDMyNiAwIFIvUCAzMTcgMCBSL1MvTGJvZHk+Pg1lbmRvYmoNMzI2IDAgb2JqDTw8L0sg MjcvUCAzMjUgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0zMjcg MCBvYmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdN b2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9T dGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTMyOCAwIG9iag08PC9LIDI0L1AgMzE2IDAgUi9TL0xi bC9QZyAzMiAwIFI+Pg1lbmRvYmoNMzI5IDAgb2JqDTw8L0sgMzMwIDAgUi9QIDMxNiAwIFIvUy9M Ym9keT4+DWVuZG9iag0zMzAgMCBvYmoNPDwvSyAyNS9QIDMyOSAwIFIvUy8jRTYjQUQjQTMjRTYj OTYjODcvUGcgMzIgMCBSPj4NZW5kb2JqDTMzMSAwIG9iag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0 QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4 dEluZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNMzMy IDAgb2JqDTw8L0sgMjIvUCAzMTUgMCBSL1MvTGJsL1BnIDMyIDAgUj4+DWVuZG9iag0zMzMgMCBv YmoNPDwvSyAzMzQgMCBSL1AgMzE1IDAgUi9TL0xib2R5Pj4NZW5kb2JqDTMzNCAwIG9iag08PC9L IDIzL1AgMzMzIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAzMiAwIFI+Pg1lbmRvYmoNMzM1 IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5n TW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAv U3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag0zMzYgMCBvYmoNPDwvSyAyMC9QIDMxNCAwIFIvUy9M YmwvUGcgMzIgMCBSPj4NZW5kb2JqDTMzNyAwIG9iag08PC9LIDMzOCAwIFIvUCAzMTQgMCBSL1Mv TGJvZHk+Pg1lbmRvYmoNMzM4IDAgb2JqDTw8L0sgMjEvUCAzMzcgMCBSL1MvI0U2I0FEI0EzI0U2 Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0zMzkgMCBvYmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4 dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4wL1Rl eHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTM0 MCAwIG9iag08PC9LIDE4L1AgMzEzIDAgUi9TL0xibC9QZyAzMiAwIFI+Pg1lbmRvYmoNMzQxIDAg b2JqDTw8L0sgMzQyIDAgUi9QIDMxMyAwIFIvUy9MYm9keT4+DWVuZG9iag0zNDIgMCBvYmoNPDwv SyAxOS9QIDM0MSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMzIgMCBSPj4NZW5kb2JqDTM0 MyAwIG9iag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGlu Z01vZGUvTHJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRlbnQgMC4w L1N0YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNMzQ0IDAgb2JqDTw8L0sgMTYvUCAzMTIgMCBSL1Mv TGJsL1BnIDMyIDAgUj4+DWVuZG9iag0zNDUgMCBvYmoNPDwvSyAzNDYgMCBSL1AgMzEyIDAgUi9T L0xib2R5Pj4NZW5kb2JqDTM0NiAwIG9iag08PC9LIDE3L1AgMzQ1IDAgUi9TLyNFNiNBRCNBMyNF NiM5NiM4Ny9QZyAzMiAwIFI+Pg1lbmRvYmoNMzQ3IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1Rl eHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9U ZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag0z NDggMCBvYmoNPDwvSyAxNC9QIDMxMSAwIFIvUy9MYmwvUGcgMzIgMCBSPj4NZW5kb2JqDTM0OSAw IG9iag08PC9LIDM1MCAwIFIvUCAzMTEgMCBSL1MvTGJvZHk+Pg1lbmRvYmoNMzUwIDAgb2JqDTw8 L0sgMTUvUCAzNDkgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDMyIDAgUj4+DWVuZG9iag0z NTEgMCBvYmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRp bmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50IDAu MC9TdGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTM1MiAwIG9iag08PC9LIDEzL1AgMzEwIDAgUi9T L0xibC9QZyAzMiAwIFI+Pg1lbmRvYmoNMzUzIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRB bGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0 SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0zNTQgMCBv YmoNPDwvQSAzNTUgMCBSL0tbNzMgMTI3IDAgUiA3NV0vUCAyMDIgMCBSL1MvI0U2I0FEI0EzI0U2 Izk2Izg3L1BnIDI5IDAgUj4+DWVuZG9iag0zNTUgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4 dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAv VGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMzU2 IDAgb2JqDTw8L0EgMzU5IDAgUi9LIDcxL1AgMjAxIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9Q ZyAyOSAwIFI+Pg1lbmRvYmoNMzU3IDAgb2JqDTw8L0EgMzU4IDAgUi9LIDcyL1AgMjAxIDAgUi9T LyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAyOSAwIFI+Pg1lbmRvYmoNMzU4IDAgb2JqDTw8L1NwYWNl QWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3Bh Y2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMzUuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAu MD4+DWVuZG9iag0zNTkgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkv Ty9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAzNS4w L0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTM2MCAwIG9iag08PC9BIDM2 MSAwIFIvSyA3MC9QIDIwMCAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMjkgMCBSPj4NZW5k b2JqDTM2MSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91 dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDEwLjAvRW5kSW5k ZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMzYyIDAgb2JqDTw8L0EgMzYzIDAgUi9L IDY5L1AgMTk5IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAyOSAwIFI+Pg1lbmRvYmoNMzYz IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRp bmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMTAuMC9FbmRJbmRlbnQgMC4w L1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0zNjQgMCBvYmoNPDwvQSAzNjUgMCBSL0sgNjgvUCAx OTggMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDI5IDAgUj4+DWVuZG9iag0zNjUgMCBvYmoN PDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUv THJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAxMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJ bmRlbnQgMC4wPj4NZW5kb2JqDTM2NiAwIG9iag08PC9BIDQxMiAwIFIvS1s0MTMgMCBSIDQxNCAw IFJdL1AgMTk3IDAgUi9TL0xJPj4NZW5kb2JqDTM2NyAwIG9iag08PC9BIDQwOCAwIFIvS1s0MDkg MCBSIDQxMCAwIFJdL1AgMTk3IDAgUi9TL0xJPj4NZW5kb2JqDTM2OCAwIG9iag08PC9BIDQwNCAw IFIvS1s0MDUgMCBSIDQwNiAwIFJdL1AgMTk3IDAgUi9TL0xJPj4NZW5kb2JqDTM2OSAwIG9iag08 PC9BIDQwMCAwIFIvS1s0MDEgMCBSIDQwMiAwIFJdL1AgMTk3IDAgUi9TL0xJPj4NZW5kb2JqDTM3 MCAwIG9iag08PC9BIDM5NiAwIFIvS1szOTcgMCBSIDM5OCAwIFJdL1AgMTk3IDAgUi9TL0xJPj4N ZW5kb2JqDTM3MSAwIG9iag08PC9BIDM5MiAwIFIvS1szOTMgMCBSIDM5NCAwIFJdL1AgMTk3IDAg Ui9TL0xJPj4NZW5kb2JqDTM3MiAwIG9iag08PC9BIDM4OCAwIFIvS1szODkgMCBSIDM5MCAwIFJd L1AgMTk3IDAgUi9TL0xJPj4NZW5kb2JqDTM3MyAwIG9iag08PC9BIDM4NCAwIFIvS1szODUgMCBS IDM4NiAwIFJdL1AgMTk3IDAgUi9TL0xJPj4NZW5kb2JqDTM3NCAwIG9iag08PC9BIDM4MCAwIFIv S1szODEgMCBSIDM4MiAwIFJdL1AgMTk3IDAgUi9TL0xJPj4NZW5kb2JqDTM3NSAwIG9iag08PC9B IDM3NiAwIFIvS1szNzcgMCBSIDM3OCAwIFJdL1AgMTk3IDAgUi9TL0xJPj4NZW5kb2JqDTM3NiAw IG9iag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01v ZGUvTHJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0 YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNMzc3IDAgb2JqDTw8L0sgMTAvUCAzNzUgMCBSL1MvTGJs L1BnIDMyIDAgUj4+DWVuZG9iag0zNzggMCBvYmoNPDwvSyAzNzkgMCBSL1AgMzc1IDAgUi9TL0xi b2R5Pj4NZW5kb2JqDTM3OSAwIG9iag08PC9LIDExL1AgMzc4IDAgUi9TLyNFNiNBRCNBMyNFNiM5 NiM4Ny9QZyAzMiAwIFI+Pg1lbmRvYmoNMzgwIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRB bGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0 SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag0zODEg MCBvYmoNPDwvSyA4L1AgMzc0IDAgUi9TL0xibC9QZyAzMiAwIFI+Pg1lbmRvYmoNMzgyIDAgb2Jq DTw8L0sgMzgzIDAgUi9QIDM3NCAwIFIvUy9MYm9keT4+DWVuZG9iag0zODMgMCBvYmoNPDwvSyA5 L1AgMzgyIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAzMiAwIFI+Pg1lbmRvYmoNMzg0IDAg b2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9k ZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3Rh cnRJbmRlbnQgMzYuMD4+DWVuZG9iag0zODUgMCBvYmoNPDwvSyA2L1AgMzczIDAgUi9TL0xibC9Q ZyAzMiAwIFI+Pg1lbmRvYmoNMzg2IDAgb2JqDTw8L0sgMzg3IDAgUi9QIDM3MyAwIFIvUy9MYm9k eT4+DWVuZG9iag0zODcgMCBvYmoNPDwvSyA3L1AgMzg2IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4 Ny9QZyAzMiAwIFI+Pg1lbmRvYmoNMzg4IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGln bi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5k ZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag0zODkgMCBv YmoNPDwvSyA0L1AgMzcyIDAgUi9TL0xibC9QZyAzMiAwIFI+Pg1lbmRvYmoNMzkwIDAgb2JqDTw8 L0sgMzkxIDAgUi9QIDM3MiAwIFIvUy9MYm9keT4+DWVuZG9iag0zOTEgMCBvYmoNPDwvSyA1L1Ag MzkwIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAzMiAwIFI+Pg1lbmRvYmoNMzkyIDAgb2Jq DTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9M clRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJ bmRlbnQgMzYuMD4+DWVuZG9iag0zOTMgMCBvYmoNPDwvSyAyL1AgMzcxIDAgUi9TL0xibC9QZyAz MiAwIFI+Pg1lbmRvYmoNMzk0IDAgb2JqDTw8L0sgMzk1IDAgUi9QIDM3MSAwIFIvUy9MYm9keT4+ DWVuZG9iag0zOTUgMCBvYmoNPDwvSyAzL1AgMzk0IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9Q ZyAzMiAwIFI+Pg1lbmRvYmoNMzk2IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9T dGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50 IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag0zOTcgMCBvYmoN PDwvSyAwL1AgMzcwIDAgUi9TL0xibC9QZyAzMiAwIFI+Pg1lbmRvYmoNMzk4IDAgb2JqDTw8L0sg Mzk5IDAgUi9QIDM3MCAwIFIvUy9MYm9keT4+DWVuZG9iag0zOTkgMCBvYmoNPDwvSyAxL1AgMzk4 IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAzMiAwIFI+Pg1lbmRvYmoNNDAwIDAgb2JqDTw8 L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRi L1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRl bnQgMzYuMD4+DWVuZG9iag00MDEgMCBvYmoNPDwvSyA2Ni9QIDM2OSAwIFIvUy9MYmwvUGcgMjkg MCBSPj4NZW5kb2JqDTQwMiAwIG9iag08PC9LIDQwMyAwIFIvUCAzNjkgMCBSL1MvTGJvZHk+Pg1l bmRvYmoNNDAzIDAgb2JqDTw8L0sgNjcvUCA0MDIgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1Bn IDI5IDAgUj4+DWVuZG9iag00MDQgMCBvYmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFsaWduL1N0 YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJbmRlbnQg LTE4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTQwNSAwIG9iag08 PC9LIDY0L1AgMzY4IDAgUi9TL0xibC9QZyAyOSAwIFI+Pg1lbmRvYmoNNDA2IDAgb2JqDTw8L0sg NDA3IDAgUi9QIDM2OCAwIFIvUy9MYm9keT4+DWVuZG9iag00MDcgMCBvYmoNPDwvSyA2NS9QIDQw NiAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMjkgMCBSPj4NZW5kb2JqDTQwOCAwIG9iag08 PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJU Yi9TcGFjZUJlZm9yZSA1LjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5k ZW50IDM2LjA+Pg1lbmRvYmoNNDA5IDAgb2JqDTw8L0sgNjIvUCAzNjcgMCBSL1MvTGJsL1BnIDI5 IDAgUj4+DWVuZG9iag00MTAgMCBvYmoNPDwvSyA0MTEgMCBSL1AgMzY3IDAgUi9TL0xib2R5Pj4N ZW5kb2JqDTQxMSAwIG9iag08PC9LIDYzL1AgNDEwIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9Q ZyAyOSAwIFI+Pg1lbmRvYmoNNDEyIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9T dGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50 IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag00MTMgMCBvYmoN PDwvSyA2MC9QIDM2NiAwIFIvUy9MYmwvUGcgMjkgMCBSPj4NZW5kb2JqDTQxNCAwIG9iag08PC9L IDQxNSAwIFIvUCAzNjYgMCBSL1MvTGJvZHk+Pg1lbmRvYmoNNDE1IDAgb2JqDTw8L0sgNjEvUCA0 MTQgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDI5IDAgUj4+DWVuZG9iag00MTYgMCBvYmoN PDwvU3BhY2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xy VGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRl bnQgMC4wPj4NZW5kb2JqDTQxNyAwIG9iag08PC9BIDUzNSAwIFIvQy9MSSsxL0tbNTM2IDAgUiA1 MzcgMCBSXS9QIDE5NSAwIFIvUy9MST4+DWVuZG9iag00MTggMCBvYmoNPDwvQSA1MzEgMCBSL0tb NTMyIDAgUiA1MzMgMCBSXS9QIDE5NSAwIFIvUy9MST4+DWVuZG9iag00MTkgMCBvYmoNPDwvQSA1 MjcgMCBSL0tbNTI4IDAgUiA1MjkgMCBSXS9QIDE5NSAwIFIvUy9MST4+DWVuZG9iag00MjAgMCBv YmoNPDwvQSA1MjMgMCBSL0tbNTI0IDAgUiA1MjUgMCBSXS9QIDE5NSAwIFIvUy9MST4+DWVuZG9i ag00MjEgMCBvYmoNPDwvQSA1MTkgMCBSL0tbNTIwIDAgUiA1MjEgMCBSXS9QIDE5NSAwIFIvUy9M ST4+DWVuZG9iag00MjIgMCBvYmoNPDwvQSA1MTUgMCBSL0tbNTE2IDAgUiA1MTcgMCBSXS9QIDE5 NSAwIFIvUy9MST4+DWVuZG9iag00MjMgMCBvYmoNPDwvQSA1MTEgMCBSL0tbNTEyIDAgUiA1MTMg MCBSXS9QIDE5NSAwIFIvUy9MST4+DWVuZG9iag00MjQgMCBvYmoNPDwvQSA1MDcgMCBSL0tbNTA4 IDAgUiA1MDkgMCBSXS9QIDE5NSAwIFIvUy9MST4+DWVuZG9iag00MjUgMCBvYmoNPDwvQSA1MDMg MCBSL0tbNTA0IDAgUiA1MDUgMCBSXS9QIDE5NSAwIFIvUy9MST4+DWVuZG9iag00MjYgMCBvYmoN PDwvQSA0OTkgMCBSL0tbNTAwIDAgUiA1MDEgMCBSXS9QIDE5NSAwIFIvUy9MST4+DWVuZG9iag00 MjcgMCBvYmoNPDwvQSA0OTUgMCBSL0tbNDk2IDAgUiA0OTcgMCBSXS9QIDE5NSAwIFIvUy9MST4+ DWVuZG9iag00MjggMCBvYmoNPDwvQSA0ODkgMCBSL0tbNDkwIDAgUiA0OTEgMCBSIDQ5MiAwIFJd L1AgMTk1IDAgUi9TL0xJPj4NZW5kb2JqDTQyOSAwIG9iag08PC9BIDQ4NSAwIFIvS1s0ODYgMCBS IDQ4NyAwIFJdL1AgMTk1IDAgUi9TL0xJPj4NZW5kb2JqDTQzMCAwIG9iag08PC9BIDQ4MSAwIFIv S1s0ODIgMCBSIDQ4MyAwIFJdL1AgMTk1IDAgUi9TL0xJPj4NZW5kb2JqDTQzMSAwIG9iag08PC9B IDQ3NyAwIFIvS1s0NzggMCBSIDQ3OSAwIFJdL1AgMTk1IDAgUi9TL0xJPj4NZW5kb2JqDTQzMiAw IG9iag08PC9BIDQ3MyAwIFIvS1s0NzQgMCBSIDQ3NSAwIFJdL1AgMTk1IDAgUi9TL0xJPj4NZW5k b2JqDTQzMyAwIG9iag08PC9BIDQ2OSAwIFIvS1s0NzAgMCBSIDQ3MSAwIFJdL1AgMTk1IDAgUi9T L0xJPj4NZW5kb2JqDTQzNCAwIG9iag08PC9BIDQ2NSAwIFIvS1s0NjYgMCBSIDQ2NyAwIFJdL1Ag MTk1IDAgUi9TL0xJPj4NZW5kb2JqDTQzNSAwIG9iag08PC9BIDQ2MSAwIFIvS1s0NjIgMCBSIDQ2 MyAwIFJdL1AgMTk1IDAgUi9TL0xJPj4NZW5kb2JqDTQzNiAwIG9iag08PC9BIDQ1NyAwIFIvS1s0 NTggMCBSIDQ1OSAwIFJdL1AgMTk1IDAgUi9TL0xJPj4NZW5kb2JqDTQzNyAwIG9iag08PC9BIDQ1 MyAwIFIvS1s0NTQgMCBSIDQ1NSAwIFJdL1AgMTk1IDAgUi9TL0xJPj4NZW5kb2JqDTQzOCAwIG9i ag08PC9BIDQ0OSAwIFIvS1s0NTAgMCBSIDQ1MSAwIFJdL1AgMTk1IDAgUi9TL0xJPj4NZW5kb2Jq DTQzOSAwIG9iag08PC9BIDQ0NSAwIFIvS1s0NDYgMCBSIDQ0NyAwIFJdL1AgMTk1IDAgUi9TL0xJ Pj4NZW5kb2JqDTQ0MCAwIG9iag08PC9BIDQ0MSAwIFIvS1s0NDIgMCBSIDQ0MyAwIFJdL1AgMTk1 IDAgUi9TL0xJPj4NZW5kb2JqDTQ0MSAwIG9iag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxpZ24v U3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4dEluZGVu dCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNNDQyIDAgb2Jq DTw8L0sgNTcvUCA0NDAgMCBSL1MvTGJsL1BnIDI5IDAgUj4+DWVuZG9iag00NDMgMCBvYmoNPDwv SyA0NDQgMCBSL1AgNDQwIDAgUi9TL0xib2R5Pj4NZW5kb2JqDTQ0NCAwIG9iag08PC9LIDU4L1Ag NDQzIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAyOSAwIFI+Pg1lbmRvYmoNNDQ1IDAgb2Jq DTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9M clRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJ bmRlbnQgMzYuMD4+DWVuZG9iag00NDYgMCBvYmoNPDwvSyA1NS9QIDQzOSAwIFIvUy9MYmwvUGcg MjkgMCBSPj4NZW5kb2JqDTQ0NyAwIG9iag08PC9LIDQ0OCAwIFIvUCA0MzkgMCBSL1MvTGJvZHk+ Pg1lbmRvYmoNNDQ4IDAgb2JqDTw8L0sgNTYvUCA0NDcgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3 L1BnIDI5IDAgUj4+DWVuZG9iag00NDkgMCBvYmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFsaWdu L1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJbmRl bnQgLTE4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTQ1MCAwIG9i ag08PC9LIDUzL1AgNDM4IDAgUi9TL0xibC9QZyAyOSAwIFI+Pg1lbmRvYmoNNDUxIDAgb2JqDTw8 L0sgNDUyIDAgUi9QIDQzOCAwIFIvUy9MYm9keT4+DWVuZG9iag00NTIgMCBvYmoNPDwvSyA1NC9Q IDQ1MSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMjkgMCBSPj4NZW5kb2JqDTQ1MyAwIG9i ag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUv THJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0 SW5kZW50IDM2LjA+Pg1lbmRvYmoNNDU0IDAgb2JqDTw8L0sgNTEvUCA0MzcgMCBSL1MvTGJsL1Bn IDI5IDAgUj4+DWVuZG9iag00NTUgMCBvYmoNPDwvSyA0NTYgMCBSL1AgNDM3IDAgUi9TL0xib2R5 Pj4NZW5kb2JqDTQ1NiAwIG9iag08PC9LIDUyL1AgNDU1IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4 Ny9QZyAyOSAwIFI+Pg1lbmRvYmoNNDU3IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGln bi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5k ZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag00NTggMCBv YmoNPDwvSyA0OS9QIDQzNiAwIFIvUy9MYmwvUGcgMjkgMCBSPj4NZW5kb2JqDTQ1OSAwIG9iag08 PC9LIDQ2MCAwIFIvUCA0MzYgMCBSL1MvTGJvZHk+Pg1lbmRvYmoNNDYwIDAgb2JqDTw8L0sgNTAv UCA0NTkgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDI5IDAgUj4+DWVuZG9iag00NjEgMCBv YmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2Rl L0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9TdGFy dEluZGVudCAzNi4wPj4NZW5kb2JqDTQ2MiAwIG9iag08PC9LIDQ3L1AgNDM1IDAgUi9TL0xibC9Q ZyAyOSAwIFI+Pg1lbmRvYmoNNDYzIDAgb2JqDTw8L0sgNDY0IDAgUi9QIDQzNSAwIFIvUy9MYm9k eT4+DWVuZG9iag00NjQgMCBvYmoNPDwvSyA0OC9QIDQ2MyAwIFIvUy8jRTYjQUQjQTMjRTYjOTYj ODcvUGcgMjkgMCBSPj4NZW5kb2JqDTQ2NSAwIG9iag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxp Z24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4dElu ZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNNDY2IDAg b2JqDTw8L0sgNDUvUCA0MzQgMCBSL1MvTGJsL1BnIDI5IDAgUj4+DWVuZG9iag00NjcgMCBvYmoN PDwvSyA0NjggMCBSL1AgNDM0IDAgUi9TL0xib2R5Pj4NZW5kb2JqDTQ2OCAwIG9iag08PC9LIDQ2 L1AgNDY3IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAyOSAwIFI+Pg1lbmRvYmoNNDY5IDAg b2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9k ZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3Rh cnRJbmRlbnQgMzYuMD4+DWVuZG9iag00NzAgMCBvYmoNPDwvSyA0My9QIDQzMyAwIFIvUy9MYmwv UGcgMjkgMCBSPj4NZW5kb2JqDTQ3MSAwIG9iag08PC9LIDQ3MiAwIFIvUCA0MzMgMCBSL1MvTGJv ZHk+Pg1lbmRvYmoNNDcyIDAgb2JqDTw8L0sgNDQvUCA0NzEgMCBSL1MvI0U2I0FEI0EzI0U2Izk2 Izg3L1BnIDI5IDAgUj4+DWVuZG9iag00NzMgMCBvYmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFs aWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJ bmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTQ3NCAw IG9iag08PC9LIDQxL1AgNDMyIDAgUi9TL0xibC9QZyAyOSAwIFI+Pg1lbmRvYmoNNDc1IDAgb2Jq DTw8L0sgNDc2IDAgUi9QIDQzMiAwIFIvUy9MYm9keT4+DWVuZG9iag00NzYgMCBvYmoNPDwvSyA0 Mi9QIDQ3NSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMjkgMCBSPj4NZW5kb2JqDTQ3NyAw IG9iag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01v ZGUvTHJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0 YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNNDc4IDAgb2JqDTw8L0sgMzkvUCA0MzEgMCBSL1MvTGJs L1BnIDI5IDAgUj4+DWVuZG9iag00NzkgMCBvYmoNPDwvSyA0ODAgMCBSL1AgNDMxIDAgUi9TL0xi b2R5Pj4NZW5kb2JqDTQ4MCAwIG9iag08PC9LIDQwL1AgNDc5IDAgUi9TLyNFNiNBRCNBMyNFNiM5 NiM4Ny9QZyAyOSAwIFI+Pg1lbmRvYmoNNDgxIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRB bGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0 SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag00ODIg MCBvYmoNPDwvSyAzNy9QIDQzMCAwIFIvUy9MYmwvUGcgMjkgMCBSPj4NZW5kb2JqDTQ4MyAwIG9i ag08PC9LIDQ4NCAwIFIvUCA0MzAgMCBSL1MvTGJvZHk+Pg1lbmRvYmoNNDg0IDAgb2JqDTw8L0sg MzgvUCA0ODMgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDI5IDAgUj4+DWVuZG9iag00ODUg MCBvYmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdN b2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9T dGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTQ4NiAwIG9iag08PC9LIDM1L1AgNDI5IDAgUi9TL0xi bC9QZyAyOSAwIFI+Pg1lbmRvYmoNNDg3IDAgb2JqDTw8L0sgNDg4IDAgUi9QIDQyOSAwIFIvUy9M Ym9keT4+DWVuZG9iag00ODggMCBvYmoNPDwvSyAzNi9QIDQ4NyAwIFIvUy8jRTYjQUQjQTMjRTYj OTYjODcvUGcgMjkgMCBSPj4NZW5kb2JqDTQ4OSAwIG9iag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0 QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4 dEluZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNNDkw IDAgb2JqDTw8L0sgMzIvUCA0MjggMCBSL1MvTGJsL1BnIDI5IDAgUj4+DWVuZG9iag00OTEgMCBv YmoNPDwvSyA0OTQgMCBSL1AgNDI4IDAgUi9TL0xib2R5Pj4NZW5kb2JqDTQ5MiAwIG9iag08PC9B IDQ5MyAwIFIvQy8jRTYjQUQjQTMjRTYjOTYjODcrMS9LIDM0L1AgNDI4IDAgUi9TLyNFNiNBRCNB MyNFNiM5NiM4Ny9QZyAyOSAwIFI+Pg1lbmRvYmoNNDkzIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4w L1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUu MC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoN NDk0IDAgb2JqDTw8L0sgMzMvUCA0OTEgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDI5IDAg Uj4+DWVuZG9iag00OTUgMCBvYmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0L08v TGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgLTE4LjAv RW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTQ5NiAwIG9iag08PC9LIDMw L1AgNDI3IDAgUi9TL0xibC9QZyAyOSAwIFI+Pg1lbmRvYmoNNDk3IDAgb2JqDTw8L0sgNDk4IDAg Ui9QIDQyNyAwIFIvUy9MYm9keT4+DWVuZG9iag00OTggMCBvYmoNPDwvSyAzMS9QIDQ5NyAwIFIv Uy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMjkgMCBSPj4NZW5kb2JqDTQ5OSAwIG9iag08PC9TcGFj ZUFmdGVyIDUuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFj ZUJlZm9yZSA1LjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDM2 LjA+Pg1lbmRvYmoNNTAwIDAgb2JqDTw8L0sgMjgvUCA0MjYgMCBSL1MvTGJsL1BnIDI5IDAgUj4+ DWVuZG9iag01MDEgMCBvYmoNPDwvSyA1MDIgMCBSL1AgNDI2IDAgUi9TL0xib2R5Pj4NZW5kb2Jq DTUwMiAwIG9iag08PC9LIDI5L1AgNTAxIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAyOSAw IFI+Pg1lbmRvYmoNNTAzIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9P L0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IC0xOC4w L0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag01MDQgMCBvYmoNPDwvSyAy Ni9QIDQyNSAwIFIvUy9MYmwvUGcgMjkgMCBSPj4NZW5kb2JqDTUwNSAwIG9iag08PC9LIDUwNiAw IFIvUCA0MjUgMCBSL1MvTGJvZHk+Pg1lbmRvYmoNNTA2IDAgb2JqDTw8L0sgMjcvUCA1MDUgMCBS L1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDI5IDAgUj4+DWVuZG9iag01MDcgMCBvYmoNPDwvU3Bh Y2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3Bh Y2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAz Ni4wPj4NZW5kb2JqDTUwOCAwIG9iag08PC9LIDI0L1AgNDI0IDAgUi9TL0xibC9QZyAyOSAwIFI+ Pg1lbmRvYmoNNTA5IDAgb2JqDTw8L0sgNTEwIDAgUi9QIDQyNCAwIFIvUy9MYm9keT4+DWVuZG9i ag01MTAgMCBvYmoNPDwvSyAyNS9QIDUwOSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMjkg MCBSPj4NZW5kb2JqDTUxMSAwIG9iag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxpZ24vU3RhcnQv Ty9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4dEluZGVudCAtMTgu MC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNNTEyIDAgb2JqDTw8L0sg MjIvUCA0MjMgMCBSL1MvTGJsL1BnIDI5IDAgUj4+DWVuZG9iag01MTMgMCBvYmoNPDwvSyA1MTQg MCBSL1AgNDIzIDAgUi9TL0xib2R5Pj4NZW5kb2JqDTUxNCAwIG9iag08PC9LIDIzL1AgNTEzIDAg Ui9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAyOSAwIFI+Pg1lbmRvYmoNNTE1IDAgb2JqDTw8L1Nw YWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1Nw YWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQg MzYuMD4+DWVuZG9iag01MTYgMCBvYmoNPDwvSyAyMC9QIDQyMiAwIFIvUy9MYmwvUGcgMjkgMCBS Pj4NZW5kb2JqDTUxNyAwIG9iag08PC9LIDUxOCAwIFIvUCA0MjIgMCBSL1MvTGJvZHk+Pg1lbmRv YmoNNTE4IDAgb2JqDTw8L0sgMjEvUCA1MTcgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDI5 IDAgUj4+DWVuZG9iag01MTkgMCBvYmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0 L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgLTE4 LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTUyMCAwIG9iag08PC9L IDE4L1AgNDIxIDAgUi9TL0xibC9QZyAyOSAwIFI+Pg1lbmRvYmoNNTIxIDAgb2JqDTw8L0sgNTIy IDAgUi9QIDQyMSAwIFIvUy9MYm9keT4+DWVuZG9iag01MjIgMCBvYmoNPDwvSyAxOS9QIDUyMSAw IFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMjkgMCBSPj4NZW5kb2JqDTUyMyAwIG9iag08PC9T cGFjZUFmdGVyIDUuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9T cGFjZUJlZm9yZSA1LjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50 IDM2LjA+Pg1lbmRvYmoNNTI0IDAgb2JqDTw8L0sgMTYvUCA0MjAgMCBSL1MvTGJsL1BnIDI5IDAg Uj4+DWVuZG9iag01MjUgMCBvYmoNPDwvSyA1MjYgMCBSL1AgNDIwIDAgUi9TL0xib2R5Pj4NZW5k b2JqDTUyNiAwIG9iag08PC9LIDE3L1AgNTI1IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAy OSAwIFI+Pg1lbmRvYmoNNTI3IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFy dC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IC0x OC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag01MjggMCBvYmoNPDwv SyAxNC9QIDQxOSAwIFIvUy9MYmwvUGcgMjkgMCBSPj4NZW5kb2JqDTUyOSAwIG9iag08PC9LIDUz MCAwIFIvUCA0MTkgMCBSL1MvTGJvZHk+Pg1lbmRvYmoNNTMwIDAgb2JqDTw8L0sgMTUvUCA1Mjkg MCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDI5IDAgUj4+DWVuZG9iag01MzEgMCBvYmoNPDwv U3BhY2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIv U3BhY2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVu dCAzNi4wPj4NZW5kb2JqDTUzMiAwIG9iag08PC9LIDEyL1AgNDE4IDAgUi9TL0xibC9QZyAyOSAw IFI+Pg1lbmRvYmoNNTMzIDAgb2JqDTw8L0sgNTM0IDAgUi9QIDQxOCAwIFIvUy9MYm9keT4+DWVu ZG9iag01MzQgMCBvYmoNPDwvSyAxMy9QIDUzMyAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcg MjkgMCBSPj4NZW5kb2JqDTUzNSAwIG9iag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxpZ24vU3Rh cnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4dEluZGVudCAt MTguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNNTM2IDAgb2JqDTw8 L0sgMTAvUCA0MTcgMCBSL1MvTGJsL1BnIDI5IDAgUj4+DWVuZG9iag01MzcgMCBvYmoNPDwvSyA1 MzggMCBSL1AgNDE3IDAgUi9TL0xib2R5Pj4NZW5kb2JqDTUzOCAwIG9iag08PC9LIDExL1AgNTM3 IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAyOSAwIFI+Pg1lbmRvYmoNNTM5IDAgb2JqDTw8 L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRi L1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IDMwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVu dCAwLjA+Pg1lbmRvYmoNNTQwIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0 aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQg MC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTU0MSAwIG9iag08PC9T cGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRi L1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50 IDAuMD4+DWVuZG9iag01NDIgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3Rp ZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAw LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNTQzIDAgb2JqDTw8L1Nw YWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIv U3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQg MC4wPj4NZW5kb2JqDTU0NCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlm eS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAu MC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag01NDUgMCBvYmoNPDwvU3Bh Y2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9T cGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAxOTMuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50 IDAuMD4+DWVuZG9iag01NDYgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3Rp ZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAw LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNTQ3IDAgb2JqDTw8L1Nw YWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIv U3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQg MC4wPj4NZW5kb2JqDTU0OCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlm eS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAu MC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag01NDkgMCBvYmoNPDwvQSA1 NTAgMCBSL0tbMzggMTI2IDAgUiA0MF0vUCAxODQgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1Bn IDE4IDAgUj4+DWVuZG9iag01NTAgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1 c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVu dCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNTUxIDAgb2JqDTw8 L0EgNTU0IDAgUi9LIDM2L1AgMTgzIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxOCAwIFI+ Pg1lbmRvYmoNNTUyIDAgb2JqDTw8L0EgNTUzIDAgUi9LIDM3L1AgMTgzIDAgUi9TLyNFNiNBRCNB MyNFNiM5NiM4Ny9QZyAxOCAwIFI+Pg1lbmRvYmoNNTUzIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4w L1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUg MC4wL1RleHRJbmRlbnQgMzUuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9i ag01NTQgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQv V3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAzNS4wL0VuZEluZGVu dCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTU1NSAwIG9iag08PC9TcGFjZUFmdGVyIDAu MC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3Jl IDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9i ag01NTYgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQv V3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50 IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNTU3IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4w L1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUg MC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2Jq DTU1OCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9X cml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQg MC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag01NTkgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAv VGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAw LjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoN NTYwIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dy aXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAw LjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTU2MSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9U ZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAu MC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag01 NjIgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3Jp dGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAu MC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNTYzIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1Rl eHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4w L1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTU2 NCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0 aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4w L1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag01NjUgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4 dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAv VGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNTY2 IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRp bmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAv U3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTU2NyAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0 QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9U ZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag01Njgg MCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGlu Z01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9T dGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNTY5IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRB bGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1Rl eHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTU3MCAw IG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5n TW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0 YXJ0SW5kZW50IDAuMD4+DWVuZG9iag01NzEgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFs aWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4 dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNTcyIDAg b2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdN b2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3Rh cnRJbmRlbnQgMC4wPj4NZW5kb2JqDTU3MyAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxp Z24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0 SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag01NzQgMCBv YmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01v ZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFy dEluZGVudCAwLjA+Pg1lbmRvYmoNNTc1IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGln bi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJ bmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTU3NiAwIG9i ag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9k ZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0 SW5kZW50IDAuMD4+DWVuZG9iag01NzcgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWdu L0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dElu ZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNTc4IDAgb2Jq DTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2Rl L0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJ bmRlbnQgMC4wPj4NZW5kb2JqDTU3OSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24v SnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5k ZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag01ODAgMCBvYmoN PDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUv THJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydElu ZGVudCAwLjA+Pg1lbmRvYmoNNTgxIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9K dXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRl bnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTU4MiAwIG9iag08 PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9M clRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5k ZW50IDAuMD4+DWVuZG9iag01ODMgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1 c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVu dCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNTg0IDAgb2JqDTw8 L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xy VGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRl bnQgMC4wPj4NZW5kb2JqDTU4NSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVz dGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50 IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag01ODYgMCBvYmoNPDwv U3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJU Yi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVu dCAwLjA+Pg1lbmRvYmoNNTg3IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0 aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQg MC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTU4OCAwIG9iag08PC9T cGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRi L1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50 IDAuMD4+DWVuZG9iag01ODkgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3Rp ZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAw LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNTkwIDAgb2JqDTw8L1Nw YWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIv U3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQg MC4wPj4NZW5kb2JqDTU5MSAwIG9iag08PC9LWzU5MiAwIFIgNTkzIDAgUiA1OTQgMCBSIDU5NSAw IFIgNTk2IDAgUiA1OTcgMCBSIDU5OCAwIFIgNTk5IDAgUiA2MDAgMCBSIDYwMSAwIFIgNjAyIDAg UiA2MDMgMCBSIDYwNCAwIFIgNjA1IDAgUiA2MDYgMCBSIDYwNyAwIFIgNjA4IDAgUiA2MDkgMCBS IDYxMCAwIFIgNjExIDAgUiA2MTIgMCBSIDYxMyAwIFIgNjE0IDAgUiA2MTUgMCBSIDYxNiAwIFIg NjE3IDAgUiA2MTggMCBSIDYxOSAwIFIgNjIwIDAgUiA2MjEgMCBSIDYyMiAwIFIgNjIzIDAgUiA2 MjQgMCBSIDYyNSAwIFIgNjI2IDAgUiA2MjcgMCBSIDYyOCAwIFIgNjI5IDAgUiA2MzAgMCBSIDYz MSAwIFIgNjMyIDAgUiA2MzMgMCBSIDYzNCAwIFIgNjM1IDAgUiA2MzYgMCBSIDYzNyAwIFIgNjM4 IDAgUiA2MzkgMCBSIDY0MCAwIFIgNjQxIDAgUiA2NDIgMCBSIDY0MyAwIFIgNjQ0IDAgUiA2NDUg MCBSIDY0NiAwIFIgNjQ3IDAgUiA2NDggMCBSIDY0OSAwIFIgNjUwIDAgUiA2NTEgMCBSIDY1MiAw IFIgNjUzIDAgUiA2NTQgMCBSIDY1NSAwIFIgNjU2IDAgUiA2NTcgMCBSIDY1OCAwIFIgNjU5IDAg UiA2NjAgMCBSIDY2MSAwIFIgNjYyIDAgUiA2NjMgMCBSIDY2NCAwIFJdL1AgMTQ0IDAgUi9TL1Nl Y3Q+Pg1lbmRvYmoNNTkyIDAgb2JqDTw8L0EgMTA0OSAwIFIvQy8jRTYjQUQjQTMjRTYjOTYjODcv SyAwL1AgNTkxIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxIDAgUj4+DWVuZG9iag01OTMg MCBvYmoNPDwvQSAxMDQ4IDAgUi9DLyNFNiNBRCNBMyNFNiM5NiM4Ny9LIDEvUCA1OTEgMCBSL1Mv I0U2I0FEI0EzI0U2Izk2Izg3L1BnIDEgMCBSPj4NZW5kb2JqDTU5NCAwIG9iag08PC9BIDEwNDcg MCBSL0sgMi9QIDU5MSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMSAwIFI+Pg1lbmRvYmoN NTk1IDAgb2JqDTw8L0EgMTA0NiAwIFIvSyAzL1AgNTkxIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4 Ny9QZyAxIDAgUj4+DWVuZG9iag01OTYgMCBvYmoNPDwvQSAxMDQ1IDAgUi9LIDQvUCA1OTEgMCBS L1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDEgMCBSPj4NZW5kb2JqDTU5NyAwIG9iag08PC9BIDEw NDQgMCBSL0sgNS9QIDU5MSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMSAwIFI+Pg1lbmRv YmoNNTk4IDAgb2JqDTw8L0EgMTA0MyAwIFIvSyA2L1AgNTkxIDAgUi9TLyNFNiNBRCNBMyNFNiM5 NiM4Ny9QZyAxIDAgUj4+DWVuZG9iag01OTkgMCBvYmoNPDwvQSAxMDQyIDAgUi9LIDcvUCA1OTEg MCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDEgMCBSPj4NZW5kb2JqDTYwMCAwIG9iag08PC9B IDEwNDEgMCBSL0sgOC9QIDU5MSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMSAwIFI+Pg1l bmRvYmoNNjAxIDAgb2JqDTw8L0EgMTA0MCAwIFIvSyA5L1AgNTkxIDAgUi9TLyNFNiNBRCNBMyNF NiM5NiM4Ny9QZyAxIDAgUj4+DWVuZG9iag02MDIgMCBvYmoNPDwvQSAxMDM5IDAgUi9LIDEwL1Ag NTkxIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxIDAgUj4+DWVuZG9iag02MDMgMCBvYmoN PDwvQSAxMDM4IDAgUi9LIDExL1AgNTkxIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxIDAg Uj4+DWVuZG9iag02MDQgMCBvYmoNPDwvQSAxMDM3IDAgUi9LIDEyL1AgNTkxIDAgUi9TLyNFNiNB RCNBMyNFNiM5NiM4Ny9QZyAxIDAgUj4+DWVuZG9iag02MDUgMCBvYmoNPDwvQSAxMDM2IDAgUi9L IDEzL1AgNTkxIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxIDAgUj4+DWVuZG9iag02MDYg MCBvYmoNPDwvQSAxMDM1IDAgUi9LIDE0L1AgNTkxIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9Q ZyAxIDAgUj4+DWVuZG9iag02MDcgMCBvYmoNPDwvQSAxMDM0IDAgUi9LIDE1L1AgNTkxIDAgUi9T LyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxIDAgUj4+DWVuZG9iag02MDggMCBvYmoNPDwvQSAxMDMz IDAgUi9LIDE2L1AgNTkxIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxIDAgUj4+DWVuZG9i ag02MDkgMCBvYmoNPDwvQSAxMDMyIDAgUi9DL0RlZmF1bHQvSyAxNy9QIDU5MSAwIFIvUy9EZWZh dWx0L1BnIDEgMCBSPj4NZW5kb2JqDTYxMCAwIG9iag08PC9BIDEwMzEgMCBSL0sgMTgvUCA1OTEg MCBSL1MvRGVmYXVsdC9QZyAxIDAgUj4+DWVuZG9iag02MTEgMCBvYmoNPDwvQSAxMDMwIDAgUi9L IDE5L1AgNTkxIDAgUi9TL0RlZmF1bHQvUGcgMSAwIFI+Pg1lbmRvYmoNNjEyIDAgb2JqDTw8L0Eg MTAyOSAwIFIvSyAyMC9QIDU5MSAwIFIvUy9EZWZhdWx0L1BnIDEgMCBSPj4NZW5kb2JqDTYxMyAw IG9iag08PC9BIDEwMjggMCBSL0sgMjEvUCA1OTEgMCBSL1MvRGVmYXVsdC9QZyAxIDAgUj4+DWVu ZG9iag02MTQgMCBvYmoNPDwvQSAxMDI3IDAgUi9LIDIyL1AgNTkxIDAgUi9TL0RlZmF1bHQvUGcg MSAwIFI+Pg1lbmRvYmoNNjE1IDAgb2JqDTw8L0EgMTAyNiAwIFIvSyAyMy9QIDU5MSAwIFIvUy9E ZWZhdWx0L1BnIDEgMCBSPj4NZW5kb2JqDTYxNiAwIG9iag08PC9BIDEwMjUgMCBSL0sgMjQvUCA1 OTEgMCBSL1MvRGVmYXVsdC9QZyAxIDAgUj4+DWVuZG9iag02MTcgMCBvYmoNPDwvQSAxMDI0IDAg Ui9LIDI1L1AgNTkxIDAgUi9TL0RlZmF1bHQvUGcgMSAwIFI+Pg1lbmRvYmoNNjE4IDAgb2JqDTw8 L0EgMTAyMyAwIFIvSyAyNi9QIDU5MSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMSAwIFI+ Pg1lbmRvYmoNNjE5IDAgb2JqDTw8L0EgMTAyMiAwIFIvSyAyNy9QIDU5MSAwIFIvUy8jRTYjQUQj QTMjRTYjOTYjODcvUGcgMSAwIFI+Pg1lbmRvYmoNNjIwIDAgb2JqDTw8L0EgMTAyMSAwIFIvSyAy OC9QIDU5MSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMSAwIFI+Pg1lbmRvYmoNNjIxIDAg b2JqDTw8L0EgMTAyMCAwIFIvSyAyOS9QIDU5MSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcg MSAwIFI+Pg1lbmRvYmoNNjIyIDAgb2JqDTw8L0EgMTAxOSAwIFIvSyAzMC9QIDU5MSAwIFIvUy8j RTYjQUQjQTMjRTYjOTYjODcvUGcgMSAwIFI+Pg1lbmRvYmoNNjIzIDAgb2JqDTw8L0EgMTAxOCAw IFIvSyAzMS9QIDU5MSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMSAwIFI+Pg1lbmRvYmoN NjI0IDAgb2JqDTw8L0tbMTAxNCAwIFIgMTAxNSAwIFJdL1AgNTkxIDAgUi9TL1RleHRCb3g+Pg1l bmRvYmoNNjI1IDAgb2JqDTw8L0sgMTAxMiAwIFIvUCA1OTEgMCBSL1MvVGV4dEJveD4+DWVuZG9i ag02MjYgMCBvYmoNPDwvS1s5OTggMCBSIDk5OSAwIFIgMTAwMCAwIFIgMTAwMSAwIFIgMTAwMiAw IFIgMTAwMyAwIFIgMTAwNCAwIFJdL1AgNTkxIDAgUi9TL1RleHRCb3g+Pg1lbmRvYmoNNjI3IDAg b2JqDTw8L0EgOTk3IDAgUi9LIDAvUCA1OTEgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDEy IDAgUj4+DWVuZG9iag02MjggMCBvYmoNPDwvQSA5OTYgMCBSL0sgMS9QIDU5MSAwIFIvUy8jRTYj QUQjQTMjRTYjOTYjODcvUGcgMTIgMCBSPj4NZW5kb2JqDTYyOSAwIG9iag08PC9BIDk5NSAwIFIv Qy8jRTYjQUQjQTMjRTYjOTYjODcvSyAyL1AgNTkxIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9Q ZyAxMiAwIFI+Pg1lbmRvYmoNNjMwIDAgb2JqDTw8L0EgOTk0IDAgUi9LIDMvUCA1OTEgMCBSL1Mv I0U2I0FEI0EzI0U2Izk2Izg3L1BnIDEyIDAgUj4+DWVuZG9iag02MzEgMCBvYmoNPDwvQSA5OTMg MCBSL0sgNC9QIDU5MSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMTIgMCBSPj4NZW5kb2Jq DTYzMiAwIG9iag08PC9BIDk5MiAwIFIvSyA1L1AgNTkxIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4 Ny9QZyAxMiAwIFI+Pg1lbmRvYmoNNjMzIDAgb2JqDTw8L0EgOTkxIDAgUi9LIDYvUCA1OTEgMCBS L1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDEyIDAgUj4+DWVuZG9iag02MzQgMCBvYmoNPDwvQSA5 OTAgMCBSL0sgNy9QIDU5MSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMTIgMCBSPj4NZW5k b2JqDTYzNSAwIG9iag08PC9BIDk4OSAwIFIvQy8jRTYjQUQjQTMjRTYjOTYjODcvSyA4L1AgNTkx IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxMiAwIFI+Pg1lbmRvYmoNNjM2IDAgb2JqDTw8 L0tbODY3IDAgUiA4NjggMCBSIDg2OSAwIFIgODcwIDAgUiA4NzEgMCBSIDg3MiAwIFIgODczIDAg UiA4NzQgMCBSIDg3NSAwIFIgODc2IDAgUiA4NzcgMCBSIDg3OCAwIFIgODc5IDAgUiA4ODAgMCBS IDg4MSAwIFIgODgyIDAgUiA4ODMgMCBSIDg4NCAwIFIgODg1IDAgUiA4ODYgMCBSIDg4NyAwIFIg ODg4IDAgUiA4ODkgMCBSIDg5MCAwIFJdL1AgNTkxIDAgUi9TL0w+Pg1lbmRvYmoNNjM3IDAgb2Jq DTw8L0EgODY2IDAgUi9DLyNFNiNBRCNBMyNFNiM5NiM4Ny9LIDU4L1AgNTkxIDAgUi9TLyNFNiNB RCNBMyNFNiM5NiM4Ny9QZyAxMiAwIFI+Pg1lbmRvYmoNNjM4IDAgb2JqDTw8L0sgODY0IDAgUi9Q IDU5MSAwIFIvUy9UZXh0Qm94Pj4NZW5kb2JqDTYzOSAwIG9iag08PC9LIDg2MiAwIFIvUCA1OTEg MCBSL1MvVGV4dEJveD4+DWVuZG9iag02NDAgMCBvYmoNPDwvS1s4NTggMCBSIDg1OSAwIFJdL1Ag NTkxIDAgUi9TL1RleHRCb3g+Pg1lbmRvYmoNNjQxIDAgb2JqDTw8L0sgODU2IDAgUi9QIDU5MSAw IFIvUy9UZXh0Qm94Pj4NZW5kb2JqDTY0MiAwIG9iag08PC9BIDg1NSAwIFIvSyAwL1AgNTkxIDAg Ui9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNjQzIDAgb2JqDTw8L0tb ODA1IDAgUiA4MDYgMCBSIDgwNyAwIFIgODA4IDAgUiA4MDkgMCBSIDgxMCAwIFIgODExIDAgUiA4 MTIgMCBSIDgxMyAwIFIgODE0IDAgUl0vUCA1OTEgMCBSL1MvTD4+DWVuZG9iag02NDQgMCBvYmoN PDwvQSA4MDQgMCBSL0sgMjEvUCA1OTEgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDE1IDAg Uj4+DWVuZG9iag02NDUgMCBvYmoNPDwvS1s3NTcgMCBSIDc1OCAwIFIgNzU5IDAgUiA3NjAgMCBS IDc2MSAwIFIgNzYyIDAgUiA3NjMgMCBSIDc2NCAwIFIgNzY1IDAgUl0vUCA1OTEgMCBSL1MvTD4+ DWVuZG9iag02NDYgMCBvYmoNPDwvQSA3NTYgMCBSL0sgNDEvUCA1OTEgMCBSL1MvI0U2I0FEI0Ez I0U2Izk2Izg3L1BnIDE1IDAgUj4+DWVuZG9iag02NDcgMCBvYmoNPDwvQSA3NTUgMCBSL0sgNDIv UCA1OTEgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDE1IDAgUj4+DWVuZG9iag02NDggMCBv YmoNPDwvQSA3NTQgMCBSL0sgNDMvUCA1OTEgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDE1 IDAgUj4+DWVuZG9iag02NDkgMCBvYmoNPDwvQSA3NTMgMCBSL0sgNDQvUCA1OTEgMCBSL1MvI0U2 I0FEI0EzI0U2Izk2Izg3L1BnIDE1IDAgUj4+DWVuZG9iag02NTAgMCBvYmoNPDwvQSA3NTIgMCBS L0sgNDUvUCA1OTEgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDE1IDAgUj4+DWVuZG9iag02 NTEgMCBvYmoNPDwvQSA3NTEgMCBSL0sgNDYvUCA1OTEgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3 L1BnIDE1IDAgUj4+DWVuZG9iag02NTIgMCBvYmoNPDwvQSA3NTAgMCBSL0sgNDcvUCA1OTEgMCBS L1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDE1IDAgUj4+DWVuZG9iag02NTMgMCBvYmoNPDwvQSA3 NDkgMCBSL0sgNDgvUCA1OTEgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDE1IDAgUj4+DWVu ZG9iag02NTQgMCBvYmoNPDwvQSA3NDggMCBSL0sgNDkvUCA1OTEgMCBSL1MvI0U2I0FEI0EzI0U2 Izk2Izg3L1BnIDE1IDAgUj4+DWVuZG9iag02NTUgMCBvYmoNPDwvQSA3NDcgMCBSL0sgNTAvUCA1 OTEgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDE1IDAgUj4+DWVuZG9iag02NTYgMCBvYmoN PDwvSyA3NDUgMCBSL1AgNTkxIDAgUi9TL1RleHRCb3g+Pg1lbmRvYmoNNjU3IDAgb2JqDTw8L0sg NzQzIDAgUi9QIDU5MSAwIFIvUy9UZXh0Qm94Pj4NZW5kb2JqDTY1OCAwIG9iag08PC9LWzcxMSAw IFIgNzEyIDAgUiA3MTMgMCBSIDcxNCAwIFIgNzE1IDAgUiA3MTYgMCBSIDcxNyAwIFIgNzE4IDAg UiA3MTkgMCBSIDcyMCAwIFIgNzIxIDAgUiA3MjIgMCBSIDcyMyAwIFIgNzI0IDAgUiA3MjUgMCBS IDcyNiAwIFJdL1AgNTkxIDAgUi9TL1RleHRCb3g+Pg1lbmRvYmoNNjU5IDAgb2JqDTw8L0tbNjc3 IDAgUiA2NzggMCBSIDY3OSAwIFIgNjgwIDAgUiA2ODEgMCBSIDY4MiAwIFIgNjgzIDAgUiA2ODQg MCBSIDY4NSAwIFIgNjg2IDAgUiA2ODcgMCBSIDY4OCAwIFIgNjg5IDAgUiA2OTAgMCBSIDY5MSAw IFIgNjkyIDAgUiA2OTMgMCBSXS9QIDU5MSAwIFIvUy9UZXh0Qm94Pj4NZW5kb2JqDTY2MCAwIG9i ag08PC9LIDY3NSAwIFIvUCA1OTEgMCBSL1MvVGV4dEJveD4+DWVuZG9iag02NjEgMCBvYmoNPDwv SyA2NzMgMCBSL1AgNTkxIDAgUi9TL1RleHRCb3g+Pg1lbmRvYmoNNjYyIDAgb2JqDTw8L0sgNjcx IDAgUi9QIDU5MSAwIFIvUy9UZXh0Qm94Pj4NZW5kb2JqDTY2MyAwIG9iag08PC9LIDY2OSAwIFIv UCA1OTEgMCBSL1MvVGV4dEJveD4+DWVuZG9iag02NjQgMCBvYmoNPDwvS1s2NjUgMCBSIDY2NiAw IFJdL1AgNTkxIDAgUi9TL1RleHRCb3g+Pg1lbmRvYmoNNjY1IDAgb2JqDTw8L0EgNjY4IDAgUi9L IDkxL1AgNjY0IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNjY2 IDAgb2JqDTw8L0EgNjY3IDAgUi9LIDkyL1AgNjY0IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9Q ZyAxNSAwIFI+Pg1lbmRvYmoNNjY3IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9K dXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRl bnQgMjEuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag02NjggMCBvYmoN PDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUv THJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAzNS4wL0VuZEluZGVudCAwLjAvU3RhcnRJ bmRlbnQgMC4wPj4NZW5kb2JqDTY2OSAwIG9iag08PC9BIDY3MCAwIFIvUCA2NjMgMCBSL1MvI0U2 I0FEI0EzI0U2Izk2Izg3Pj4NZW5kb2JqDTY3MCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0 QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9U ZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag02NzEg MCBvYmoNPDwvQSA2NzIgMCBSL0tbODggMTI1IDAgUiA5MF0vUCA2NjIgMCBSL1MvI0U2I0FEI0Ez I0U2Izk2Izg3L1BnIDE1IDAgUj4+DWVuZG9iag02NzIgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAv VGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAw LjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoN NjczIDAgb2JqDTw8L0EgNjc0IDAgUi9LIDg3L1AgNjYxIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4 Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNjc0IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGln bi9DZW50ZXIvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dElu ZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNjc1IDAgb2Jq DTw8L0EgNjc2IDAgUi9LIDg2L1AgNjYwIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAw IFI+Pg1lbmRvYmoNNjc2IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9DZW50ZXIv Ty9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAv RW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNjc3IDAgb2JqDTw8L0EgNzEw IDAgUi9LIDY5L1AgNjU5IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRv YmoNNjc4IDAgb2JqDTw8L0EgNzA5IDAgUi9LIDcwL1AgNjU5IDAgUi9TLyNFNiNBRCNBMyNFNiM5 NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNjc5IDAgb2JqDTw8L0EgNzA4IDAgUi9LIDcxL1AgNjU5 IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNjgwIDAgb2JqDTw8 L0EgNzA3IDAgUi9LIDcyL1AgNjU5IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+ Pg1lbmRvYmoNNjgxIDAgb2JqDTw8L0EgNzA2IDAgUi9LIDczL1AgNjU5IDAgUi9TLyNFNiNBRCNB MyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNjgyIDAgb2JqDTw8L0EgNzA1IDAgUi9LIDc0 L1AgNjU5IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNjgzIDAg b2JqDTw8L0EgNzA0IDAgUi9LIDc1L1AgNjU5IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAx NSAwIFI+Pg1lbmRvYmoNNjg0IDAgb2JqDTw8L0EgNzAzIDAgUi9LIDc2L1AgNjU5IDAgUi9TLyNF NiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNjg1IDAgb2JqDTw8L0EgNzAyIDAg Ui9LIDc3L1AgNjU5IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoN Njg2IDAgb2JqDTw8L0EgNzAxIDAgUi9LIDc4L1AgNjU5IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4 Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNjg3IDAgb2JqDTw8L0EgNzAwIDAgUi9LIDc5L1AgNjU5IDAg Ui9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNjg4IDAgb2JqDTw8L0Eg Njk5IDAgUi9LIDgwL1AgNjU5IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1l bmRvYmoNNjg5IDAgb2JqDTw8L0EgNjk4IDAgUi9LIDgxL1AgNjU5IDAgUi9TLyNFNiNBRCNBMyNF NiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNjkwIDAgb2JqDTw8L0EgNjk3IDAgUi9LIDgyL1Ag NjU5IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNjkxIDAgb2Jq DTw8L0EgNjk2IDAgUi9LIDgzL1AgNjU5IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAw IFI+Pg1lbmRvYmoNNjkyIDAgb2JqDTw8L0EgNjk1IDAgUi9LIDg0L1AgNjU5IDAgUi9TLyNFNiNB RCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNjkzIDAgb2JqDTw8L0EgNjk0IDAgUi9L IDg1L1AgNjU5IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNjk0 IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRp bmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAv U3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTY5NSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0 QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9U ZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag02OTYg MCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGlu Z01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9T dGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNjk3IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRB bGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1Rl eHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTY5OCAw IG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5n TW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0 YXJ0SW5kZW50IDI4LjA+Pg1lbmRvYmoNNjk5IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRB bGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1Rl eHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTcwMCAw IG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5n TW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0 YXJ0SW5kZW50IDAuMD4+DWVuZG9iag03MDEgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFs aWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4 dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAyOC4wPj4NZW5kb2JqDTcwMiAw IG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5n TW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0 YXJ0SW5kZW50IDAuMD4+DWVuZG9iag03MDMgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFs aWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4 dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNzA0IDAg b2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdN b2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3Rh cnRJbmRlbnQgMjEuMD4+DWVuZG9iag03MDUgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFs aWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4 dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNzA2IDAg b2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdN b2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3Rh cnRJbmRlbnQgMC4wPj4NZW5kb2JqDTcwNyAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxp Z24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0 SW5kZW50IDI4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNzA4IDAg b2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdN b2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3Rh cnRJbmRlbnQgMC4wPj4NZW5kb2JqDTcwOSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxp Z24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0 SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag03MTAgMCBv YmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01v ZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFy dEluZGVudCAwLjA+Pg1lbmRvYmoNNzExIDAgb2JqDTw8L0EgNzQyIDAgUi9LIDUzL1AgNjU4IDAg Ui9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNzEyIDAgb2JqDTw8L0Eg NzQxIDAgUi9LIDU0L1AgNjU4IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1l bmRvYmoNNzEzIDAgb2JqDTw8L0EgNzQwIDAgUi9LIDU1L1AgNjU4IDAgUi9TLyNFNiNBRCNBMyNF NiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNzE0IDAgb2JqDTw8L0EgNzM5IDAgUi9LIDU2L1Ag NjU4IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNzE1IDAgb2Jq DTw8L0EgNzM4IDAgUi9LIDU3L1AgNjU4IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAw IFI+Pg1lbmRvYmoNNzE2IDAgb2JqDTw8L0EgNzM3IDAgUi9LIDU4L1AgNjU4IDAgUi9TLyNFNiNB RCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNzE3IDAgb2JqDTw8L0EgNzM2IDAgUi9L IDU5L1AgNjU4IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNzE4 IDAgb2JqDTw8L0EgNzM1IDAgUi9LIDYwL1AgNjU4IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9Q ZyAxNSAwIFI+Pg1lbmRvYmoNNzE5IDAgb2JqDTw8L0EgNzM0IDAgUi9LIDYxL1AgNjU4IDAgUi9T LyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNzIwIDAgb2JqDTw8L0EgNzMz IDAgUi9LIDYyL1AgNjU4IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRv YmoNNzIxIDAgb2JqDTw8L0EgNzMyIDAgUi9LIDYzL1AgNjU4IDAgUi9TLyNFNiNBRCNBMyNFNiM5 NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNzIyIDAgb2JqDTw8L0EgNzMxIDAgUi9LIDY0L1AgNjU4 IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNzIzIDAgb2JqDTw8 L0EgNzMwIDAgUi9LIDY1L1AgNjU4IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+ Pg1lbmRvYmoNNzI0IDAgb2JqDTw8L0EgNzI5IDAgUi9LIDY2L1AgNjU4IDAgUi9TLyNFNiNBRCNB MyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNzI1IDAgb2JqDTw8L0EgNzI4IDAgUi9LIDY3 L1AgNjU4IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNzI2IDAg b2JqDTw8L0EgNzI3IDAgUi9LIDY4L1AgNjU4IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAx NSAwIFI+Pg1lbmRvYmoNNzI3IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9TdGFy dC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAu MC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag03MjggMCBvYmoNPDwvU3Bh Y2VBZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3Bh Y2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4w Pj4NZW5kb2JqDTcyOSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vU3RhcnQvTy9M YXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5k SW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNzMwIDAgb2JqDTw8L1NwYWNlQWZ0 ZXIgMC4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVm b3JlIDAuMC9UZXh0SW5kZW50IDI4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1l bmRvYmoNNzMxIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91 dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRl bnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag03MzIgMCBvYmoNPDwvU3BhY2VBZnRlciAw LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUg MC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2Jq DTczMyAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3Jp dGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAyOC4wL0VuZEluZGVudCAw LjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTczNCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9U ZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAv VGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNzM1 IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5n TW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0 YXJ0SW5kZW50IDAuMD4+DWVuZG9iag03MzYgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFs aWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJ bmRlbnQgMjguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag03MzcgMCBv YmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2Rl L0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJ bmRlbnQgMC4wPj4NZW5kb2JqDTczOCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24v U3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVu dCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNzM5IDAgb2JqDTw8 L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRi L1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50 IDI4LjA+Pg1lbmRvYmoNNzQwIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9TdGFy dC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAu MC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag03NDEgMCBvYmoNPDwvU3Bh Y2VBZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3Bh Y2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4w Pj4NZW5kb2JqDTc0MiAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9P L0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9F bmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag03NDMgMCBvYmoNPDwvQSA3NDQg MCBSL0sgNTIvUCA2NTcgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDE1IDAgUj4+DWVuZG9i ag03NDQgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQv V3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAxMC4wL0VuZEluZGVu dCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTc0NSAwIG9iag08PC9BIDc0NiAwIFIvSyA1 MS9QIDY1NiAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMTUgMCBSPj4NZW5kb2JqDTc0NiAw IG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5n TW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDEwLjAvRW5kSW5kZW50IDAuMC9T dGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNzQ3IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRB bGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1Rl eHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTc0OCAw IG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5n TW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0 YXJ0SW5kZW50IDAuMD4+DWVuZG9iag03NDkgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFs aWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4 dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNzUwIDAg b2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdN b2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3Rh cnRJbmRlbnQgMC4wPj4NZW5kb2JqDTc1MSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxp Z24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0 SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag03NTIgMCBv YmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01v ZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFy dEluZGVudCAwLjA+Pg1lbmRvYmoNNzUzIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGln bi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJ bmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTc1NCAwIG9i ag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9k ZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0 SW5kZW50IDAuMD4+DWVuZG9iag03NTUgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWdu L0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dElu ZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNNzU2IDAgb2Jq DTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2Rl L0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJ bmRlbnQgMC4wPj4NZW5kb2JqDTc1NyAwIG9iag08PC9BIDgwMCAwIFIvS1s4MDEgMCBSIDgwMiAw IFJdL1AgNjQ1IDAgUi9TL0xJPj4NZW5kb2JqDTc1OCAwIG9iag08PC9BIDc5NiAwIFIvS1s3OTcg MCBSIDc5OCAwIFJdL1AgNjQ1IDAgUi9TL0xJPj4NZW5kb2JqDTc1OSAwIG9iag08PC9BIDc5MiAw IFIvS1s3OTMgMCBSIDc5NCAwIFJdL1AgNjQ1IDAgUi9TL0xJPj4NZW5kb2JqDTc2MCAwIG9iag08 PC9BIDc4OCAwIFIvS1s3ODkgMCBSIDc5MCAwIFJdL1AgNjQ1IDAgUi9TL0xJPj4NZW5kb2JqDTc2 MSAwIG9iag08PC9BIDc4NCAwIFIvS1s3ODUgMCBSIDc4NiAwIFJdL1AgNjQ1IDAgUi9TL0xJPj4N ZW5kb2JqDTc2MiAwIG9iag08PC9BIDc4MCAwIFIvS1s3ODEgMCBSIDc4MiAwIFJdL1AgNjQ1IDAg Ui9TL0xJPj4NZW5kb2JqDTc2MyAwIG9iag08PC9BIDc3NiAwIFIvS1s3NzcgMCBSIDc3OCAwIFJd L1AgNjQ1IDAgUi9TL0xJPj4NZW5kb2JqDTc2NCAwIG9iag08PC9BIDc3MiAwIFIvS1s3NzMgMCBS IDc3NCAwIFJdL1AgNjQ1IDAgUi9TL0xJPj4NZW5kb2JqDTc2NSAwIG9iag08PC9BIDc2NiAwIFIv S1s3NjcgMCBSIDc2OCAwIFIgNzY5IDAgUl0vUCA2NDUgMCBSL1MvTEk+Pg1lbmRvYmoNNzY2IDAg b2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9k ZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3Rh cnRJbmRlbnQgMzYuMD4+DWVuZG9iag03NjcgMCBvYmoNPDwvSyAzOC9QIDc2NSAwIFIvUy9MYmwv UGcgMTUgMCBSPj4NZW5kb2JqDTc2OCAwIG9iag08PC9LIDc3MSAwIFIvUCA3NjUgMCBSL1MvTGJv ZHk+Pg1lbmRvYmoNNzY5IDAgb2JqDTw8L0EgNzcwIDAgUi9DLyNFNiNBRCNBMyNFNiM5NiM4Ny9L IDQwL1AgNzY1IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNzcw IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5n TW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0 YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNNzcxIDAgb2JqDTw8L0sgMzkvUCA3NjggMCBSL1MvI0U2 I0FEI0EzI0U2Izk2Izg3L1BnIDE1IDAgUj4+DWVuZG9iag03NzIgMCBvYmoNPDwvU3BhY2VBZnRl ciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZv cmUgMC4wL1RleHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4N ZW5kb2JqDTc3MyAwIG9iag08PC9LIDM2L1AgNzY0IDAgUi9TL0xibC9QZyAxNSAwIFI+Pg1lbmRv YmoNNzc0IDAgb2JqDTw8L0sgNzc1IDAgUi9QIDc2NCAwIFIvUy9MYm9keT4+DWVuZG9iag03NzUg MCBvYmoNPDwvSyAzNy9QIDc3NCAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMTUgMCBSPj4N ZW5kb2JqDTc3NiAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlv dXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAtMTguMC9FbmRJ bmRlbnQgMC4wL1N0YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNNzc3IDAgb2JqDTw8L0sgMzQvUCA3 NjMgMCBSL1MvTGJsL1BnIDE1IDAgUj4+DWVuZG9iag03NzggMCBvYmoNPDwvSyA3NzkgMCBSL1Ag NzYzIDAgUi9TL0xib2R5Pj4NZW5kb2JqDTc3OSAwIG9iag08PC9LIDM1L1AgNzc4IDAgUi9TLyNF NiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNNzgwIDAgb2JqDTw8L1NwYWNlQWZ0 ZXIgMC4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVm b3JlIDAuMC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+ DWVuZG9iag03ODEgMCBvYmoNPDwvSyAzMi9QIDc2MiAwIFIvUy9MYmwvUGcgMTUgMCBSPj4NZW5k b2JqDTc4MiAwIG9iag08PC9LIDc4MyAwIFIvUCA3NjIgMCBSL1MvTGJvZHk+Pg1lbmRvYmoNNzgz IDAgb2JqDTw8L0sgMzMvUCA3ODIgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDE1IDAgUj4+ DWVuZG9iag03ODQgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5 b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgLTE4LjAvRW5k SW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTc4NSAwIG9iag08PC9LIDMwL1Ag NzYxIDAgUi9TL0xibC9QZyAxNSAwIFI+Pg1lbmRvYmoNNzg2IDAgb2JqDTw8L0sgNzg3IDAgUi9Q IDc2MSAwIFIvUy9MYm9keT4+DWVuZG9iag03ODcgMCBvYmoNPDwvSyAzMS9QIDc4NiAwIFIvUy8j RTYjQUQjQTMjRTYjOTYjODcvUGcgMTUgMCBSPj4NZW5kb2JqDTc4OCAwIG9iag08PC9TcGFjZUFm dGVyIDUuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJl Zm9yZSA1LjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDM2LjA+ Pg1lbmRvYmoNNzg5IDAgb2JqDTw8L0sgMjgvUCA3NjAgMCBSL1MvTGJsL1BnIDE1IDAgUj4+DWVu ZG9iag03OTAgMCBvYmoNPDwvSyA3OTEgMCBSL1AgNzYwIDAgUi9TL0xib2R5Pj4NZW5kb2JqDTc5 MSAwIG9iag08PC9LIDI5L1AgNzkwIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+ Pg1lbmRvYmoNNzkyIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9TdGFydC9PL0xh eW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IC0xOC4wL0Vu ZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag03OTMgMCBvYmoNPDwvSyAyNi9Q IDc1OSAwIFIvUy9MYmwvUGcgMTUgMCBSPj4NZW5kb2JqDTc5NCAwIG9iag08PC9LIDc5NSAwIFIv UCA3NTkgMCBSL1MvTGJvZHk+Pg1lbmRvYmoNNzk1IDAgb2JqDTw8L0sgMjcvUCA3OTQgMCBSL1Mv I0U2I0FEI0EzI0U2Izk2Izg3L1BnIDE1IDAgUj4+DWVuZG9iag03OTYgMCBvYmoNPDwvU3BhY2VB ZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VC ZWZvcmUgMC4wL1RleHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4w Pj4NZW5kb2JqDTc5NyAwIG9iag08PC9LIDI0L1AgNzU4IDAgUi9TL0xibC9QZyAxNSAwIFI+Pg1l bmRvYmoNNzk4IDAgb2JqDTw8L0sgNzk5IDAgUi9QIDc1OCAwIFIvUy9MYm9keT4+DWVuZG9iag03 OTkgMCBvYmoNPDwvSyAyNS9QIDc5OCAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMTUgMCBS Pj4NZW5kb2JqDTgwMCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vU3RhcnQvTy9M YXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAtMTguMC9F bmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNODAxIDAgb2JqDTw8L0sgMjIv UCA3NTcgMCBSL1MvTGJsL1BnIDE1IDAgUj4+DWVuZG9iag04MDIgMCBvYmoNPDwvSyA4MDMgMCBS L1AgNzU3IDAgUi9TL0xib2R5Pj4NZW5kb2JqDTgwMyAwIG9iag08PC9LIDIzL1AgODAyIDAgUi9T LyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNODA0IDAgb2JqDTw8L1NwYWNl QWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNl QmVmb3JlIDUuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+ DWVuZG9iag04MDUgMCBvYmoNPDwvQSA4NTEgMCBSL0tbODUyIDAgUiA4NTMgMCBSXS9QIDY0MyAw IFIvUy9MST4+DWVuZG9iag04MDYgMCBvYmoNPDwvQSA4NDcgMCBSL0tbODQ4IDAgUiA4NDkgMCBS XS9QIDY0MyAwIFIvUy9MST4+DWVuZG9iag04MDcgMCBvYmoNPDwvQSA4NDMgMCBSL0tbODQ0IDAg UiA4NDUgMCBSXS9QIDY0MyAwIFIvUy9MST4+DWVuZG9iag04MDggMCBvYmoNPDwvQSA4MzkgMCBS L0tbODQwIDAgUiA4NDEgMCBSXS9QIDY0MyAwIFIvUy9MST4+DWVuZG9iag04MDkgMCBvYmoNPDwv QSA4MzUgMCBSL0MvTEkvS1s4MzYgMCBSIDgzNyAwIFJdL1AgNjQzIDAgUi9TL0xJPj4NZW5kb2Jq DTgxMCAwIG9iag08PC9BIDgzMSAwIFIvQy9MSS9LWzgzMiAwIFIgODMzIDAgUl0vUCA2NDMgMCBS L1MvTEk+Pg1lbmRvYmoNODExIDAgb2JqDTw8L0EgODI3IDAgUi9LWzgyOCAwIFIgODI5IDAgUl0v UCA2NDMgMCBSL1MvTEk+Pg1lbmRvYmoNODEyIDAgb2JqDTw8L0EgODIzIDAgUi9LWzgyNCAwIFIg ODI1IDAgUl0vUCA2NDMgMCBSL1MvTEk+Pg1lbmRvYmoNODEzIDAgb2JqDTw8L0EgODE5IDAgUi9L WzgyMCAwIFIgODIxIDAgUl0vUCA2NDMgMCBSL1MvTEk+Pg1lbmRvYmoNODE0IDAgb2JqDTw8L0Eg ODE1IDAgUi9LWzgxNiAwIFIgODE3IDAgUl0vUCA2NDMgMCBSL1MvTEk+Pg1lbmRvYmoNODE1IDAg b2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdN b2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9T dGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTgxNiAwIG9iag08PC9LIDE5L1AgODE0IDAgUi9TL0xi bC9QZyAxNSAwIFI+Pg1lbmRvYmoNODE3IDAgb2JqDTw8L0sgODE4IDAgUi9QIDgxNCAwIFIvUy9M Ym9keT4+DWVuZG9iag04MTggMCBvYmoNPDwvSyAyMC9QIDgxNyAwIFIvUy8jRTYjQUQjQTMjRTYj OTYjODcvUGcgMTUgMCBSPj4NZW5kb2JqDTgxOSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0 QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9U ZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag04 MjAgMCBvYmoNPDwvSyAxNy9QIDgxMyAwIFIvUy9MYmwvUGcgMTUgMCBSPj4NZW5kb2JqDTgyMSAw IG9iag08PC9LIDgyMiAwIFIvUCA4MTMgMCBSL1MvTGJvZHk+Pg1lbmRvYmoNODIyIDAgb2JqDTw8 L0sgMTgvUCA4MjEgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDE1IDAgUj4+DWVuZG9iag04 MjMgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3Jp dGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRlbnQg MC4wL1N0YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNODI0IDAgb2JqDTw8L0sgMTUvUCA4MTIgMCBS L1MvTGJsL1BnIDE1IDAgUj4+DWVuZG9iag04MjUgMCBvYmoNPDwvSyA4MjYgMCBSL1AgODEyIDAg Ui9TL0xib2R5Pj4NZW5kb2JqDTgyNiAwIG9iag08PC9LIDE2L1AgODI1IDAgUi9TLyNFNiNBRCNB MyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNODI3IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4w L1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUg MC4wL1RleHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4NZW5k b2JqDTgyOCAwIG9iag08PC9LIDEzL1AgODExIDAgUi9TL0xibC9QZyAxNSAwIFI+Pg1lbmRvYmoN ODI5IDAgb2JqDTw8L0sgODMwIDAgUi9QIDgxMSAwIFIvUy9MYm9keT4+DWVuZG9iag04MzAgMCBv YmoNPDwvSyAxNC9QIDgyOSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMTUgMCBSPj4NZW5k b2JqDTgzMSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91 dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IC0xOC4wL0VuZElu ZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag04MzIgMCBvYmoNPDwvSyAxMS9QIDgx MCAwIFIvUy9MYmwvUGcgMTUgMCBSPj4NZW5kb2JqDTgzMyAwIG9iag08PC9LIDgzNCAwIFIvUCA4 MTAgMCBSL1MvTGJvZHk+Pg1lbmRvYmoNODM0IDAgb2JqDTw8L0sgMTIvUCA4MzMgMCBSL1MvI0U2 I0FEI0EzI0U2Izk2Izg3L1BnIDE1IDAgUj4+DWVuZG9iag04MzUgMCBvYmoNPDwvU3BhY2VBZnRl ciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZv cmUgMC4wL1RleHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4N ZW5kb2JqDTgzNiAwIG9iag08PC9LIDkvUCA4MDkgMCBSL1MvTGJsL1BnIDE1IDAgUj4+DWVuZG9i ag04MzcgMCBvYmoNPDwvSyA4MzggMCBSL1AgODA5IDAgUi9TL0xib2R5Pj4NZW5kb2JqDTgzOCAw IG9iag08PC9LIDEwL1AgODM3IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1l bmRvYmoNODM5IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91 dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IC0xOC4wL0VuZElu ZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag04NDAgMCBvYmoNPDwvSyA3L1AgODA4 IDAgUi9TL0xibC9QZyAxNSAwIFI+Pg1lbmRvYmoNODQxIDAgb2JqDTw8L0sgODQyIDAgUi9QIDgw OCAwIFIvUy9MYm9keT4+DWVuZG9iag04NDIgMCBvYmoNPDwvSyA4L1AgODQxIDAgUi9TLyNFNiNB RCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNODQzIDAgb2JqDTw8L1NwYWNlQWZ0ZXIg NS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3Jl IDUuMC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVu ZG9iag04NDQgMCBvYmoNPDwvSyA1L1AgODA3IDAgUi9TL0xibC9QZyAxNSAwIFI+Pg1lbmRvYmoN ODQ1IDAgb2JqDTw8L0sgODQ2IDAgUi9QIDgwNyAwIFIvUy9MYm9keT4+DWVuZG9iag04NDYgMCBv YmoNPDwvSyA2L1AgODQ1IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRv YmoNODQ3IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9X cml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVu dCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag04NDggMCBvYmoNPDwvSyAzL1AgODA2IDAg Ui9TL0xibC9QZyAxNSAwIFI+Pg1lbmRvYmoNODQ5IDAgb2JqDTw8L0sgODUwIDAgUi9QIDgwNiAw IFIvUy9MYm9keT4+DWVuZG9iag04NTAgMCBvYmoNPDwvSyA0L1AgODQ5IDAgUi9TLyNFNiNBRCNB MyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoNODUxIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4w L1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUu MC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9i ag04NTIgMCBvYmoNPDwvSyAxL1AgODA1IDAgUi9TL0xibC9QZyAxNSAwIFI+Pg1lbmRvYmoNODUz IDAgb2JqDTw8L0sgODU0IDAgUi9QIDgwNSAwIFIvUy9MYm9keT4+DWVuZG9iag04NTQgMCBvYmoN PDwvSyAyL1AgODUzIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxNSAwIFI+Pg1lbmRvYmoN ODU1IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0 aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4w L1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag04NTYgMCBvYmoNPDwvQSA4NTcgMCBSL0tbNjMgMTI0 IDAgUiA2NV0vUCA2NDEgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDEyIDAgUj4+DWVuZG9i ag04NTcgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQv V3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50 IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNODU4IDAgb2JqDTw8L0EgODYxIDAgUi9LIDYx L1AgNjQwIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxMiAwIFI+Pg1lbmRvYmoNODU5IDAg b2JqDTw8L0EgODYwIDAgUi9LIDYyL1AgNjQwIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAx MiAwIFI+Pg1lbmRvYmoNODYwIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0 aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQg MjAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag04NjEgMCBvYmoNPDwv U3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJU Yi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAzNS4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRl bnQgMC4wPj4NZW5kb2JqDTg2MiAwIG9iag08PC9BIDg2MyAwIFIvSyA2MC9QIDYzOSAwIFIvUy8j RTYjQUQjQTMjRTYjOTYjODcvUGcgMTIgMCBSPj4NZW5kb2JqDTg2MyAwIG9iag08PC9TcGFjZUFm dGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNl QmVmb3JlIDAuMC9UZXh0SW5kZW50IDEwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+ Pg1lbmRvYmoNODY0IDAgb2JqDTw8L0EgODY1IDAgUi9LIDU5L1AgNjM4IDAgUi9TLyNFNiNBRCNB MyNFNiM5NiM4Ny9QZyAxMiAwIFI+Pg1lbmRvYmoNODY1IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4w L1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUg MC4wL1RleHRJbmRlbnQgMTAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9i ag04NjYgMCBvYmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dy aXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAw LjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTg2NyAwIG9iag08PC9BIDk4NSAwIFIvQy9MSS9L Wzk4NiAwIFIgOTg3IDAgUl0vUCA2MzYgMCBSL1MvTEk+Pg1lbmRvYmoNODY4IDAgb2JqDTw8L0Eg OTgxIDAgUi9LWzk4MiAwIFIgOTgzIDAgUl0vUCA2MzYgMCBSL1MvTEk+Pg1lbmRvYmoNODY5IDAg b2JqDTw8L0EgOTc3IDAgUi9LWzk3OCAwIFIgOTc5IDAgUl0vUCA2MzYgMCBSL1MvTEk+Pg1lbmRv YmoNODcwIDAgb2JqDTw8L0EgOTczIDAgUi9LWzk3NCAwIFIgOTc1IDAgUl0vUCA2MzYgMCBSL1Mv TEk+Pg1lbmRvYmoNODcxIDAgb2JqDTw8L0EgOTY5IDAgUi9LWzk3MCAwIFIgOTcxIDAgUl0vUCA2 MzYgMCBSL1MvTEk+Pg1lbmRvYmoNODcyIDAgb2JqDTw8L0EgOTY1IDAgUi9LWzk2NiAwIFIgOTY3 IDAgUl0vUCA2MzYgMCBSL1MvTEk+Pg1lbmRvYmoNODczIDAgb2JqDTw8L0EgOTYxIDAgUi9LWzk2 MiAwIFIgOTYzIDAgUl0vUCA2MzYgMCBSL1MvTEk+Pg1lbmRvYmoNODc0IDAgb2JqDTw8L0EgOTU3 IDAgUi9LWzk1OCAwIFIgOTU5IDAgUl0vUCA2MzYgMCBSL1MvTEk+Pg1lbmRvYmoNODc1IDAgb2Jq DTw8L0EgOTUzIDAgUi9LWzk1NCAwIFIgOTU1IDAgUl0vUCA2MzYgMCBSL1MvTEk+Pg1lbmRvYmoN ODc2IDAgb2JqDTw8L0EgOTQ5IDAgUi9LWzk1MCAwIFIgOTUxIDAgUl0vUCA2MzYgMCBSL1MvTEk+ Pg1lbmRvYmoNODc3IDAgb2JqDTw8L0EgOTQ1IDAgUi9LWzk0NiAwIFIgOTQ3IDAgUl0vUCA2MzYg MCBSL1MvTEk+Pg1lbmRvYmoNODc4IDAgb2JqDTw8L0EgOTM5IDAgUi9LWzk0MCAwIFIgOTQxIDAg UiA5NDIgMCBSXS9QIDYzNiAwIFIvUy9MST4+DWVuZG9iag04NzkgMCBvYmoNPDwvQSA5MzUgMCBS L0tbOTM2IDAgUiA5MzcgMCBSXS9QIDYzNiAwIFIvUy9MST4+DWVuZG9iag04ODAgMCBvYmoNPDwv QSA5MzEgMCBSL0tbOTMyIDAgUiA5MzMgMCBSXS9QIDYzNiAwIFIvUy9MST4+DWVuZG9iag04ODEg MCBvYmoNPDwvQSA5MjcgMCBSL0tbOTI4IDAgUiA5MjkgMCBSXS9QIDYzNiAwIFIvUy9MST4+DWVu ZG9iag04ODIgMCBvYmoNPDwvQSA5MjMgMCBSL0tbOTI0IDAgUiA5MjUgMCBSXS9QIDYzNiAwIFIv Uy9MST4+DWVuZG9iag04ODMgMCBvYmoNPDwvQSA5MTkgMCBSL0tbOTIwIDAgUiA5MjEgMCBSXS9Q IDYzNiAwIFIvUy9MST4+DWVuZG9iag04ODQgMCBvYmoNPDwvQSA5MTUgMCBSL0tbOTE2IDAgUiA5 MTcgMCBSXS9QIDYzNiAwIFIvUy9MST4+DWVuZG9iag04ODUgMCBvYmoNPDwvQSA5MTEgMCBSL0tb OTEyIDAgUiA5MTMgMCBSXS9QIDYzNiAwIFIvUy9MST4+DWVuZG9iag04ODYgMCBvYmoNPDwvQSA5 MDcgMCBSL0tbOTA4IDAgUiA5MDkgMCBSXS9QIDYzNiAwIFIvUy9MST4+DWVuZG9iag04ODcgMCBv YmoNPDwvQSA5MDMgMCBSL0tbOTA0IDAgUiA5MDUgMCBSXS9QIDYzNiAwIFIvUy9MST4+DWVuZG9i ag04ODggMCBvYmoNPDwvQSA4OTkgMCBSL0tbOTAwIDAgUiA5MDEgMCBSXS9QIDYzNiAwIFIvUy9M ST4+DWVuZG9iag04ODkgMCBvYmoNPDwvQSA4OTUgMCBSL0tbODk2IDAgUiA4OTcgMCBSXS9QIDYz NiAwIFIvUy9MST4+DWVuZG9iag04OTAgMCBvYmoNPDwvQSA4OTEgMCBSL0tbODkyIDAgUiA4OTMg MCBSXS9QIDYzNiAwIFIvUy9MST4+DWVuZG9iag04OTEgMCBvYmoNPDwvU3BhY2VBZnRlciA1LjAv VGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4w L1RleHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4NZW5kb2Jq DTg5MiAwIG9iag08PC9LIDU2L1AgODkwIDAgUi9TL0xibC9QZyAxMiAwIFI+Pg1lbmRvYmoNODkz IDAgb2JqDTw8L0sgODk0IDAgUi9QIDg5MCAwIFIvUy9MYm9keT4+DWVuZG9iag04OTQgMCBvYmoN PDwvSyA1Ny9QIDg5MyAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMTIgMCBSPj4NZW5kb2Jq DTg5NSAwIG9iag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3Jp dGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRlbnQg MC4wL1N0YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNODk2IDAgb2JqDTw8L0sgNTQvUCA4ODkgMCBS L1MvTGJsL1BnIDEyIDAgUj4+DWVuZG9iag04OTcgMCBvYmoNPDwvSyA4OTggMCBSL1AgODg5IDAg Ui9TL0xib2R5Pj4NZW5kb2JqDTg5OCAwIG9iag08PC9LIDU1L1AgODk3IDAgUi9TLyNFNiNBRCNB MyNFNiM5NiM4Ny9QZyAxMiAwIFI+Pg1lbmRvYmoNODk5IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4w L1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUu MC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9i ag05MDAgMCBvYmoNPDwvSyA1Mi9QIDg4OCAwIFIvUy9MYmwvUGcgMTIgMCBSPj4NZW5kb2JqDTkw MSAwIG9iag08PC9LIDkwMiAwIFIvUCA4ODggMCBSL1MvTGJvZHk+Pg1lbmRvYmoNOTAyIDAgb2Jq DTw8L0sgNTMvUCA5MDEgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDEyIDAgUj4+DWVuZG9i ag05MDMgMCBvYmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dy aXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50 IDAuMC9TdGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTkwNCAwIG9iag08PC9LIDUwL1AgODg3IDAg Ui9TL0xibC9QZyAxMiAwIFI+Pg1lbmRvYmoNOTA1IDAgb2JqDTw8L0sgOTA2IDAgUi9QIDg4NyAw IFIvUy9MYm9keT4+DWVuZG9iag05MDYgMCBvYmoNPDwvSyA1MS9QIDkwNSAwIFIvUy8jRTYjQUQj QTMjRTYjOTYjODcvUGcgMTIgMCBSPj4NZW5kb2JqDTkwNyAwIG9iag08PC9TcGFjZUFmdGVyIDUu MC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSA1 LjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDM2LjA+Pg1lbmRv YmoNOTA4IDAgb2JqDTw8L0sgNDgvUCA4ODYgMCBSL1MvTGJsL1BnIDEyIDAgUj4+DWVuZG9iag05 MDkgMCBvYmoNPDwvSyA5MTAgMCBSL1AgODg2IDAgUi9TL0xib2R5Pj4NZW5kb2JqDTkxMCAwIG9i ag08PC9LIDQ5L1AgOTA5IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxMiAwIFI+Pg1lbmRv YmoNOTExIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9X cml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVu dCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag05MTIgMCBvYmoNPDwvSyA0Ni9QIDg4NSAw IFIvUy9MYmwvUGcgMTIgMCBSPj4NZW5kb2JqDTkxMyAwIG9iag08PC9LIDkxNCAwIFIvUCA4ODUg MCBSL1MvTGJvZHk+Pg1lbmRvYmoNOTE0IDAgb2JqDTw8L0sgNDcvUCA5MTMgMCBSL1MvI0U2I0FE I0EzI0U2Izk2Izg3L1BnIDEyIDAgUj4+DWVuZG9iag05MTUgMCBvYmoNPDwvU3BhY2VBZnRlciA1 LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUg NS4wL1RleHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4NZW5k b2JqDTkxNiAwIG9iag08PC9LIDQ0L1AgODg0IDAgUi9TL0xibC9QZyAxMiAwIFI+Pg1lbmRvYmoN OTE3IDAgb2JqDTw8L0sgOTE4IDAgUi9QIDg4NCAwIFIvUy9MYm9keT4+DWVuZG9iag05MTggMCBv YmoNPDwvSyA0NS9QIDkxNyAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMTIgMCBSPj4NZW5k b2JqDTkxOSAwIG9iag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQv V3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRl bnQgMC4wL1N0YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNOTIwIDAgb2JqDTw8L0sgNDIvUCA4ODMg MCBSL1MvTGJsL1BnIDEyIDAgUj4+DWVuZG9iag05MjEgMCBvYmoNPDwvSyA5MjIgMCBSL1AgODgz IDAgUi9TL0xib2R5Pj4NZW5kb2JqDTkyMiAwIG9iag08PC9LIDQzL1AgOTIxIDAgUi9TLyNFNiNB RCNBMyNFNiM5NiM4Ny9QZyAxMiAwIFI+Pg1lbmRvYmoNOTIzIDAgb2JqDTw8L1NwYWNlQWZ0ZXIg NS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3Jl IDUuMC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVu ZG9iag05MjQgMCBvYmoNPDwvSyA0MC9QIDg4MiAwIFIvUy9MYmwvUGcgMTIgMCBSPj4NZW5kb2Jq DTkyNSAwIG9iag08PC9LIDkyNiAwIFIvUCA4ODIgMCBSL1MvTGJvZHk+Pg1lbmRvYmoNOTI2IDAg b2JqDTw8L0sgNDEvUCA5MjUgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDEyIDAgUj4+DWVu ZG9iag05MjcgMCBvYmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0 L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgLTE4LjAvRW5kSW5k ZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTkyOCAwIG9iag08PC9LIDM4L1AgODgx IDAgUi9TL0xibC9QZyAxMiAwIFI+Pg1lbmRvYmoNOTI5IDAgb2JqDTw8L0sgOTMwIDAgUi9QIDg4 MSAwIFIvUy9MYm9keT4+DWVuZG9iag05MzAgMCBvYmoNPDwvSyAzOS9QIDkyOSAwIFIvUy8jRTYj QUQjQTMjRTYjOTYjODcvUGcgMTIgMCBSPj4NZW5kb2JqDTkzMSAwIG9iag08PC9TcGFjZUFmdGVy IDUuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9y ZSA1LjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDM2LjA+Pg1l bmRvYmoNOTMyIDAgb2JqDTw8L0sgMzYvUCA4ODAgMCBSL1MvTGJsL1BnIDEyIDAgUj4+DWVuZG9i ag05MzMgMCBvYmoNPDwvSyA5MzQgMCBSL1AgODgwIDAgUi9TL0xib2R5Pj4NZW5kb2JqDTkzNCAw IG9iag08PC9LIDM3L1AgOTMzIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxMiAwIFI+Pg1l bmRvYmoNOTM1IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91 dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IC0xOC4wL0VuZElu ZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag05MzYgMCBvYmoNPDwvSyAzNC9QIDg3 OSAwIFIvUy9MYmwvUGcgMTIgMCBSPj4NZW5kb2JqDTkzNyAwIG9iag08PC9LIDkzOCAwIFIvUCA4 NzkgMCBSL1MvTGJvZHk+Pg1lbmRvYmoNOTM4IDAgb2JqDTw8L0sgMzUvUCA5MzcgMCBSL1MvI0U2 I0FEI0EzI0U2Izk2Izg3L1BnIDEyIDAgUj4+DWVuZG9iag05MzkgMCBvYmoNPDwvU3BhY2VBZnRl ciA1LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZv cmUgNS4wL1RleHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4N ZW5kb2JqDTk0MCAwIG9iag08PC9LIDMxL1AgODc4IDAgUi9TL0xibC9QZyAxMiAwIFI+Pg1lbmRv YmoNOTQxIDAgb2JqDTw8L0sgOTQ0IDAgUi9QIDg3OCAwIFIvUy9MYm9keT4+DWVuZG9iag05NDIg MCBvYmoNPDwvQSA5NDMgMCBSL0MvI0U2I0FEI0EzI0U2Izk2Izg3L0sgMzMvUCA4NzggMCBSL1Mv I0U2I0FEI0EzI0U2Izk2Izg3L1BnIDEyIDAgUj4+DWVuZG9iag05NDMgMCBvYmoNPDwvU3BhY2VB ZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VC ZWZvcmUgNS4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+ DWVuZG9iag05NDQgMCBvYmoNPDwvSyAzMi9QIDk0MSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcv UGcgMTIgMCBSPj4NZW5kb2JqDTk0NSAwIG9iag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxpZ24v U3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4dEluZGVu dCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNOTQ2IDAgb2Jq DTw8L0sgMjkvUCA4NzcgMCBSL1MvTGJsL1BnIDEyIDAgUj4+DWVuZG9iag05NDcgMCBvYmoNPDwv SyA5NDggMCBSL1AgODc3IDAgUi9TL0xib2R5Pj4NZW5kb2JqDTk0OCAwIG9iag08PC9LIDMwL1Ag OTQ3IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxMiAwIFI+Pg1lbmRvYmoNOTQ5IDAgb2Jq DTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9M clRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJ bmRlbnQgMzYuMD4+DWVuZG9iag05NTAgMCBvYmoNPDwvSyAyNy9QIDg3NiAwIFIvUy9MYmwvUGcg MTIgMCBSPj4NZW5kb2JqDTk1MSAwIG9iag08PC9LIDk1MiAwIFIvUCA4NzYgMCBSL1MvTGJvZHk+ Pg1lbmRvYmoNOTUyIDAgb2JqDTw8L0sgMjgvUCA5NTEgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3 L1BnIDEyIDAgUj4+DWVuZG9iag05NTMgMCBvYmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFsaWdu L1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJbmRl bnQgLTE4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTk1NCAwIG9i ag08PC9LIDI1L1AgODc1IDAgUi9TL0xibC9QZyAxMiAwIFI+Pg1lbmRvYmoNOTU1IDAgb2JqDTw8 L0sgOTU2IDAgUi9QIDg3NSAwIFIvUy9MYm9keT4+DWVuZG9iag05NTYgMCBvYmoNPDwvSyAyNi9Q IDk1NSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMTIgMCBSPj4NZW5kb2JqDTk1NyAwIG9i ag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUv THJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0 SW5kZW50IDM2LjA+Pg1lbmRvYmoNOTU4IDAgb2JqDTw8L0sgMjMvUCA4NzQgMCBSL1MvTGJsL1Bn IDEyIDAgUj4+DWVuZG9iag05NTkgMCBvYmoNPDwvSyA5NjAgMCBSL1AgODc0IDAgUi9TL0xib2R5 Pj4NZW5kb2JqDTk2MCAwIG9iag08PC9LIDI0L1AgOTU5IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4 Ny9QZyAxMiAwIFI+Pg1lbmRvYmoNOTYxIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGln bi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5k ZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag05NjIgMCBv YmoNPDwvSyAyMS9QIDg3MyAwIFIvUy9MYmwvUGcgMTIgMCBSPj4NZW5kb2JqDTk2MyAwIG9iag08 PC9LIDk2NCAwIFIvUCA4NzMgMCBSL1MvTGJvZHk+Pg1lbmRvYmoNOTY0IDAgb2JqDTw8L0sgMjIv UCA5NjMgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDEyIDAgUj4+DWVuZG9iag05NjUgMCBv YmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2Rl L0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJbmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9TdGFy dEluZGVudCAzNi4wPj4NZW5kb2JqDTk2NiAwIG9iag08PC9LIDE5L1AgODcyIDAgUi9TL0xibC9Q ZyAxMiAwIFI+Pg1lbmRvYmoNOTY3IDAgb2JqDTw8L0sgOTY4IDAgUi9QIDg3MiAwIFIvUy9MYm9k eT4+DWVuZG9iag05NjggMCBvYmoNPDwvSyAyMC9QIDk2NyAwIFIvUy8jRTYjQUQjQTMjRTYjOTYj ODcvUGcgMTIgMCBSPj4NZW5kb2JqDTk2OSAwIG9iag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxp Z24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4dElu ZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNOTcwIDAg b2JqDTw8L0sgMTcvUCA4NzEgMCBSL1MvTGJsL1BnIDEyIDAgUj4+DWVuZG9iag05NzEgMCBvYmoN PDwvSyA5NzIgMCBSL1AgODcxIDAgUi9TL0xib2R5Pj4NZW5kb2JqDTk3MiAwIG9iag08PC9LIDE4 L1AgOTcxIDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4Ny9QZyAxMiAwIFI+Pg1lbmRvYmoNOTczIDAg b2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9k ZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3Rh cnRJbmRlbnQgMzYuMD4+DWVuZG9iag05NzQgMCBvYmoNPDwvSyAxNS9QIDg3MCAwIFIvUy9MYmwv UGcgMTIgMCBSPj4NZW5kb2JqDTk3NSAwIG9iag08PC9LIDk3NiAwIFIvUCA4NzAgMCBSL1MvTGJv ZHk+Pg1lbmRvYmoNOTc2IDAgb2JqDTw8L0sgMTYvUCA5NzUgMCBSL1MvI0U2I0FEI0EzI0U2Izk2 Izg3L1BnIDEyIDAgUj4+DWVuZG9iag05NzcgMCBvYmoNPDwvU3BhY2VBZnRlciA1LjAvVGV4dEFs aWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgNS4wL1RleHRJ bmRlbnQgLTE4LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAzNi4wPj4NZW5kb2JqDTk3OCAw IG9iag08PC9LIDEzL1AgODY5IDAgUi9TL0xibC9QZyAxMiAwIFI+Pg1lbmRvYmoNOTc5IDAgb2Jq DTw8L0sgOTgwIDAgUi9QIDg2OSAwIFIvUy9MYm9keT4+DWVuZG9iag05ODAgMCBvYmoNPDwvSyAx NC9QIDk3OSAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMTIgMCBSPj4NZW5kb2JqDTk4MSAw IG9iag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01v ZGUvTHJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4dEluZGVudCAtMTguMC9FbmRJbmRlbnQgMC4wL1N0 YXJ0SW5kZW50IDM2LjA+Pg1lbmRvYmoNOTgyIDAgb2JqDTw8L0sgMTEvUCA4NjggMCBSL1MvTGJs L1BnIDEyIDAgUj4+DWVuZG9iag05ODMgMCBvYmoNPDwvSyA5ODQgMCBSL1AgODY4IDAgUi9TL0xi b2R5Pj4NZW5kb2JqDTk4NCAwIG9iag08PC9LIDEyL1AgOTgzIDAgUi9TLyNFNiNBRCNBMyNFNiM5 NiM4Ny9QZyAxMiAwIFI+Pg1lbmRvYmoNOTg1IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgNS4wL1RleHRB bGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDUuMC9UZXh0 SW5kZW50IC0xOC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMzYuMD4+DWVuZG9iag05ODYg MCBvYmoNPDwvSyA5L1AgODY3IDAgUi9TL0xibC9QZyAxMiAwIFI+Pg1lbmRvYmoNOTg3IDAgb2Jq DTw8L0sgOTg4IDAgUi9QIDg2NyAwIFIvUy9MYm9keT4+DWVuZG9iag05ODggMCBvYmoNPDwvSyAx MC9QIDk4NyAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMTIgMCBSPj4NZW5kb2JqDTk4OSAw IG9iag08PC9TcGFjZUFmdGVyIDUuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01v ZGUvTHJUYi9TcGFjZUJlZm9yZSA1LjAvVGV4dEluZGVudCAzMC4wL0VuZEluZGVudCAwLjAvU3Rh cnRJbmRlbnQgMC4wPj4NZW5kb2JqDTk5MCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxp Z24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0 SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag05OTEgMCBv YmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01v ZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFy dEluZGVudCAwLjA+Pg1lbmRvYmoNOTkyIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGln bi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5k ZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag05OTMgMCBvYmoN PDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xy VGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRl bnQgMC4wPj4NZW5kb2JqDTk5NCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVz dGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50 IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag05OTUgMCBvYmoNPDwv U3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJU Yi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAxOTMuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5k ZW50IDAuMD4+DWVuZG9iag05OTYgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1 c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVu dCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNOTk3IDAgb2JqDTw8 L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xy VGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRl bnQgMC4wPj4NZW5kb2JqDTk5OCAwIG9iag08PC9BIDEwMTEgMCBSL0sgMzcvUCA2MjYgMCBSL1Mv I0U2I0FEI0EzI0U2Izk2Izg3L1BnIDEgMCBSPj4NZW5kb2JqDTk5OSAwIG9iag08PC9BIDEwMTAg MCBSL0sgMzgvUCA2MjYgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDEgMCBSPj4NZW5kb2Jq DTEwMDAgMCBvYmoNPDwvQSAxMDA5IDAgUi9LIDM5L1AgNjI2IDAgUi9TLyNFNiNBRCNBMyNFNiM5 NiM4Ny9QZyAxIDAgUj4+DWVuZG9iag0xMDAxIDAgb2JqDTw8L0EgMTAwOCAwIFIvSyA0MC9QIDYy NiAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMSAwIFI+Pg1lbmRvYmoNMTAwMiAwIG9iag08 PC9BIDEwMDcgMCBSL0sgNDEvUCA2MjYgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDEgMCBS Pj4NZW5kb2JqDTEwMDMgMCBvYmoNPDwvQSAxMDA2IDAgUi9LIDQyL1AgNjI2IDAgUi9TLyNFNiNB RCNBMyNFNiM5NiM4Ny9QZyAxIDAgUj4+DWVuZG9iag0xMDA0IDAgb2JqDTw8L0EgMTAwNSAwIFIv SyA0My9QIDYyNiAwIFIvUy8jRTYjQUQjQTMjRTYjOTYjODcvUGcgMSAwIFI+Pg1lbmRvYmoNMTAw NSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0 aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4w L1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0xMDA2IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1Rl eHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4w L1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEw MDcgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3Jp dGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAu MC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMTAwOCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9U ZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAv VGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMTAw OSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0 aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4w L1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0xMDEwIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1Rl eHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4w L1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEw MTEgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3Jp dGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAu MC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMTAxMiAwIG9iag08PC9BIDEwMTMgMCBSL0tbMzQg MTIzIDAgUiAzNl0vUCA2MjUgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDEgMCBSPj4NZW5k b2JqDTEwMTMgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlv dXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5k ZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMTAxNCAwIG9iag08PC9BIDEwMTcgMCBS L0sgMzIvUCA2MjQgMCBSL1MvI0U2I0FEI0EzI0U2Izk2Izg3L1BnIDEgMCBSPj4NZW5kb2JqDTEw MTUgMCBvYmoNPDwvQSAxMDE2IDAgUi9LIDMzL1AgNjI0IDAgUi9TLyNFNiNBRCNBMyNFNiM5NiM4 Ny9QZyAxIDAgUj4+DWVuZG9iag0xMDE2IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGln bi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJ bmRlbnQgMjAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0xMDE3IDAg b2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdN b2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMzEuMC9FbmRJbmRlbnQgMC4wL1N0 YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0xMDE4IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRB bGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1Rl eHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEwMTkg MCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGlu Z01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9T dGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMTAyMCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0 QWxpZ24vSnVzdGlmeS9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9U ZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0xMDIx IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRp bmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAv U3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEwMjIgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4 dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1Rl eHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEwMjMg MCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdN b2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3Rh cnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEwMjQgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFs aWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJ bmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEwMjUgMCBv YmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2Rl L0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJ bmRlbnQgMC4wPj4NZW5kb2JqDTEwMjYgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWdu L1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRl bnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEwMjcgMCBvYmoN PDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xy VGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRl bnQgMC4wPj4NZW5kb2JqDTEwMjggMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL1N0 YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQg MC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEwMjkgMCBvYmoNPDwv U3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIv U3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQg MC4wPj4NZW5kb2JqDTEwMzAgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0 L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4w L0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEwMzEgMCBvYmoNPDwvU3Bh Y2VBZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3Bh Y2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4w Pj4NZW5kb2JqDTEwMzIgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0L08v TGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0Vu ZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEwMzMgMCBvYmoNPDwvU3BhY2VB ZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFj ZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+ Pg1lbmRvYmoNMTAzNCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9P L0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9F bmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0xMDM1IDAgb2JqDTw8L1NwYWNl QWZ0ZXIgMC4wL1RleHRBbGlnbi9TdGFydC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNl QmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50IDAuMD4+ DWVuZG9iag0xMDM2IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5L08v TGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0Vu ZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEwMzcgMCBvYmoNPDwvU3BhY2VB ZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFj ZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+ Pg1lbmRvYmoNMTAzOCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vU3RhcnQvTy9M YXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5k SW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMTAzOSAwIG9iag08PC9TcGFjZUFm dGVyIDAuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJl Zm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1l bmRvYmoNMTA0MCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlv dXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5k ZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMTA0MSAwIG9iag08PC9TcGFjZUFmdGVy IDAuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9y ZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRv YmoNMTA0MiAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQv V3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50 IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMTA0MyAwIG9iag08PC9TcGFjZUFmdGVyIDAu MC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAw LjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoN MTA0NCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vSnVzdGlmeS9PL0xheW91dC9X cml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDAuMC9FbmRJbmRlbnQg MC4wL1N0YXJ0SW5kZW50IDAuMD4+DWVuZG9iag0xMDQ1IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4w L1RleHRBbGlnbi9KdXN0aWZ5L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUg MC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2Jq DTEwNDYgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dy aXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAw LjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEwNDcgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAv VGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4w L1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEw NDggMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRp bmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4wL0VuZEluZGVudCAwLjAv U3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEwNDkgMCBvYmoNPDwvU3BhY2VBZnRlciAwLjAvVGV4 dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAv VGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMTA1 MCAwIG9iag08PC9BIDEwNjkgMCBSL0MvTm9ybWFsL0sgMTA3MCAwIFIvUCAxMzggMCBSL1MvTm9y bWFsPj4NZW5kb2JqDTEwNTEgMCBvYmoNPDwvSyAxMDY3IDAgUi9QIDEzOCAwIFIvUy9UZXh0Qm94 Pj4NZW5kb2JqDTEwNTIgMCBvYmoNPDwvS1sxMDYzIDAgUiAxMDY0IDAgUl0vUCAxMzggMCBSL1Mv VGV4dEJveD4+DWVuZG9iag0xMDUzIDAgb2JqDTw8L0sgMTA2MSAwIFIvUCAxMzggMCBSL1MvVGV4 dEJveD4+DWVuZG9iag0xMDU0IDAgb2JqDTw8L0tbMTA1NSAwIFIgMTA1NiAwIFIgMTA1NyAwIFJd L1AgMTM4IDAgUi9TL1RleHRCb3g+Pg1lbmRvYmoNMTA1NSAwIG9iag08PC9BIDEwNjAgMCBSL0sg NDUvUCAxMDU0IDAgUi9TL05vcm1hbC9QZyAxMDgxIDAgUj4+DWVuZG9iag0xMDU2IDAgb2JqDTw8 L0EgMTA1OSAwIFIvSyA0Ni9QIDEwNTQgMCBSL1MvTm9ybWFsL1BnIDEwODEgMCBSPj4NZW5kb2Jq DTEwNTcgMCBvYmoNPDwvQSAxMDU4IDAgUi9LIDQ3L1AgMTA1NCAwIFIvUy9Ob3JtYWwvUGcgMTA4 MSAwIFI+Pg1lbmRvYmoNMTA1OCAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vU3Rh cnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCA0 OC4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEwNTkgMCBvYmoNPDwv U3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL1N0YXJ0L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIv U3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgNDguMC9FbmRJbmRlbnQgMC4wL1N0YXJ0SW5kZW50 IDAuMD4+DWVuZG9iag0xMDYwIDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9TdGFy dC9PL0xheW91dC9Xcml0aW5nTW9kZS9MclRiL1NwYWNlQmVmb3JlIDAuMC9UZXh0SW5kZW50IDQ4 LjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMTA2MSAwIG9iag08PC9B IDEwNjIgMCBSL0tbNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAg MjEgMjIgMjMgMjQgMjUgMjYgMjcgMjggMjkgMzAgMzEgMzIgMzMgMzQgMzUgMzYgMzcgMzggMzkg NDAgNDEgNDIgNDMgNDRdL1AgMTA1MyAwIFIvUy9Ob3JtYWwvUGcgMTA4MSAwIFI+Pg1lbmRvYmoN MTA2MiAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3Jp dGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAtNzguMC9FbmRJbmRlbnQg MC4wL1N0YXJ0SW5kZW50IDEwMy4wPj4NZW5kb2JqDTEwNjMgMCBvYmoNPDwvQSAxMDY2IDAgUi9L IDIvUCAxMDUyIDAgUi9TL05vcm1hbC9QZyAxMDgxIDAgUj4+DWVuZG9iag0xMDY0IDAgb2JqDTw8 L0EgMTA2NSAwIFIvSyAzL1AgMTA1MiAwIFIvUy9Ob3JtYWwvUGcgMTA4MSAwIFI+Pg1lbmRvYmoN MTA2NSAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9UZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3Jp dGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAu MC9TdGFydEluZGVudCAwLjA+Pg1lbmRvYmoNMTA2NiAwIG9iag08PC9TcGFjZUFmdGVyIDAuMC9U ZXh0QWxpZ24vU3RhcnQvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9TcGFjZUJlZm9yZSAwLjAv VGV4dEluZGVudCAyMi4wL0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEw NjcgMCBvYmoNPDwvQSAxMDY4IDAgUi9LIDEvUCAxMDUxIDAgUi9TL05vcm1hbC9QZyAxMDgxIDAg Uj4+DWVuZG9iag0xMDY4IDAgb2JqDTw8L1NwYWNlQWZ0ZXIgMC4wL1RleHRBbGlnbi9KdXN0aWZ5 L08vTGF5b3V0L1dyaXRpbmdNb2RlL0xyVGIvU3BhY2VCZWZvcmUgMC4wL1RleHRJbmRlbnQgMC4w L0VuZEluZGVudCAwLjAvU3RhcnRJbmRlbnQgMC4wPj4NZW5kb2JqDTEwNjkgMCBvYmoNPDwvU3Bh Y2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJUYi9T cGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVudCAw LjA+Pg1lbmRvYmoNMTA3MCAwIG9iag08PC9BIDEwNzEgMCBSL0sgMC9QIDEwNTAgMCBSL1MvSW5s aW5lU2hhcGUvUGcgMTA4MSAwIFIvQWx0KP7/AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBiAGUAbABl AHMAdABhAC4AYwBvAC4AdQBrAC8AaQBtAGEAZwBlAHMALwBGAHIAbwBuAHQAYwBvAHYAZQByAC4A agBwAGcpPj4NZW5kb2JqDTEwNzEgMCBvYmoNPDwvUGxhY2VtZW50L0lubGluZS9PL0xheW91dC9C Qm94WzEuMCAxMTMuMCA1OTcuMCA4MzUuMF0+Pg1lbmRvYmoNMTA3MiAwIG9iag08PC9BIDEwNzMg MCBSL0sgMTA3NCAwIFIvUCAxMzcgMCBSL1MvTm9ybWFsPj4NZW5kb2JqDTEwNzMgMCBvYmoNPDwv U3BhY2VBZnRlciAwLjAvVGV4dEFsaWduL0p1c3RpZnkvTy9MYXlvdXQvV3JpdGluZ01vZGUvTHJU Yi9TcGFjZUJlZm9yZSAwLjAvVGV4dEluZGVudCAwLjAvRW5kSW5kZW50IDAuMC9TdGFydEluZGVu dCAwLjA+Pg1lbmRvYmoNMTA3NCAwIG9iag08PC9BIDEwNzUgMCBSL0sgNTAvUCAxMDcyIDAgUi9T L0lubGluZVNoYXBlL1BnIDEwODEgMCBSL0FsdCj+/wBMAE8ARwBPAEEALQBzAG0AYQBsAGwALgBq AHAAZyk+Pg1lbmRvYmoNMTA3NSAwIG9iag08PC9QbGFjZW1lbnQvSW5saW5lL08vTGF5b3V0L0JC b3hbMTcuMCA1NS4wIDE3OC4wIDg3LjBdPj4NZW5kb2JqDTEwNzYgMCBvYmoNPDwvQ291bnQgOC9U eXBlL1BhZ2VzL0tpZHNbMTA4MSAwIFIgMSAwIFIgMTIgMCBSIDE1IDAgUiAxOCAwIFIgMjkgMCBS IDMyIDAgUiAzNSAwIFJdPj4NZW5kb2JqDTEwNzcgMCBvYmoNPDwvU3VidHlwZS9YTUwvTGVuZ3Ro IDM1MDAvVHlwZS9NZXRhZGF0YT4+c3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1 TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1l dGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA0LjAtYzMxNiA0NC4yNTM5MjEsIFN1biBPY3Qg MDEgMjAwNiAxNzoxNDozOSI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5v cmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRm OmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAv MS4wLyI+CiAgICAgICAgIDx4YXA6TW9kaWZ5RGF0ZT4yMDA5LTAzLTI2VDE0OjEzOjU5KzA4OjAw PC94YXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhhcDpDcmVhdGVEYXRlPjIwMDktMDMtMjZUMTQ6 MTM6NTkrMDg6MDA8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1ldGFkYXRhRGF0ZT4y MDA5LTAzLTI2VDE0OjEzOjU5KzA4OjAwPC94YXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eGFw OkNyZWF0b3JUb29sPkFkb2JlIEFjcm9iYXQgOC4xIENvbWJpbmUgRmlsZXM8L3hhcDpDcmVhdG9y VG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRm OmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVu dHMvMS4xLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+YXBwbGljYXRpb24vcGRmPC9kYzpmb3JtYXQ+ CiAgICAgICAgIDxkYzpjcmVhdG9yPgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAg ICAgPHJkZjpsaT5hbXloZTwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAg IDwvZGM6Y3JlYXRvcj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3Jp cHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcE1NPSJodHRwOi8vbnMuYWRv YmUuY29tL3hhcC8xLjAvbW0vIj4KICAgICAgICAgPHhhcE1NOkRvY3VtZW50SUQ+dXVpZDphYmMx ZmQ4My00M2UxLTQ4ZGItYmRjNS1iYzc0MDMyNTZlMzA8L3hhcE1NOkRvY3VtZW50SUQ+CiAgICAg ICAgIDx4YXBNTTpJbnN0YW5jZUlEPnV1aWQ6NzdjNzMzOTYtZmJiMC00OTFjLThmYjQtZDg2ZTNi NWE0NzZmPC94YXBNTTpJbnN0YW5jZUlEPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAg PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6cGRmPSJodHRw Oi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KICAgICAgICAgPHBkZjpQcm9kdWNlcj5BY3JvYmF0 IERpc3RpbGxlciA4LjEuMCAoV2luZG93cyk8L3BkZjpQcm9kdWNlcj4KICAgICAgPC9yZGY6RGVz Y3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAg 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 ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pg0KZW5k c3RyZWFtDWVuZG9iag0xMDc4IDAgb2JqDTw8L0NyZWF0aW9uRGF0ZShEOjIwMDkwMzI2MTQxMzU5 KzA4JzAwJykvQXV0aG9yKGFteWhlKS9DcmVhdG9yKEFkb2JlIEFjcm9iYXQgOC4xIENvbWJpbmUg RmlsZXMpL1Byb2R1Y2VyKEFjcm9iYXQgRGlzdGlsbGVyIDguMS4wIFwoV2luZG93c1wpKS9Nb2RE YXRlKEQ6MjAwOTAzMjYxNDEzNTkrMDgnMDAnKT4+DWVuZG9iag14cmVmDQowIDEwNzkNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDE5NTAxOCAwMDAwMCBuDQowMDAwMTk1MzQ0IDAwMDAwIG4NCjAw MDAxOTUzNjggMDAwMDAgbg0KMDAwMDE5NTQzNSAwMDAwMCBuDQowMDAwMTk2NDI1IDAwMDAwIG4N CjAwMDAxOTc0MTcgMDAwMDAgbg0KMDAwMDE5ODIyMCAwMDAwMCBuDQowMDAwMTk5MDg4IDAwMDAw IG4NCjAwMDAyMDAwNzIgMDAwMDAgbg0KMDAwMDIwMDkwOSAwMDAwMCBuDQowMDAwMjAxNzE4IDAw MDAwIG4NCjAwMDAyMDI0MzcgMDAwMDAgbg0KMDAwMDIwMjc2NiAwMDAwMCBuDQowMDAwMjAyNzkx IDAwMDAwIG4NCjAwMDAyMDY5MDggMDAwMDAgbg0KMDAwMDIwNzIzNiAwMDAwMCBuDQowMDAwMjA3 MjYxIDAwMDAwIG4NCjAwMDAyMTE0MTAgMDAwMDAgbg0KMDAwMDIxMTcyOCAwMDAwMCBuDQowMDAw MjExNzUzIDAwMDAwIG4NCjAwMDAyMTE4MjcgMDAwMDAgbg0KMDAwMDIxMjQ5NSAwMDAwMCBuDQow MDAwMjEzMzE2IDAwMDAwIG4NCjAwMDAyMTM3NDcgMDAwMDAgbg0KMDAwMDIxNDI0MCAwMDAwMCBu DQowMDAwMjE1MDUxIDAwMDAwIG4NCjAwMDAyMTU2NzIgMDAwMDAgbg0KMDAwMDIxNjI3NyAwMDAw MCBuDQowMDAwMjE2NzAwIDAwMDAwIG4NCjAwMDAyMTcwMTggMDAwMDAgbg0KMDAwMDIxNzA0MyAw MDAwMCBuDQowMDAwMjE5OTAwIDAwMDAwIG4NCjAwMDAyMjAyMjggMDAwMDAgbg0KMDAwMDIyMDI1 MyAwMDAwMCBuDQowMDAwMjIzOTQzIDAwMDAwIG4NCjAwMDAyMjQwOTggMDAwMDAgbg0KMDAwMDIy NDI3NiAwMDAwMCBuDQowMDAwMjc4Mjg3IDAwMDAwIG4NCjAwMDAyNzgzMjQgMDAwMDAgbg0KMDAw MDI4NzgzOSAwMDAwMCBuDQowMDAwMjg4MDY3IDAwMDAwIG4NCjAwMDAyODgzMTYgMDAwMDAgbg0K MDAwMDI4ODYwMyAwMDAwMCBuDQowMDAwMjg4ODg5IDAwMDAwIG4NCjAwMDAyODkxNDIgMDAwMDAg bg0KMDAwMDI4OTM1MCAwMDAwMCBuDQowMDAwMjk2ODY0IDAwMDAwIG4NCjAwMDAyOTcxNzIgMDAw MDAgbg0KMDAwMDI5NzQxMiAwMDAwMCBuDQowMDAwMjk3NjI1IDAwMDAwIG4NCjAwMDAyOTc2ODcg MDAwMDAgbg0KMDAwMDI5ODA0NCAwMDAwMCBuDQowMDAwMjk4MTc1IDAwMDAwIG4NCjAwMDAyOTgz MDYgMDAwMDAgbg0KMDAwMDI5ODgzNCAwMDAwMCBuDQowMDAwMjk5MjczIDAwMDAwIG4NCjAwMDAy OTk0MDggMDAwMDAgbg0KMDAwMDI5OTU0MCAwMDAwMCBuDQowMDAwMjk5Njk1IDAwMDAwIG4NCjAw MDAzMjAwMjAgMDAwMDAgbg0KMDAwMDMyMDMzMCAwMDAwMCBuDQowMDAwMzIwMzkyIDAwMDAwIG4N CjAwMDAzMjA1NDcgMDAwMDAgbg0KMDAwMDMyMDcwNyAwMDAwMCBuDQowMDAwMzIwNzY5IDAwMDAw IG4NCjAwMDAzMjEwMDggMDAwMDAgbg0KMDAwMDMyMTE2MyAwMDAwMCBuDQowMDAwMzIxMjk4IDAw MDAwIG4NCjAwMDAzMjE0MjkgMDAwMDAgbg0KMDAwMDMyMTcxNCAwMDAwMCBuDQowMDAwMzIxODQ1 IDAwMDAwIG4NCjAwMDAzMjUwNDggMDAwMDAgbg0KMDAwMDMyNTIwMyAwMDAwMCBuDQowMDAwMzI1 NTU0IDAwMDAwIG4NCjAwMDAzMjU5NjQgMDAwMDAgbg0KMDAwMDMyNjI1MCAwMDAwMCBuDQowMDAw MzI2NTU5IDAwMDAwIG4NCjAwMDAzMjY2OTEgMDAwMDAgbg0KMDAwMDMyNjc1MyAwMDAwMCBuDQow MDAwMzI2OTA5IDAwMDAwIG4NCjAwMDAzMjY5NzEgMDAwMDAgbg0KMDAwMDMyNzAzMyAwMDAwMCBu DQowMDAwMzI3MjUxIDAwMDAwIG4NCjAwMDAzMjc0MTEgMDAwMDAgbg0KMDAwMDMyNzU2NyAwMDAw MCBuDQowMDAwMzI4MDA3IDAwMDAwIG4NCjAwMDAzMjg1MTQgMDAwMDAgbg0KMDAwMDMyODkzMyAw MDAwMCBuDQowMDAwMzI5MTYxIDAwMDAwIG4NCjAwMDAzMjkyMTUgMDAwMDAgbg0KMDAwMDMyOTM2 NyAwMDAwMCBuDQowMDAwMzI5NDY2IDAwMDAwIG4NCjAwMDAzMjk1MTMgMDAwMDAgbg0KMDAwMDMy OTYwMiAwMDAwMCBuDQowMDAwMzI5NjUxIDAwMDAwIG4NCjAwMDAzMjk3MzIgMDAwMDAgbg0KMDAw MDMyOTc3OSAwMDAwMCBuDQowMDAwMzI5ODcyIDAwMDAwIG4NCjAwMDAzMjk5MTggMDAwMDAgbg0K MDAwMDMyOTk2NyAwMDAwMCBuDQowMDAwMzMwMDkyIDAwMDAwIG4NCjAwMDAzMzAxNTQgMDAwMDAg bg0KMDAwMDMzNDA1NCAwMDAwMCBuDQowMDAwMzM0MzIzIDAwMDAwIG4NCjAwMDAzMzQ1NTUgMDAw MDAgbg0KMDAwMDMzNDY5NSAwMDAwMCBuDQowMDAwMzM0ODM4IDAwMDAwIG4NCjAwMDAzMzQ5ODAg MDAwMDAgbg0KMDAwMDMzNTEyMiAwMDAwMCBuDQowMDAwMzM1MjYyIDAwMDAwIG4NCjAwMDAzMzU0 MDYgMDAwMDAgbg0KMDAwMDMzNTU0NyAwMDAwMCBuDQowMDAwMzM1Njg4IDAwMDAwIG4NCjAwMDAz MzU4MjggMDAwMDAgbg0KMDAwMDMzNTk2OSAwMDAwMCBuDQowMDAwMzM2MTEyIDAwMDAwIG4NCjAw MDAzMzYyNTUgMDAwMDAgbg0KMDAwMDMzNjQwMCAwMDAwMCBuDQowMDAwMzM2NTQyIDAwMDAwIG4N CjAwMDAzMzY2ODYgMDAwMDAgbg0KMDAwMDMzNjgyNyAwMDAwMCBuDQowMDAwMzM2OTY4IDAwMDAw IG4NCjAwMDAzMzcxMDggMDAwMDAgbg0KMDAwMDMzNzE5NyAwMDAwMCBuDQowMDAwMzM3Mjg3IDAw MDAwIG4NCjAwMDAzMzczNzcgMDAwMDAgbg0KMDAwMDMzNzQ2NyAwMDAwMCBuDQowMDAwMzM3NTU3 IDAwMDAwIG4NCjAwMDAzMzc2NDcgMDAwMDAgbg0KMDAwMDMzNzc4MiAwMDAwMCBuDQowMDAwMzM3 ODA5IDAwMDAwIG4NCjAwMDAzMzc4NjIgMDAwMDAgbg0KMDAwMDMzNzk0MSAwMDAwMCBuDQowMDAw MzM4MTY4IDAwMDAwIG4NCjAwMDAzMzk3OTIgMDAwMDAgbg0KMDAwMDMzOTg2OSAwMDAwMCBuDQow MDAwMzQwMDA5IDAwMDAwIG4NCjAwMDAzNDAwNzEgMDAwMDAgbg0KMDAwMDM0MDE2NiAwMDAwMCBu DQowMDAwMzQwMjE1IDAwMDAwIG4NCjAwMDAzNDAyODEgMDAwMDAgbg0KMDAwMDM0MDM2MCAwMDAw MCBuDQowMDAwMzQwNTgwIDAwMDAwIG4NCjAwMDAzNDIxMDkgMDAwMDAgbg0KMDAwMDM0MjE1OCAw MDAwMCBuDQowMDAwMzQyMjA3IDAwMDAwIG4NCjAwMDAzNDI4NTcgMDAwMDAgbg0KMDAwMDM0Mjk1 NyAwMDAwMCBuDQowMDAwMzQzMDM0IDAwMDAwIG4NCjAwMDAzNDMxMTEgMDAwMDAgbg0KMDAwMDM0 MzE4OCAwMDAwMCBuDQowMDAwMzQzMjY1IDAwMDAwIG4NCjAwMDAzNDMzNDIgMDAwMDAgbg0KMDAw MDM0MzQxOSAwMDAwMCBuDQowMDAwMzQzNDk2IDAwMDAwIG4NCjAwMDAzNDM1NzMgMDAwMDAgbg0K MDAwMDM0MzY1MCAwMDAwMCBuDQowMDAwMzQzNzI4IDAwMDAwIG4NCjAwMDAzNDM4MDYgMDAwMDAg bg0KMDAwMDM0Mzg4NCAwMDAwMCBuDQowMDAwMzQzOTYyIDAwMDAwIG4NCjAwMDAzNDQwNDAgMDAw MDAgbg0KMDAwMDM0NDExOCAwMDAwMCBuDQowMDAwMzQ0MTk2IDAwMDAwIG4NCjAwMDAzNDQyNzQg MDAwMDAgbg0KMDAwMDM0NDM1MiAwMDAwMCBuDQowMDAwMzQ0NDMwIDAwMDAwIG4NCjAwMDAzNDQ1 MDggMDAwMDAgbg0KMDAwMDM0NDU4NiAwMDAwMCBuDQowMDAwMzQ0NjY0IDAwMDAwIG4NCjAwMDAz NDQ3NDIgMDAwMDAgbg0KMDAwMDM0NDgyMCAwMDAwMCBuDQowMDAwMzQ0ODk4IDAwMDAwIG4NCjAw MDAzNDQ5NzYgMDAwMDAgbg0KMDAwMDM0NTA1NCAwMDAwMCBuDQowMDAwMzQ1MTMyIDAwMDAwIG4N CjAwMDAzNDUyMTAgMDAwMDAgbg0KMDAwMDM0NTI4OCAwMDAwMCBuDQowMDAwMzQ1MzY2IDAwMDAw IG4NCjAwMDAzNDU0NDQgMDAwMDAgbg0KMDAwMDM0NTUyMiAwMDAwMCBuDQowMDAwMzQ1NjAwIDAw MDAwIG4NCjAwMDAzNDU2NzggMDAwMDAgbg0KMDAwMDM0NTczOSAwMDAwMCBuDQowMDAwMzQ1Nzkx IDAwMDAwIG4NCjAwMDAzNDU4NjggMDAwMDAgbg0KMDAwMDM0NTk0NSAwMDAwMCBuDQowMDAwMzQ2 MDIyIDAwMDAwIG4NCjAwMDAzNDYxMjIgMDAwMDAgbg0KMDAwMDM0NjE5OSAwMDAwMCBuDQowMDAw MzQ2Mjc2IDAwMDAwIG4NCjAwMDAzNDYzNTMgMDAwMDAgbg0KMDAwMDM0NjQzMCAwMDAwMCBuDQow MDAwMzQ2NTA3IDAwMDAwIG4NCjAwMDAzNDY2MDcgMDAwMDAgbg0KMDAwMDM0NjgzOCAwMDAwMCBu DQowMDAwMzQ2OTM5IDAwMDAwIG4NCjAwMDAzNDcwNTggMDAwMDAgbg0KMDAwMDM0NzExMCAwMDAw MCBuDQowMDAwMzQ3MTYyIDAwMDAwIG4NCjAwMDAzNDcyMTQgMDAwMDAgbg0KMDAwMDM0NzI3NSAw MDAwMCBuDQowMDAwMzQ3MzI3IDAwMDAwIG4NCjAwMDAzNDc0MDUgMDAwMDAgbg0KMDAwMDM0NzUx NiAwMDAwMCBuDQowMDAwMzQ3NTk0IDAwMDAwIG4NCjAwMDAzNDc2NzIgMDAwMDAgbg0KMDAwMDM0 Nzc1MCAwMDAwMCBuDQowMDAwMzQ3ODI4IDAwMDAwIG4NCjAwMDAzNDc5MDYgMDAwMDAgbg0KMDAw MDM0Nzk4NCAwMDAwMCBuDQowMDAwMzQ4MDYyIDAwMDAwIG4NCjAwMDAzNDgxNDAgMDAwMDAgbg0K MDAwMDM0ODIxOCAwMDAwMCBuDQowMDAwMzQ4Mjk2IDAwMDAwIG4NCjAwMDAzNDgzNzQgMDAwMDAg bg0KMDAwMDM0ODQyNiAwMDAwMCBuDQowMDAwMzQ4NTk5IDAwMDAwIG4NCjAwMDAzNDg3NzIgMDAw MDAgbg0KMDAwMDM0ODgyNCAwMDAwMCBuDQowMDAwMzQ4ODc2IDAwMDAwIG4NCjAwMDAzNDg5Mzcg MDAwMDAgbg0KMDAwMDM0ODk4OSAwMDAwMCBuDQowMDAwMzQ5MDc5IDAwMDAwIG4NCjAwMDAzNDky MjEgMDAwMDAgbg0KMDAwMDM0OTI5OSAwMDAwMCBuDQowMDAwMzQ5Mzc3IDAwMDAwIG4NCjAwMDAz NDk1MjAgMDAwMDAgbg0KMDAwMDM0OTY2MyAwMDAwMCBuDQowMDAwMzQ5NzQxIDAwMDAwIG4NCjAw MDAzNDk4ODIgMDAwMDAgbg0KMDAwMDM0OTk5NCAwMDAwMCBuDQowMDAwMzUwMTM1IDAwMDAwIG4N CjAwMDAzNTAyMTMgMDAwMDAgbg0KMDAwMDM1MDI5MSAwMDAwMCBuDQowMDAwMzUwMzY5IDAwMDAw IG4NCjAwMDAzNTA0NDcgMDAwMDAgbg0KMDAwMDM1MDUyNSAwMDAwMCBuDQowMDAwMzUwNjAzIDAw MDAwIG4NCjAwMDAzNTA2ODEgMDAwMDAgbg0KMDAwMDM1MDc1OSAwMDAwMCBuDQowMDAwMzUwODM3 IDAwMDAwIG4NCjAwMDAzNTA5MTUgMDAwMDAgbg0KMDAwMDM1MDk5MyAwMDAwMCBuDQowMDAwMzUx MDcxIDAwMDAwIG4NCjAwMDAzNTExNDkgMDAwMDAgbg0KMDAwMDM1MTIyNyAwMDAwMCBuDQowMDAw MzUxMzA1IDAwMDAwIG4NCjAwMDAzNTEzODMgMDAwMDAgbg0KMDAwMDM1MTUyNSAwMDAwMCBuDQow MDAwMzUxNjY3IDAwMDAwIG4NCjAwMDAzNTE4MDkgMDAwMDAgbg0KMDAwMDM1MTk1MiAwMDAwMCBu DQowMDAwMzUyMDk0IDAwMDAwIG4NCjAwMDAzNTIyMzYgMDAwMDAgbg0KMDAwMDM1MjM3OSAwMDAw MCBuDQowMDAwMzUyNTIxIDAwMDAwIG4NCjAwMDAzNTI2NjMgMDAwMDAgbg0KMDAwMDM1MjgwNiAw MDAwMCBuDQowMDAwMzUyOTQ4IDAwMDAwIG4NCjAwMDAzNTMwOTAgMDAwMDAgbg0KMDAwMDM1MzIz MyAwMDAwMCBuDQowMDAwMzUzMzc1IDAwMDAwIG4NCjAwMDAzNTM1MTcgMDAwMDAgbg0KMDAwMDM1 MzY1OSAwMDAwMCBuDQowMDAwMzUzNzM3IDAwMDAwIG4NCjAwMDAzNTM4MTUgMDAwMDAgbg0KMDAw MDM1Mzg5MyAwMDAwMCBuDQowMDAwMzUzOTcxIDAwMDAwIG4NCjAwMDAzNTQwNDkgMDAwMDAgbg0K MDAwMDM1NDEyNyAwMDAwMCBuDQowMDAwMzU0MjA1IDAwMDAwIG4NCjAwMDAzNTQyODMgMDAwMDAg bg0KMDAwMDM1NDM2MSAwMDAwMCBuDQowMDAwMzU0NDM5IDAwMDAwIG4NCjAwMDAzNTQ1MTcgMDAw MDAgbg0KMDAwMDM1NDU5NSAwMDAwMCBuDQowMDAwMzU0NjczIDAwMDAwIG4NCjAwMDAzNTQ3NTEg MDAwMDAgbg0KMDAwMDM1NDgyOSAwMDAwMCBuDQowMDAwMzU0OTA3IDAwMDAwIG4NCjAwMDAzNTUw NDkgMDAwMDAgbg0KMDAwMDM1NTE5MSAwMDAwMCBuDQowMDAwMzU1MzMzIDAwMDAwIG4NCjAwMDAz NTU0NzYgMDAwMDAgbg0KMDAwMDM1NTYxOCAwMDAwMCBuDQowMDAwMzU1NzYwIDAwMDAwIG4NCjAw MDAzNTU5MDMgMDAwMDAgbg0KMDAwMDM1NjA0NSAwMDAwMCBuDQowMDAwMzU2MTg3IDAwMDAwIG4N CjAwMDAzNTYzMzAgMDAwMDAgbg0KMDAwMDM1NjQ3MiAwMDAwMCBuDQowMDAwMzU2NjE0IDAwMDAw IG4NCjAwMDAzNTY3NTcgMDAwMDAgbg0KMDAwMDM1Njg5OSAwMDAwMCBuDQowMDAwMzU3MDQxIDAw MDAwIG4NCjAwMDAzNTcxODMgMDAwMDAgbg0KMDAwMDM1NzI2MSAwMDAwMCBuDQowMDAwMzU3NDA0 IDAwMDAwIG4NCjAwMDAzNTc1NDYgMDAwMDAgbg0KMDAwMDM1NzY4OCAwMDAwMCBuDQowMDAwMzU3 ODMwIDAwMDAwIG4NCjAwMDAzNTc5NzIgMDAwMDAgbg0KMDAwMDM1ODExNCAwMDAwMCBuDQowMDAw MzU4MjU2IDAwMDAwIG4NCjAwMDAzNTgzOTggMDAwMDAgbg0KMDAwMDM1ODU0MCAwMDAwMCBuDQow MDAwMzU4NjgyIDAwMDAwIG4NCjAwMDAzNTg4MjQgMDAwMDAgbg0KMDAwMDM1ODk2NiAwMDAwMCBu DQowMDAwMzU5MDIzIDAwMDAwIG4NCjAwMDAzNTkwODkgMDAwMDAgbg0KMDAwMDM1OTE1NSAwMDAw MCBuDQowMDAwMzU5MjIxIDAwMDAwIG4NCjAwMDAzNTkyODcgMDAwMDAgbg0KMDAwMDM1OTM1MyAw MDAwMCBuDQowMDAwMzU5NDE5IDAwMDAwIG4NCjAwMDAzNTk0ODUgMDAwMDAgbg0KMDAwMDM1OTU1 MSAwMDAwMCBuDQowMDAwMzU5Njk0IDAwMDAwIG4NCjAwMDAzNTk3NDcgMDAwMDAgbg0KMDAwMDM1 OTc5NyAwMDAwMCBuDQowMDAwMzU5ODY1IDAwMDAwIG4NCjAwMDAzNjAwMDggMDAwMDAgbg0KMDAw MDM2MDA2MSAwMDAwMCBuDQowMDAwMzYwMTExIDAwMDAwIG4NCjAwMDAzNjAxNzkgMDAwMDAgbg0K MDAwMDM2MDMyMiAwMDAwMCBuDQowMDAwMzYwMzc1IDAwMDAwIG4NCjAwMDAzNjA0MjUgMDAwMDAg bg0KMDAwMDM2MDQ5MyAwMDAwMCBuDQowMDAwMzYwNjM2IDAwMDAwIG4NCjAwMDAzNjA2ODkgMDAw MDAgbg0KMDAwMDM2MDczOSAwMDAwMCBuDQowMDAwMzYwODA3IDAwMDAwIG4NCjAwMDAzNjA5NTAg MDAwMDAgbg0KMDAwMDM2MTAwMyAwMDAwMCBuDQowMDAwMzYxMDUzIDAwMDAwIG4NCjAwMDAzNjEx MjEgMDAwMDAgbg0KMDAwMDM2MTI2NCAwMDAwMCBuDQowMDAwMzYxMzE3IDAwMDAwIG4NCjAwMDAz NjEzNjcgMDAwMDAgbg0KMDAwMDM2MTQzNSAwMDAwMCBuDQowMDAwMzYxNTc4IDAwMDAwIG4NCjAw MDAzNjE2MzEgMDAwMDAgbg0KMDAwMDM2MTY4MSAwMDAwMCBuDQowMDAwMzYxNzQ5IDAwMDAwIG4N CjAwMDAzNjE4OTIgMDAwMDAgbg0KMDAwMDM2MTk0NSAwMDAwMCBuDQowMDAwMzYxOTk1IDAwMDAw IG4NCjAwMDAzNjIwNjMgMDAwMDAgbg0KMDAwMDM2MjIwNiAwMDAwMCBuDQowMDAwMzYyMjU5IDAw MDAwIG4NCjAwMDAzNjIzOTkgMDAwMDAgbg0KMDAwMDM2MjQ4OSAwMDAwMCBuDQowMDAwMzYyNjMx IDAwMDAwIG4NCjAwMDAzNjI3MDkgMDAwMDAgbg0KMDAwMDM2Mjc4NyAwMDAwMCBuDQowMDAwMzYy OTMwIDAwMDAwIG4NCjAwMDAzNjMwNzMgMDAwMDAgbg0KMDAwMDM2MzE1MSAwMDAwMCBuDQowMDAw MzYzMjk0IDAwMDAwIG4NCjAwMDAzNjMzNzIgMDAwMDAgbg0KMDAwMDM2MzUxNSAwMDAwMCBuDQow MDAwMzYzNTkzIDAwMDAwIG4NCjAwMDAzNjM3MzYgMDAwMDAgbg0KMDAwMDM2MzgwMiAwMDAwMCBu DQowMDAwMzYzODY4IDAwMDAwIG4NCjAwMDAzNjM5MzQgMDAwMDAgbg0KMDAwMDM2NDAwMCAwMDAw MCBuDQowMDAwMzY0MDY2IDAwMDAwIG4NCjAwMDAzNjQxMzIgMDAwMDAgbg0KMDAwMDM2NDE5OCAw MDAwMCBuDQowMDAwMzY0MjY0IDAwMDAwIG4NCjAwMDAzNjQzMzAgMDAwMDAgbg0KMDAwMDM2NDM5 NiAwMDAwMCBuDQowMDAwMzY0NTM5IDAwMDAwIG4NCjAwMDAzNjQ1OTIgMDAwMDAgbg0KMDAwMDM2 NDY0MiAwMDAwMCBuDQowMDAwMzY0NzEwIDAwMDAwIG4NCjAwMDAzNjQ4NTMgMDAwMDAgbg0KMDAw MDM2NDkwNSAwMDAwMCBuDQowMDAwMzY0OTU1IDAwMDAwIG4NCjAwMDAzNjUwMjIgMDAwMDAgbg0K MDAwMDM2NTE2NSAwMDAwMCBuDQowMDAwMzY1MjE3IDAwMDAwIG4NCjAwMDAzNjUyNjcgMDAwMDAg bg0KMDAwMDM2NTMzNCAwMDAwMCBuDQowMDAwMzY1NDc3IDAwMDAwIG4NCjAwMDAzNjU1MjkgMDAw MDAgbg0KMDAwMDM2NTU3OSAwMDAwMCBuDQowMDAwMzY1NjQ2IDAwMDAwIG4NCjAwMDAzNjU3ODkg MDAwMDAgbg0KMDAwMDM2NTg0MSAwMDAwMCBuDQowMDAwMzY1ODkxIDAwMDAwIG4NCjAwMDAzNjU5 NTggMDAwMDAgbg0KMDAwMDM2NjEwMSAwMDAwMCBuDQowMDAwMzY2MTUzIDAwMDAwIG4NCjAwMDAz NjYyMDMgMDAwMDAgbg0KMDAwMDM2NjI3MCAwMDAwMCBuDQowMDAwMzY2NDEzIDAwMDAwIG4NCjAw MDAzNjY0NjYgMDAwMDAgbg0KMDAwMDM2NjUxNiAwMDAwMCBuDQowMDAwMzY2NTg0IDAwMDAwIG4N CjAwMDAzNjY3MjcgMDAwMDAgbg0KMDAwMDM2Njc4MCAwMDAwMCBuDQowMDAwMzY2ODMwIDAwMDAw IG4NCjAwMDAzNjY4OTggMDAwMDAgbg0KMDAwMDM2NzA0MSAwMDAwMCBuDQowMDAwMzY3MDk0IDAw MDAwIG4NCjAwMDAzNjcxNDQgMDAwMDAgbg0KMDAwMDM2NzIxMiAwMDAwMCBuDQowMDAwMzY3MzU1 IDAwMDAwIG4NCjAwMDAzNjc0MDggMDAwMDAgbg0KMDAwMDM2NzQ1OCAwMDAwMCBuDQowMDAwMzY3 NTI2IDAwMDAwIG4NCjAwMDAzNjc2NjYgMDAwMDAgbg0KMDAwMDM2NzczOSAwMDAwMCBuDQowMDAw MzY3ODA1IDAwMDAwIG4NCjAwMDAzNjc4NzEgMDAwMDAgbg0KMDAwMDM2NzkzNyAwMDAwMCBuDQow MDAwMzY4MDAzIDAwMDAwIG4NCjAwMDAzNjgwNjkgMDAwMDAgbg0KMDAwMDM2ODEzNSAwMDAwMCBu DQowMDAwMzY4MjAxIDAwMDAwIG4NCjAwMDAzNjgyNjcgMDAwMDAgbg0KMDAwMDM2ODMzMyAwMDAw MCBuDQowMDAwMzY4Mzk5IDAwMDAwIG4NCjAwMDAzNjg0NzMgMDAwMDAgbg0KMDAwMDM2ODUzOSAw MDAwMCBuDQowMDAwMzY4NjA1IDAwMDAwIG4NCjAwMDAzNjg2NzEgMDAwMDAgbg0KMDAwMDM2ODcz NyAwMDAwMCBuDQowMDAwMzY4ODAzIDAwMDAwIG4NCjAwMDAzNjg4NjkgMDAwMDAgbg0KMDAwMDM2 ODkzNSAwMDAwMCBuDQowMDAwMzY5MDAxIDAwMDAwIG4NCjAwMDAzNjkwNjcgMDAwMDAgbg0KMDAw MDM2OTEzMyAwMDAwMCBuDQowMDAwMzY5MTk5IDAwMDAwIG4NCjAwMDAzNjkyNjUgMDAwMDAgbg0K MDAwMDM2OTQwOCAwMDAwMCBuDQowMDAwMzY5NDYxIDAwMDAwIG4NCjAwMDAzNjk1MTEgMDAwMDAg bg0KMDAwMDM2OTU3OSAwMDAwMCBuDQowMDAwMzY5NzIyIDAwMDAwIG4NCjAwMDAzNjk3NzUgMDAw MDAgbg0KMDAwMDM2OTgyNSAwMDAwMCBuDQowMDAwMzY5ODkzIDAwMDAwIG4NCjAwMDAzNzAwMzYg MDAwMDAgbg0KMDAwMDM3MDA4OSAwMDAwMCBuDQowMDAwMzcwMTM5IDAwMDAwIG4NCjAwMDAzNzAy MDcgMDAwMDAgbg0KMDAwMDM3MDM1MCAwMDAwMCBuDQowMDAwMzcwNDAzIDAwMDAwIG4NCjAwMDAz NzA0NTMgMDAwMDAgbg0KMDAwMDM3MDUyMSAwMDAwMCBuDQowMDAwMzcwNjY0IDAwMDAwIG4NCjAw MDAzNzA3MTcgMDAwMDAgbg0KMDAwMDM3MDc2NyAwMDAwMCBuDQowMDAwMzcwODM1IDAwMDAwIG4N CjAwMDAzNzA5NzggMDAwMDAgbg0KMDAwMDM3MTAzMSAwMDAwMCBuDQowMDAwMzcxMDgxIDAwMDAw IG4NCjAwMDAzNzExNDkgMDAwMDAgbg0KMDAwMDM3MTI5MiAwMDAwMCBuDQowMDAwMzcxMzQ1IDAw MDAwIG4NCjAwMDAzNzEzOTUgMDAwMDAgbg0KMDAwMDM3MTQ2MyAwMDAwMCBuDQowMDAwMzcxNjA2 IDAwMDAwIG4NCjAwMDAzNzE2NTkgMDAwMDAgbg0KMDAwMDM3MTcwOSAwMDAwMCBuDQowMDAwMzcx Nzc3IDAwMDAwIG4NCjAwMDAzNzE5MjAgMDAwMDAgbg0KMDAwMDM3MTk3MyAwMDAwMCBuDQowMDAw MzcyMDIzIDAwMDAwIG4NCjAwMDAzNzIwOTEgMDAwMDAgbg0KMDAwMDM3MjIzNCAwMDAwMCBuDQow MDAwMzcyMjg3IDAwMDAwIG4NCjAwMDAzNzIzMzcgMDAwMDAgbg0KMDAwMDM3MjQwNSAwMDAwMCBu DQowMDAwMzcyNTQ4IDAwMDAwIG4NCjAwMDAzNzI2MDEgMDAwMDAgbg0KMDAwMDM3MjY1MSAwMDAw MCBuDQowMDAwMzcyNzE5IDAwMDAwIG4NCjAwMDAzNzI4NjIgMDAwMDAgbg0KMDAwMDM3MjkxNSAw MDAwMCBuDQowMDAwMzcyOTY1IDAwMDAwIG4NCjAwMDAzNzMwMzMgMDAwMDAgbg0KMDAwMDM3MzE3 NiAwMDAwMCBuDQowMDAwMzczMjI5IDAwMDAwIG4NCjAwMDAzNzMyNzkgMDAwMDAgbg0KMDAwMDM3 MzM4MCAwMDAwMCBuDQowMDAwMzczNTIxIDAwMDAwIG4NCjAwMDAzNzM1ODkgMDAwMDAgbg0KMDAw MDM3MzczMiAwMDAwMCBuDQowMDAwMzczNzg1IDAwMDAwIG4NCjAwMDAzNzM4MzUgMDAwMDAgbg0K MDAwMDM3MzkwMyAwMDAwMCBuDQowMDAwMzc0MDQ2IDAwMDAwIG4NCjAwMDAzNzQwOTkgMDAwMDAg bg0KMDAwMDM3NDE0OSAwMDAwMCBuDQowMDAwMzc0MjE3IDAwMDAwIG4NCjAwMDAzNzQzNjAgMDAw MDAgbg0KMDAwMDM3NDQxMyAwMDAwMCBuDQowMDAwMzc0NDYzIDAwMDAwIG4NCjAwMDAzNzQ1MzEg MDAwMDAgbg0KMDAwMDM3NDY3NCAwMDAwMCBuDQowMDAwMzc0NzI3IDAwMDAwIG4NCjAwMDAzNzQ3 NzcgMDAwMDAgbg0KMDAwMDM3NDg0NSAwMDAwMCBuDQowMDAwMzc0OTg4IDAwMDAwIG4NCjAwMDAz NzUwNDEgMDAwMDAgbg0KMDAwMDM3NTA5MSAwMDAwMCBuDQowMDAwMzc1MTU5IDAwMDAwIG4NCjAw MDAzNzUzMDIgMDAwMDAgbg0KMDAwMDM3NTM1NSAwMDAwMCBuDQowMDAwMzc1NDA1IDAwMDAwIG4N CjAwMDAzNzU0NzMgMDAwMDAgbg0KMDAwMDM3NTYxNiAwMDAwMCBuDQowMDAwMzc1NjY5IDAwMDAw IG4NCjAwMDAzNzU3MTkgMDAwMDAgbg0KMDAwMDM3NTc4NyAwMDAwMCBuDQowMDAwMzc1OTMwIDAw MDAwIG4NCjAwMDAzNzU5ODMgMDAwMDAgbg0KMDAwMDM3NjAzMyAwMDAwMCBuDQowMDAwMzc2MTAx IDAwMDAwIG4NCjAwMDAzNzYyNDQgMDAwMDAgbg0KMDAwMDM3NjI5NyAwMDAwMCBuDQowMDAwMzc2 MzQ3IDAwMDAwIG4NCjAwMDAzNzY0MTUgMDAwMDAgbg0KMDAwMDM3NjU1OCAwMDAwMCBuDQowMDAw Mzc2NjExIDAwMDAwIG4NCjAwMDAzNzY2NjEgMDAwMDAgbg0KMDAwMDM3NjcyOSAwMDAwMCBuDQow MDAwMzc2ODcyIDAwMDAwIG4NCjAwMDAzNzY5MjUgMDAwMDAgbg0KMDAwMDM3Njk3NSAwMDAwMCBu DQowMDAwMzc3MDQzIDAwMDAwIG4NCjAwMDAzNzcxODQgMDAwMDAgbg0KMDAwMDM3NzMyNiAwMDAw MCBuDQowMDAwMzc3NDY4IDAwMDAwIG4NCjAwMDAzNzc2MTAgMDAwMDAgbg0KMDAwMDM3Nzc1MiAw MDAwMCBuDQowMDAwMzc3ODk0IDAwMDAwIG4NCjAwMDAzNzgwMzggMDAwMDAgbg0KMDAwMDM3ODE4 MCAwMDAwMCBuDQowMDAwMzc4MzIyIDAwMDAwIG4NCjAwMDAzNzg0NjQgMDAwMDAgbg0KMDAwMDM3 ODU1NCAwMDAwMCBuDQowMDAwMzc4Njk2IDAwMDAwIG4NCjAwMDAzNzg3NzQgMDAwMDAgbg0KMDAw MDM3ODg1MiAwMDAwMCBuDQowMDAwMzc4OTk1IDAwMDAwIG4NCjAwMDAzNzkxMzggMDAwMDAgbg0K MDAwMDM3OTI4MCAwMDAwMCBuDQowMDAwMzc5NDIyIDAwMDAwIG4NCjAwMDAzNzk1NjQgMDAwMDAg bg0KMDAwMDM3OTcwNiAwMDAwMCBuDQowMDAwMzc5ODQ4IDAwMDAwIG4NCjAwMDAzNzk5OTAgMDAw MDAgbg0KMDAwMDM4MDEzMiAwMDAwMCBuDQowMDAwMzgwMjc0IDAwMDAwIG4NCjAwMDAzODA0MTYg MDAwMDAgbg0KMDAwMDM4MDU1OCAwMDAwMCBuDQowMDAwMzgwNzAwIDAwMDAwIG4NCjAwMDAzODA4 NDIgMDAwMDAgbg0KMDAwMDM4MDk4NCAwMDAwMCBuDQowMDAwMzgxMTI2IDAwMDAwIG4NCjAwMDAz ODEyNjggMDAwMDAgbg0KMDAwMDM4MTQxMCAwMDAwMCBuDQowMDAwMzgxNTUyIDAwMDAwIG4NCjAw MDAzODE2OTQgMDAwMDAgbg0KMDAwMDM4MTgzNiAwMDAwMCBuDQowMDAwMzgxOTc4IDAwMDAwIG4N CjAwMDAzODIxMjAgMDAwMDAgbg0KMDAwMDM4MjI2MiAwMDAwMCBuDQowMDAwMzgyNDA0IDAwMDAw IG4NCjAwMDAzODI1NDYgMDAwMDAgbg0KMDAwMDM4MjY4OCAwMDAwMCBuDQowMDAwMzgyODMwIDAw MDAwIG4NCjAwMDAzODI5NzIgMDAwMDAgbg0KMDAwMDM4MzExNCAwMDAwMCBuDQowMDAwMzgzMjU2 IDAwMDAwIG4NCjAwMDAzODMzOTggMDAwMDAgbg0KMDAwMDM4MzU0MCAwMDAwMCBuDQowMDAwMzgz NjgyIDAwMDAwIG4NCjAwMDAzODM4MjQgMDAwMDAgbg0KMDAwMDM4Mzk2NiAwMDAwMCBuDQowMDAw Mzg0MTA4IDAwMDAwIG4NCjAwMDAzODQyNTAgMDAwMDAgbg0KMDAwMDM4NDg3NiAwMDAwMCBuDQow MDAwMzg0OTc0IDAwMDAwIG4NCjAwMDAzODUwNzIgMDAwMDAgbg0KMDAwMDM4NTE0OSAwMDAwMCBu DQowMDAwMzg1MjI2IDAwMDAwIG4NCjAwMDAzODUzMDMgMDAwMDAgbg0KMDAwMDM4NTM4MCAwMDAw MCBuDQowMDAwMzg1NDU3IDAwMDAwIG4NCjAwMDAzODU1MzQgMDAwMDAgbg0KMDAwMDM4NTYxMSAw MDAwMCBuDQowMDAwMzg1Njg4IDAwMDAwIG4NCjAwMDAzODU3NjYgMDAwMDAgbg0KMDAwMDM4NTg0 NCAwMDAwMCBuDQowMDAwMzg1OTIyIDAwMDAwIG4NCjAwMDAzODYwMDAgMDAwMDAgbg0KMDAwMDM4 NjA3OCAwMDAwMCBuDQowMDAwMzg2MTU2IDAwMDAwIG4NCjAwMDAzODYyMzQgMDAwMDAgbg0KMDAw MDM4NjMxMSAwMDAwMCBuDQowMDAwMzg2Mzc4IDAwMDAwIG4NCjAwMDAzODY0NDUgMDAwMDAgbg0K MDAwMDM4NjUxMiAwMDAwMCBuDQowMDAwMzg2NTc5IDAwMDAwIG4NCjAwMDAzODY2NDYgMDAwMDAg bg0KMDAwMDM4NjcxMyAwMDAwMCBuDQowMDAwMzg2NzgwIDAwMDAwIG4NCjAwMDAzODY4NDcgMDAw MDAgbg0KMDAwMDM4NjkyNSAwMDAwMCBuDQowMDAwMzg3MDAzIDAwMDAwIG4NCjAwMDAzODcwODEg MDAwMDAgbg0KMDAwMDM4NzE1OSAwMDAwMCBuDQowMDAwMzg3MjM3IDAwMDAwIG4NCjAwMDAzODcz MTUgMDAwMDAgbg0KMDAwMDM4NzM3OCAwMDAwMCBuDQowMDAwMzg3NDMxIDAwMDAwIG4NCjAwMDAz ODc1MzcgMDAwMDAgbg0KMDAwMDM4NzYxNCAwMDAwMCBuDQowMDAwMzg3NjkxIDAwMDAwIG4NCjAw MDAzODc3ODkgMDAwMDAgbg0KMDAwMDM4Nzg2NiAwMDAwMCBuDQowMDAwMzg3OTQzIDAwMDAwIG4N CjAwMDAzODgwMjAgMDAwMDAgbg0KMDAwMDM4ODA5NyAwMDAwMCBuDQowMDAwMzg4MTc0IDAwMDAw IG4NCjAwMDAzODgyNzIgMDAwMDAgbg0KMDAwMDM4ODUwMyAwMDAwMCBuDQowMDAwMzg4NjAyIDAw MDAwIG4NCjAwMDAzODg2NTQgMDAwMDAgbg0KMDAwMDM4ODcwNiAwMDAwMCBuDQowMDAwMzg4NzY3 IDAwMDAwIG4NCjAwMDAzODg4MTkgMDAwMDAgbg0KMDAwMDM4ODg5NiAwMDAwMCBuDQowMDAwMzg5 MDE1IDAwMDAwIG4NCjAwMDAzODkwOTMgMDAwMDAgbg0KMDAwMDM4OTIwNCAwMDAwMCBuDQowMDAw Mzg5MjgyIDAwMDAwIG4NCjAwMDAzODkzNjAgMDAwMDAgbg0KMDAwMDM4OTQzOCAwMDAwMCBuDQow MDAwMzg5NTE2IDAwMDAwIG4NCjAwMDAzODk1OTQgMDAwMDAgbg0KMDAwMDM4OTY3MiAwMDAwMCBu DQowMDAwMzg5NzUwIDAwMDAwIG4NCjAwMDAzODk4MjggMDAwMDAgbg0KMDAwMDM4OTkwNiAwMDAw MCBuDQowMDAwMzg5OTg0IDAwMDAwIG4NCjAwMDAzOTAwMzYgMDAwMDAgbg0KMDAwMDM5MDA4OCAw MDAwMCBuDQowMDAwMzkwMjYxIDAwMDAwIG4NCjAwMDAzOTA0NDIgMDAwMDAgbg0KMDAwMDM5MDQ5 NCAwMDAwMCBuDQowMDAwMzkwNTQ2IDAwMDAwIG4NCjAwMDAzOTA1OTggMDAwMDAgbg0KMDAwMDM5 MDY1MCAwMDAwMCBuDQowMDAwMzkwNzExIDAwMDAwIG4NCjAwMDAzOTA3ODkgMDAwMDAgbg0KMDAw MDM5MDg2NyAwMDAwMCBuDQowMDAwMzkxMDEwIDAwMDAwIG4NCjAwMDAzOTExNTMgMDAwMDAgbg0K MDAwMDM5MTIxNiAwMDAwMCBuDQowMDAwMzkxMzU4IDAwMDAwIG4NCjAwMDAzOTE0NDggMDAwMDAg bg0KMDAwMDM5MTU5MCAwMDAwMCBuDQowMDAwMzkxNjY4IDAwMDAwIG4NCjAwMDAzOTE4MDkgMDAw MDAgbg0KMDAwMDM5MTg4NyAwMDAwMCBuDQowMDAwMzkyMDI4IDAwMDAwIG4NCjAwMDAzOTIxMDYg MDAwMDAgbg0KMDAwMDM5MjE4NCAwMDAwMCBuDQowMDAwMzkyMjYyIDAwMDAwIG4NCjAwMDAzOTIz NDAgMDAwMDAgbg0KMDAwMDM5MjQxOCAwMDAwMCBuDQowMDAwMzkyNDk2IDAwMDAwIG4NCjAwMDAz OTI1NzQgMDAwMDAgbg0KMDAwMDM5MjY1MiAwMDAwMCBuDQowMDAwMzkyNzMwIDAwMDAwIG4NCjAw MDAzOTI4MDggMDAwMDAgbg0KMDAwMDM5Mjg4NiAwMDAwMCBuDQowMDAwMzkyOTY0IDAwMDAwIG4N CjAwMDAzOTMwNDIgMDAwMDAgbg0KMDAwMDM5MzEyMCAwMDAwMCBuDQowMDAwMzkzMTk4IDAwMDAw IG4NCjAwMDAzOTMyNzYgMDAwMDAgbg0KMDAwMDM5MzM1NCAwMDAwMCBuDQowMDAwMzkzNDk2IDAw MDAwIG4NCjAwMDAzOTM2MzggMDAwMDAgbg0KMDAwMDM5Mzc4MCAwMDAwMCBuDQowMDAwMzkzOTIy IDAwMDAwIG4NCjAwMDAzOTQwNjUgMDAwMDAgbg0KMDAwMDM5NDIwNyAwMDAwMCBuDQowMDAwMzk0 MzQ5IDAwMDAwIG4NCjAwMDAzOTQ0OTIgMDAwMDAgbg0KMDAwMDM5NDYzNCAwMDAwMCBuDQowMDAw Mzk0Nzc2IDAwMDAwIG4NCjAwMDAzOTQ5MTkgMDAwMDAgbg0KMDAwMDM5NTA2MSAwMDAwMCBuDQow MDAwMzk1MjAzIDAwMDAwIG4NCjAwMDAzOTUzNDYgMDAwMDAgbg0KMDAwMDM5NTQ4OCAwMDAwMCBu DQowMDAwMzk1NjMwIDAwMDAwIG4NCjAwMDAzOTU3NzIgMDAwMDAgbg0KMDAwMDM5NTg1MCAwMDAw MCBuDQowMDAwMzk1OTI4IDAwMDAwIG4NCjAwMDAzOTYwMDYgMDAwMDAgbg0KMDAwMDM5NjA4NCAw MDAwMCBuDQowMDAwMzk2MTYyIDAwMDAwIG4NCjAwMDAzOTYyNDAgMDAwMDAgbg0KMDAwMDM5NjMx OCAwMDAwMCBuDQowMDAwMzk2Mzk2IDAwMDAwIG4NCjAwMDAzOTY0NzQgMDAwMDAgbg0KMDAwMDM5 NjU1MiAwMDAwMCBuDQowMDAwMzk2NjMwIDAwMDAwIG4NCjAwMDAzOTY3MDggMDAwMDAgbg0KMDAw MDM5Njc4NiAwMDAwMCBuDQowMDAwMzk2ODY0IDAwMDAwIG4NCjAwMDAzOTY5NDIgMDAwMDAgbg0K MDAwMDM5NzAyMCAwMDAwMCBuDQowMDAwMzk3MTYwIDAwMDAwIG4NCjAwMDAzOTczMDAgMDAwMDAg bg0KMDAwMDM5NzQ0MCAwMDAwMCBuDQowMDAwMzk3NTgxIDAwMDAwIG4NCjAwMDAzOTc3MjEgMDAw MDAgbg0KMDAwMDM5Nzg2MSAwMDAwMCBuDQowMDAwMzk4MDAyIDAwMDAwIG4NCjAwMDAzOTgxNDIg MDAwMDAgbg0KMDAwMDM5ODI4MiAwMDAwMCBuDQowMDAwMzk4NDIzIDAwMDAwIG4NCjAwMDAzOTg1 NjMgMDAwMDAgbg0KMDAwMDM5ODcwMyAwMDAwMCBuDQowMDAwMzk4ODQ0IDAwMDAwIG4NCjAwMDAz OTg5ODQgMDAwMDAgbg0KMDAwMDM5OTEyNCAwMDAwMCBuDQowMDAwMzk5MjY2IDAwMDAwIG4NCjAw MDAzOTkzNDQgMDAwMDAgbg0KMDAwMDM5OTQ4NyAwMDAwMCBuDQowMDAwMzk5NTY1IDAwMDAwIG4N CjAwMDAzOTk3MDggMDAwMDAgbg0KMDAwMDM5OTg1MCAwMDAwMCBuDQowMDAwMzk5OTkyIDAwMDAw IG4NCjAwMDA0MDAxMzQgMDAwMDAgbg0KMDAwMDQwMDI3NiAwMDAwMCBuDQowMDAwNDAwNDE4IDAw MDAwIG4NCjAwMDA0MDA1NjAgMDAwMDAgbg0KMDAwMDQwMDcwMiAwMDAwMCBuDQowMDAwNDAwODQ0 IDAwMDAwIG4NCjAwMDA0MDA5ODYgMDAwMDAgbg0KMDAwMDQwMTEyOCAwMDAwMCBuDQowMDAwNDAx MTk0IDAwMDAwIG4NCjAwMDA0MDEyNjAgMDAwMDAgbg0KMDAwMDQwMTMyNiAwMDAwMCBuDQowMDAw NDAxMzkyIDAwMDAwIG4NCjAwMDA0MDE0NTggMDAwMDAgbg0KMDAwMDQwMTUyNCAwMDAwMCBuDQow MDAwNDAxNTkwIDAwMDAwIG4NCjAwMDA0MDE2NTYgMDAwMDAgbg0KMDAwMDQwMTczMCAwMDAwMCBu DQowMDAwNDAxODczIDAwMDAwIG4NCjAwMDA0MDE5MjYgMDAwMDAgbg0KMDAwMDQwMTk3NiAwMDAw MCBuDQowMDAwNDAyMDc1IDAwMDAwIG4NCjAwMDA0MDIyMTYgMDAwMDAgbg0KMDAwMDQwMjI4NCAw MDAwMCBuDQowMDAwNDAyNDI3IDAwMDAwIG4NCjAwMDA0MDI0ODAgMDAwMDAgbg0KMDAwMDQwMjUz MCAwMDAwMCBuDQowMDAwNDAyNTk4IDAwMDAwIG4NCjAwMDA0MDI3NDEgMDAwMDAgbg0KMDAwMDQw Mjc5NCAwMDAwMCBuDQowMDAwNDAyODQ0IDAwMDAwIG4NCjAwMDA0MDI5MTIgMDAwMDAgbg0KMDAw MDQwMzA1NSAwMDAwMCBuDQowMDAwNDAzMTA4IDAwMDAwIG4NCjAwMDA0MDMxNTggMDAwMDAgbg0K MDAwMDQwMzIyNiAwMDAwMCBuDQowMDAwNDAzMzY5IDAwMDAwIG4NCjAwMDA0MDM0MjIgMDAwMDAg bg0KMDAwMDQwMzQ3MiAwMDAwMCBuDQowMDAwNDAzNTQwIDAwMDAwIG4NCjAwMDA0MDM2ODMgMDAw MDAgbg0KMDAwMDQwMzczNiAwMDAwMCBuDQowMDAwNDAzNzg2IDAwMDAwIG4NCjAwMDA0MDM4NTQg MDAwMDAgbg0KMDAwMDQwMzk5NyAwMDAwMCBuDQowMDAwNDA0MDUwIDAwMDAwIG4NCjAwMDA0MDQx MDAgMDAwMDAgbg0KMDAwMDQwNDE2OCAwMDAwMCBuDQowMDAwNDA0MzExIDAwMDAwIG4NCjAwMDA0 MDQzNjQgMDAwMDAgbg0KMDAwMDQwNDQxNCAwMDAwMCBuDQowMDAwNDA0NDgyIDAwMDAwIG4NCjAw MDA0MDQ2MjUgMDAwMDAgbg0KMDAwMDQwNDY3OCAwMDAwMCBuDQowMDAwNDA0NzI4IDAwMDAwIG4N CjAwMDA0MDQ3OTYgMDAwMDAgbg0KMDAwMDQwNDkzNiAwMDAwMCBuDQowMDAwNDA1MDAyIDAwMDAw IG4NCjAwMDA0MDUwNjggMDAwMDAgbg0KMDAwMDQwNTEzNCAwMDAwMCBuDQowMDAwNDA1MjAwIDAw MDAwIG4NCjAwMDA0MDUyNzEgMDAwMDAgbg0KMDAwMDQwNTM0MiAwMDAwMCBuDQowMDAwNDA1NDA4 IDAwMDAwIG4NCjAwMDA0MDU0NzQgMDAwMDAgbg0KMDAwMDQwNTU0MCAwMDAwMCBuDQowMDAwNDA1 NjA2IDAwMDAwIG4NCjAwMDA0MDU3NTEgMDAwMDAgbg0KMDAwMDQwNTgwNCAwMDAwMCBuDQowMDAw NDA1ODU0IDAwMDAwIG4NCjAwMDA0MDU5MjIgMDAwMDAgbg0KMDAwMDQwNjA2NyAwMDAwMCBuDQow MDAwNDA2MTIwIDAwMDAwIG4NCjAwMDA0MDYxNzAgMDAwMDAgbg0KMDAwMDQwNjIzOCAwMDAwMCBu DQowMDAwNDA2MzgzIDAwMDAwIG4NCjAwMDA0MDY0MzYgMDAwMDAgbg0KMDAwMDQwNjQ4NiAwMDAw MCBuDQowMDAwNDA2NTU0IDAwMDAwIG4NCjAwMDA0MDY2OTkgMDAwMDAgbg0KMDAwMDQwNjc1MiAw MDAwMCBuDQowMDAwNDA2ODAyIDAwMDAwIG4NCjAwMDA0MDY4NzAgMDAwMDAgbg0KMDAwMDQwNzAx NSAwMDAwMCBuDQowMDAwNDA3MDY4IDAwMDAwIG4NCjAwMDA0MDcxMTggMDAwMDAgbg0KMDAwMDQw NzE4NiAwMDAwMCBuDQowMDAwNDA3MzI5IDAwMDAwIG4NCjAwMDA0MDczODEgMDAwMDAgbg0KMDAw MDQwNzQzMSAwMDAwMCBuDQowMDAwNDA3NDk5IDAwMDAwIG4NCjAwMDA0MDc2NDIgMDAwMDAgbg0K MDAwMDQwNzY5NCAwMDAwMCBuDQowMDAwNDA3NzQ0IDAwMDAwIG4NCjAwMDA0MDc4MTEgMDAwMDAg bg0KMDAwMDQwNzk1NCAwMDAwMCBuDQowMDAwNDA4MDA2IDAwMDAwIG4NCjAwMDA0MDgwNTYgMDAw MDAgbg0KMDAwMDQwODEyMyAwMDAwMCBuDQowMDAwNDA4MjY2IDAwMDAwIG4NCjAwMDA0MDgzMTgg MDAwMDAgbg0KMDAwMDQwODM2OCAwMDAwMCBuDQowMDAwNDA4NDM1IDAwMDAwIG4NCjAwMDA0MDg1 NzggMDAwMDAgbg0KMDAwMDQwODYzMCAwMDAwMCBuDQowMDAwNDA4NjgwIDAwMDAwIG4NCjAwMDA0 MDg3NDcgMDAwMDAgbg0KMDAwMDQwODg4NyAwMDAwMCBuDQowMDAwNDA4OTc3IDAwMDAwIG4NCjAw MDA0MDkxMTkgMDAwMDAgbg0KMDAwMDQwOTE5NyAwMDAwMCBuDQowMDAwNDA5Mjc1IDAwMDAwIG4N CjAwMDA0MDk0MTggMDAwMDAgbg0KMDAwMDQwOTU2MSAwMDAwMCBuDQowMDAwNDA5NjM5IDAwMDAw IG4NCjAwMDA0MDk3ODIgMDAwMDAgbg0KMDAwMDQwOTg2MCAwMDAwMCBuDQowMDAwNDEwMDAzIDAw MDAwIG4NCjAwMDA0MTAxNDMgMDAwMDAgbg0KMDAwMDQxMDIxNCAwMDAwMCBuDQowMDAwNDEwMjgw IDAwMDAwIG4NCjAwMDA0MTAzNDYgMDAwMDAgbg0KMDAwMDQxMDQxMiAwMDAwMCBuDQowMDAwNDEw NDc4IDAwMDAwIG4NCjAwMDA0MTA1NDQgMDAwMDAgbg0KMDAwMDQxMDYxMCAwMDAwMCBuDQowMDAw NDEwNjc2IDAwMDAwIG4NCjAwMDA0MTA3NDIgMDAwMDAgbg0KMDAwMDQxMDgwOCAwMDAwMCBuDQow MDAwNDEwODc0IDAwMDAwIG4NCjAwMDA0MTA5NDggMDAwMDAgbg0KMDAwMDQxMTAxNCAwMDAwMCBu DQowMDAwNDExMDgwIDAwMDAwIG4NCjAwMDA0MTExNDYgMDAwMDAgbg0KMDAwMDQxMTIxMiAwMDAw MCBuDQowMDAwNDExMjc4IDAwMDAwIG4NCjAwMDA0MTEzNDQgMDAwMDAgbg0KMDAwMDQxMTQxMCAw MDAwMCBuDQowMDAwNDExNDc2IDAwMDAwIG4NCjAwMDA0MTE1NDIgMDAwMDAgbg0KMDAwMDQxMTYw OCAwMDAwMCBuDQowMDAwNDExNjc0IDAwMDAwIG4NCjAwMDA0MTE3NDAgMDAwMDAgbg0KMDAwMDQx MTg4MyAwMDAwMCBuDQowMDAwNDExOTM2IDAwMDAwIG4NCjAwMDA0MTE5ODYgMDAwMDAgbg0KMDAw MDQxMjA1NCAwMDAwMCBuDQowMDAwNDEyMTk3IDAwMDAwIG4NCjAwMDA0MTIyNTAgMDAwMDAgbg0K MDAwMDQxMjMwMCAwMDAwMCBuDQowMDAwNDEyMzY4IDAwMDAwIG4NCjAwMDA0MTI1MTEgMDAwMDAg bg0KMDAwMDQxMjU2NCAwMDAwMCBuDQowMDAwNDEyNjE0IDAwMDAwIG4NCjAwMDA0MTI2ODIgMDAw MDAgbg0KMDAwMDQxMjgyNSAwMDAwMCBuDQowMDAwNDEyODc4IDAwMDAwIG4NCjAwMDA0MTI5Mjgg MDAwMDAgbg0KMDAwMDQxMjk5NiAwMDAwMCBuDQowMDAwNDEzMTM5IDAwMDAwIG4NCjAwMDA0MTMx OTIgMDAwMDAgbg0KMDAwMDQxMzI0MiAwMDAwMCBuDQowMDAwNDEzMzEwIDAwMDAwIG4NCjAwMDA0 MTM0NTMgMDAwMDAgbg0KMDAwMDQxMzUwNiAwMDAwMCBuDQowMDAwNDEzNTU2IDAwMDAwIG4NCjAw MDA0MTM2MjQgMDAwMDAgbg0KMDAwMDQxMzc2NyAwMDAwMCBuDQowMDAwNDEzODIwIDAwMDAwIG4N CjAwMDA0MTM4NzAgMDAwMDAgbg0KMDAwMDQxMzkzOCAwMDAwMCBuDQowMDAwNDE0MDgxIDAwMDAw IG4NCjAwMDA0MTQxMzQgMDAwMDAgbg0KMDAwMDQxNDE4NCAwMDAwMCBuDQowMDAwNDE0MjUyIDAw MDAwIG4NCjAwMDA0MTQzOTUgMDAwMDAgbg0KMDAwMDQxNDQ0OCAwMDAwMCBuDQowMDAwNDE0NDk4 IDAwMDAwIG4NCjAwMDA0MTQ1NjYgMDAwMDAgbg0KMDAwMDQxNDcwOSAwMDAwMCBuDQowMDAwNDE0 NzYyIDAwMDAwIG4NCjAwMDA0MTQ4MTIgMDAwMDAgbg0KMDAwMDQxNDg4MCAwMDAwMCBuDQowMDAw NDE1MDIzIDAwMDAwIG4NCjAwMDA0MTUwNzYgMDAwMDAgbg0KMDAwMDQxNTEyNiAwMDAwMCBuDQow MDAwNDE1MTk0IDAwMDAwIG4NCjAwMDA0MTUzMzcgMDAwMDAgbg0KMDAwMDQxNTM5MCAwMDAwMCBu DQowMDAwNDE1NDQwIDAwMDAwIG4NCjAwMDA0MTU1MDggMDAwMDAgbg0KMDAwMDQxNTY1MSAwMDAw MCBuDQowMDAwNDE1NzA0IDAwMDAwIG4NCjAwMDA0MTU3NTQgMDAwMDAgbg0KMDAwMDQxNTg1MyAw MDAwMCBuDQowMDAwNDE1OTk0IDAwMDAwIG4NCjAwMDA0MTYwNjIgMDAwMDAgbg0KMDAwMDQxNjIw NSAwMDAwMCBuDQowMDAwNDE2MjU4IDAwMDAwIG4NCjAwMDA0MTYzMDggMDAwMDAgbg0KMDAwMDQx NjM3NiAwMDAwMCBuDQowMDAwNDE2NTE5IDAwMDAwIG4NCjAwMDA0MTY1NzIgMDAwMDAgbg0KMDAw MDQxNjYyMiAwMDAwMCBuDQowMDAwNDE2NjkwIDAwMDAwIG4NCjAwMDA0MTY4MzMgMDAwMDAgbg0K MDAwMDQxNjg4NiAwMDAwMCBuDQowMDAwNDE2OTM2IDAwMDAwIG4NCjAwMDA0MTcwMDQgMDAwMDAg bg0KMDAwMDQxNzE0NyAwMDAwMCBuDQowMDAwNDE3MjAwIDAwMDAwIG4NCjAwMDA0MTcyNTAgMDAw MDAgbg0KMDAwMDQxNzMxOCAwMDAwMCBuDQowMDAwNDE3NDYxIDAwMDAwIG4NCjAwMDA0MTc1MTQg MDAwMDAgbg0KMDAwMDQxNzU2NCAwMDAwMCBuDQowMDAwNDE3NjMyIDAwMDAwIG4NCjAwMDA0MTc3 NzUgMDAwMDAgbg0KMDAwMDQxNzgyOCAwMDAwMCBuDQowMDAwNDE3ODc4IDAwMDAwIG4NCjAwMDA0 MTc5NDYgMDAwMDAgbg0KMDAwMDQxODA4OSAwMDAwMCBuDQowMDAwNDE4MTQyIDAwMDAwIG4NCjAw MDA0MTgxOTIgMDAwMDAgbg0KMDAwMDQxODI2MCAwMDAwMCBuDQowMDAwNDE4NDAzIDAwMDAwIG4N CjAwMDA0MTg0NTYgMDAwMDAgbg0KMDAwMDQxODUwNiAwMDAwMCBuDQowMDAwNDE4NTc0IDAwMDAw IG4NCjAwMDA0MTg3MTcgMDAwMDAgbg0KMDAwMDQxODc3MCAwMDAwMCBuDQowMDAwNDE4ODIwIDAw MDAwIG4NCjAwMDA0MTg4ODggMDAwMDAgbg0KMDAwMDQxOTAzMSAwMDAwMCBuDQowMDAwNDE5MDg0 IDAwMDAwIG4NCjAwMDA0MTkxMzQgMDAwMDAgbg0KMDAwMDQxOTIwMiAwMDAwMCBuDQowMDAwNDE5 MzQ1IDAwMDAwIG4NCjAwMDA0MTkzOTcgMDAwMDAgbg0KMDAwMDQxOTQ0NyAwMDAwMCBuDQowMDAw NDE5NTE1IDAwMDAwIG4NCjAwMDA0MTk2NTYgMDAwMDAgbg0KMDAwMDQxOTc5OCAwMDAwMCBuDQow MDAwNDE5OTQwIDAwMDAwIG4NCjAwMDA0MjAwODAgMDAwMDAgbg0KMDAwMDQyMDIyMCAwMDAwMCBu DQowMDAwNDIwMzYyIDAwMDAwIG4NCjAwMDA0MjA1MDYgMDAwMDAgbg0KMDAwMDQyMDY0OCAwMDAw MCBuDQowMDAwNDIwNzkwIDAwMDAwIG4NCjAwMDA0MjA4NjggMDAwMDAgbg0KMDAwMDQyMDk0NiAw MDAwMCBuDQowMDAwNDIxMDI1IDAwMDAwIG4NCjAwMDA0MjExMDQgMDAwMDAgbg0KMDAwMDQyMTE4 MyAwMDAwMCBuDQowMDAwNDIxMjYyIDAwMDAwIG4NCjAwMDA0MjEzNDEgMDAwMDAgbg0KMDAwMDQy MTQ4NCAwMDAwMCBuDQowMDAwNDIxNjI3IDAwMDAwIG4NCjAwMDA0MjE3NzAgMDAwMDAgbg0KMDAw MDQyMTkxMSAwMDAwMCBuDQowMDAwNDIyMDU0IDAwMDAwIG4NCjAwMDA0MjIxOTcgMDAwMDAgbg0K MDAwMDQyMjM0MCAwMDAwMCBuDQowMDAwNDIyNDMxIDAwMDAwIG4NCjAwMDA0MjI1NzQgMDAwMDAg bg0KMDAwMDQyMjY1MyAwMDAwMCBuDQowMDAwNDIyNzMyIDAwMDAwIG4NCjAwMDA0MjI4NzYgMDAw MDAgbg0KMDAwMDQyMzAyMCAwMDAwMCBuDQowMDAwNDIzMTYzIDAwMDAwIG4NCjAwMDA0MjMzMDYg MDAwMDAgbg0KMDAwMDQyMzQ0OSAwMDAwMCBuDQowMDAwNDIzNTkyIDAwMDAwIG4NCjAwMDA0MjM3 MzMgMDAwMDAgbg0KMDAwMDQyMzg3NCAwMDAwMCBuDQowMDAwNDI0MDE1IDAwMDAwIG4NCjAwMDA0 MjQxNTYgMDAwMDAgbg0KMDAwMDQyNDI5NyAwMDAwMCBuDQowMDAwNDI0NDM4IDAwMDAwIG4NCjAw MDA0MjQ1NzkgMDAwMDAgbg0KMDAwMDQyNDcyMCAwMDAwMCBuDQowMDAwNDI0ODYxIDAwMDAwIG4N CjAwMDA0MjUwMDIgMDAwMDAgbg0KMDAwMDQyNTE0MyAwMDAwMCBuDQowMDAwNDI1Mjg2IDAwMDAw IG4NCjAwMDA0MjU0MjkgMDAwMDAgbg0KMDAwMDQyNTU3MCAwMDAwMCBuDQowMDAwNDI1NzEzIDAw MDAwIG4NCjAwMDA0MjU4NTYgMDAwMDAgbg0KMDAwMDQyNTk5NyAwMDAwMCBuDQowMDAwNDI2MTM4 IDAwMDAwIG4NCjAwMDA0MjYyNzkgMDAwMDAgbg0KMDAwMDQyNjQyMCAwMDAwMCBuDQowMDAwNDI2 NTYxIDAwMDAwIG4NCjAwMDA0MjY3MDIgMDAwMDAgbg0KMDAwMDQyNjg0NSAwMDAwMCBuDQowMDAw NDI2OTg4IDAwMDAwIG4NCjAwMDA0MjcxMjkgMDAwMDAgbg0KMDAwMDQyNzI3MCAwMDAwMCBuDQow MDAwNDI3NDExIDAwMDAwIG4NCjAwMDA0Mjc1NTQgMDAwMDAgbg0KMDAwMDQyNzYyNyAwMDAwMCBu DQowMDAwNDI3NjgxIDAwMDAwIG4NCjAwMDA0Mjc3NDUgMDAwMDAgbg0KMDAwMDQyNzc5OSAwMDAw MCBuDQowMDAwNDI3ODcyIDAwMDAwIG4NCjAwMDA0Mjc5NDMgMDAwMDAgbg0KMDAwMDQyODAxNCAw MDAwMCBuDQowMDAwNDI4MDg1IDAwMDAwIG4NCjAwMDA0MjgyMjcgMDAwMDAgbg0KMDAwMDQyODM2 OSAwMDAwMCBuDQowMDAwNDI4NTExIDAwMDAwIG4NCjAwMDA0Mjg2OTcgMDAwMDAgbg0KMDAwMDQy ODg0MiAwMDAwMCBuDQowMDAwNDI4OTEyIDAwMDAwIG4NCjAwMDA0Mjg5ODIgMDAwMDAgbg0KMDAw MDQyOTEyMyAwMDAwMCBuDQowMDAwNDI5MjY1IDAwMDAwIG4NCjAwMDA0MjkzMzUgMDAwMDAgbg0K MDAwMDQyOTQ3OCAwMDAwMCBuDQowMDAwNDI5NjIxIDAwMDAwIG4NCjAwMDA0Mjk3OTYgMDAwMDAg bg0KMDAwMDQyOTg3MyAwMDAwMCBuDQowMDAwNDI5OTM3IDAwMDAwIG4NCjAwMDA0MzAwODAgMDAw MDAgbg0KMDAwMDQzMDE5NCAwMDAwMCBuDQowMDAwNDMwMjcwIDAwMDAwIG4NCjAwMDA0MzAzNzUg MDAwMDAgbg0KMDAwMDQzMzk1NSAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDEwNzk+Pg0Kc3Rh cnR4cmVmDQoxMTYNCiUlRU9GDQo= ------=_NextPart_000_0FE4_01C9D04B.EF2AE460-- From sandeen@sandeen.net Fri May 8 23:41:52 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n494fqLI055934 for ; Fri, 8 May 2009 23:41:52 -0500 X-ASG-Debug-ID: 1241844115-394d02660000-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 012141D1F7DF for ; Fri, 8 May 2009 21:41:55 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id D2EkVb9RniOMpcjR for ; Fri, 08 May 2009 21:41:55 -0700 (PDT) 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 473A59CE5BB for ; Fri, 8 May 2009 23:41:55 -0500 (CDT) Message-ID: <4A050993.1020208@sandeen.net> Date: Fri, 08 May 2009 23:41:55 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] xfstests: tidy up 205 Subject: [PATCH] xfstests: tidy up 205 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: 1241844117 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25290 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Test 205 wasn't marked executable, and had the wrong test number in the comments. Signed-off-by: Eric Sandeen --- diff --git a/205 b/205 old mode 100644 new mode 100755 index 2a0b94e..1604cb3 --- a/205 +++ b/205 @@ -1,5 +1,5 @@ #! /bin/sh -# FS QA Test No. 203 +# FS QA Test No. 205 # # Test out ENOSPC flushiung on small filesystems. # From sandeen@sandeen.net Fri May 8 23:48:17 2009 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,J_CHICKENPOX_31, J_CHICKENPOX_42,J_CHICKENPOX_43,J_CHICKENPOX_44,J_CHICKENPOX_45, J_CHICKENPOX_48,J_CHICKENPOX_52,J_CHICKENPOX_56,J_CHICKENPOX_62, J_CHICKENPOX_63,J_CHICKENPOX_66,J_CHICKENPOX_92 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n494mHbk056396 for ; Fri, 8 May 2009 23:48:17 -0500 X-ASG-Debug-ID: 1241844498-396802860000-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 BBE141D1F7FC for ; Fri, 8 May 2009 21:48:18 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id aYRAeUVozTJDknas for ; Fri, 08 May 2009 21:48:18 -0700 (PDT) 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 CE22296D068 for ; Fri, 8 May 2009 23:48:17 -0500 (CDT) Message-ID: <4A050B11.5010403@sandeen.net> Date: Fri, 08 May 2009 23:48:17 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH V2] xfstests: add aio-dio-test suite Subject: [PATCH V2] xfstests: add aio-dio-test suite 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: 1241844498 X-Barracuda-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.25290 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Pull in the aio-dio-regress test suite from http://git.kernel.org/?p=linux/kernel/git/zab/aio-dio-regress.git Changed from last time to break out into individual tests, and move it under src/aio-dio-regress Also flagged a few as part of the "quick" group. Signed-off-by: Eric Sandeen --- diff --git a/.gitignore b/.gitignore index 2cd722b..d7cbab1 100644 --- a/.gitignore +++ b/.gitignore @@ -88,3 +88,9 @@ src/unwritten_sync src/usemem src/writemod src/xfsctl +src/aio-dio-regress/aio-dio-extend-stat +src/aio-dio-regress/aio-dio-invalidate-failure +src/aio-dio-regress/aio-dio-invalidate-readahead +src/aio-dio-regress/aio-dio-subblock-eof-read +src/aio-dio-regress/aio-free-ring-with-bogus-nr-pages +src/aio-dio-regress/aio-io-setup-with-nonwritable-context-pointer diff --git a/206 b/206 new file mode 100755 index 0000000..9cb4bf8 --- /dev/null +++ b/206 @@ -0,0 +1,44 @@ +#! /bin/sh +# FS QA Test No. 206 +# +# Run the aio-dio-regress testsuite +# +#----------------------------------------------------------------------- +# Copyright (c) 2009 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 + +# real QA test starts here + +_supported_fs xfs udf nfs +_supported_os Linux + +AIO_TEST=aio-dio-extend-stat + +rm -f $TEST_DIR/aio-testfile +echo "==${AIO_TEST}==" +src/aio-dio-regress/$AIO_TEST $TEST_DIR/aio-testfile 2>&1 +status=$? +rm -f $TEST_DIR/aio-testfile + +exit diff --git a/206.out b/206.out new file mode 100644 index 0000000..d9d87cc --- /dev/null +++ b/206.out @@ -0,0 +1,3 @@ +QA output created by 206 +==aio-dio-extend-stat== +4000 iterations of racing extensions and collection passed diff --git a/207 b/207 new file mode 100755 index 0000000..3d7e823 --- /dev/null +++ b/207 @@ -0,0 +1,44 @@ +#! /bin/sh +# FS QA Test No. 207 +# +# Run the aio-dio-regress testsuite +# +#----------------------------------------------------------------------- +# Copyright (c) 2009 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 + +# real QA test starts here + +_supported_fs xfs udf nfs +_supported_os Linux + +AIO_TEST=aio-dio-invalidate-failure + +rm -f $TEST_DIR/aio-testfile +echo "==${AIO_TEST}==" +src/aio-dio-regress/$AIO_TEST $TEST_DIR/aio-testfile 2>&1 +status=$? +rm -f $TEST_DIR/aio-testfile + +exit diff --git a/207.out b/207.out new file mode 100644 index 0000000..189b070 --- /dev/null +++ b/207.out @@ -0,0 +1,3 @@ +QA output created by 207 +==aio-dio-invalidate-failure== +ran for 200 seconds without error, passing diff --git a/208 b/208 new file mode 100755 index 0000000..8d117d7 --- /dev/null +++ b/208 @@ -0,0 +1,44 @@ +#! /bin/sh +# FS QA Test No. 208 +# +# Run the aio-dio-regress testsuite +# +#----------------------------------------------------------------------- +# Copyright (c) 2009 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 + +# real QA test starts here + +_supported_fs xfs udf nfs +_supported_os Linux + +AIO_TEST=aio-dio-invalidate-readahead + +rm -f $TEST_DIR/aio-testfile +echo "==${AIO_TEST}==" +src/aio-dio-regress/$AIO_TEST $TEST_DIR/aio-testfile 2>&1 +status=$? +rm -f $TEST_DIR/aio-testfile + +exit diff --git a/208.out b/208.out new file mode 100644 index 0000000..19db313 --- /dev/null +++ b/208.out @@ -0,0 +1,3 @@ +QA output created by 208 +==aio-dio-invalidate-readahead== +test ran for 30 seconds without error diff --git a/209 b/209 new file mode 100755 index 0000000..73185df --- /dev/null +++ b/209 @@ -0,0 +1,44 @@ +#! /bin/sh +# FS QA Test No. 209 +# +# Run the aio-dio-regress testsuite +# +#----------------------------------------------------------------------- +# Copyright (c) 2009 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 + +# real QA test starts here + +_supported_fs xfs udf nfs +_supported_os Linux + +AIO_TEST=aio-dio-subblock-eof-read + +rm -f $TEST_DIR/aio-testfile +echo "==${AIO_TEST}==" +src/aio-dio-regress/$AIO_TEST $TEST_DIR/aio-testfile 2>&1 +status=$? +rm -f $TEST_DIR/aio-testfile + +exit diff --git a/209.out b/209.out new file mode 100644 index 0000000..72348d6 --- /dev/null +++ b/209.out @@ -0,0 +1,3 @@ +QA output created by 209 +==aio-dio-subblock-eof-read== +AIO read of last block in file succeeded. diff --git a/210 b/210 new file mode 100755 index 0000000..f82e90f --- /dev/null +++ b/210 @@ -0,0 +1,44 @@ +#! /bin/sh +# FS QA Test No. 210 +# +# Run the aio-dio-regress testsuite +# +#----------------------------------------------------------------------- +# Copyright (c) 2009 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 + +# real QA test starts here + +_supported_fs xfs udf nfs +_supported_os Linux + +AIO_TEST=aio-free-ring-with-bogus-nr-pages.c + +rm -f $TEST_DIR/aio-testfile +echo "==${AIO_TEST}==" +src/aio-dio-regress/$AIO_TEST $TEST_DIR/aio-testfile 2>&1 +status=$? +rm -f $TEST_DIR/aio-testfile + +exit diff --git a/210.out b/210.out new file mode 100644 index 0000000..163b156 --- /dev/null +++ b/210.out @@ -0,0 +1,3 @@ +QA output created by 210 +==aio-free-ring-with-bogus-nr-pages== +aio-free-ring-with-bogus-nr-pages: Success! diff --git a/211 b/211 new file mode 100755 index 0000000..8b1a47e --- /dev/null +++ b/211 @@ -0,0 +1,44 @@ +#! /bin/sh +# FS QA Test No. 211 +# +# Run the aio-dio-regress testsuite +# +#----------------------------------------------------------------------- +# Copyright (c) 2009 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 + +# real QA test starts here + +_supported_fs xfs udf nfs +_supported_os Linux + +AIO_TEST=aio-io-setup-with-nonwritable-context-pointer + +rm -f $TEST_DIR/aio-testfile +echo "==${AIO_TEST}==" +src/aio-dio-regress/$AIO_TEST $TEST_DIR/aio-testfile 2>&1 +status=$? +rm -f $TEST_DIR/aio-testfile + +exit diff --git a/211.out b/211.out new file mode 100644 index 0000000..ee16d01 --- /dev/null +++ b/211.out @@ -0,0 +1,3 @@ +QA output created by 211 +==aio-io-setup-with-nonwritable-context-pointer== +aio-io-setup-with-nonwritable-context-pointer: Success! diff --git a/group b/group index 0ac33c2..3c55996 100644 --- a/group +++ b/group @@ -310,3 +310,9 @@ atime 203 ioctl auto 204 metadata rw auto 205 metadata rw auto +206 auto aio quick +207 auto aio +208 auto aio +209 auto aio quick +210 auto aio quick +211 auto aio quick diff --git a/src/Makefile b/src/Makefile index 634e1b3..6e68b79 100644 --- a/src/Makefile +++ b/src/Makefile @@ -35,10 +35,14 @@ ifeq ($(PKG_PLATFORM),linux) TARGETS += t_immutable endif +ifeq ($(HAVE_AIO), true) +SUBDIRS += aio-dio-regress +endif + CFILES = $(TARGETS:=.c) LDIRT = $(TARGETS) -default: $(TARGETS) +default: $(TARGETS) $(SUBDIRS) include $(BUILDRULES) LINKTEST = $(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) diff --git a/src/aio-dio-regress/Makefile b/src/aio-dio-regress/Makefile new file mode 100644 index 0000000..9968093 --- /dev/null +++ b/src/aio-dio-regress/Makefile @@ -0,0 +1,20 @@ +TOPDIR = ../.. +include $(TOPDIR)/include/builddefs + +TARGETS = $(basename $(wildcard *.c)) + +CFILES = $(TARGETS:=.c) +LDIRT = $(TARGETS) + +LIBAIO = -laio -lpthread + +default: $(TARGETS) + +include $(BUILDRULES) + +$(TARGETS): %: %.c + $(CC) -g -Wall $(LIBAIO) -o $@ $*.c + +install: + $(INSTALL) -m 755 -d $(PKG_LIB_DIR)/src/aio-dio-regress + $(INSTALL) -m 755 $(TARGETS) $(PKG_LIB_DIR)/src/aio-dio-regress diff --git a/src/aio-dio-regress/aio-dio-extend-stat.c b/src/aio-dio-regress/aio-dio-extend-stat.c new file mode 100644 index 0000000..bdc8299 --- /dev/null +++ b/src/aio-dio-regress/aio-dio-extend-stat.c @@ -0,0 +1,163 @@ +#define __USE_GNU +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef O_DIRECT +#define O_DIRECT 040000 /* direct disk access hint */ +#endif + + +/* + * This was originally submitted to + * http://bugzilla.kernel.org/show_bug.cgi?id=6831 by + * Rafal Wijata . It caught a race in dio aio completion + * that would call aio_complete() before the dio callers would update i_size. + * A stat after io_getevents() would not see the new file size. + * + * The bug was fixed in the fs/direct-io.c completion reworking that appeared + * in 2.6.20. This test should fail on 2.6.19. + */ + +#define BUFSIZE 1024 + +static unsigned char buf[BUFSIZE] __attribute((aligned (512))); + +/* + * this was arbitrarily chosen to take about two seconds on a dual athlon in a + * debugging kernel.. it trips up long before that. + */ +#define MAX_AIO_EVENTS 4000 + +#define fail(fmt , args...) do {\ + printf(fmt , ##args); \ + exit(1); \ +} while (0) + +void fun_write1(void* ptr); +void fun_writeN(void* ptr); +void fun_read(void* ptr); + +int handle = 0; +io_context_t ctxp; +struct iocb *iocbs[MAX_AIO_EVENTS]; +struct io_event ioevents[MAX_AIO_EVENTS]; + +volatile int submittedSize = 0; //synchronization + +int main(int argc, char **argv) +{ + pthread_t thread_read; + pthread_t thread_write; + int i; + int ret; + + if (argc != 2) + fail("only arg should be file name\n"); + + for (i = 0; i < BUFSIZE; ++i) + buf[i] = 'A' + (char)(i % ('Z'-'A'+1)); + + buf[BUFSIZE-1] = '\n'; + + handle = open(argv[1], O_CREAT | O_TRUNC | O_DIRECT | O_RDWR, 0600); + if (handle == -1) + fail("failed to open test file %s, errno: %d\n", + argv[1], errno); + + memset(&ctxp, 0, sizeof(ctxp)); + ret = io_setup(MAX_AIO_EVENTS, &ctxp); + if (ret) + fail("io_setup returned %d\n", ret); + + for (i = 0; i < MAX_AIO_EVENTS; ++i) { + + iocbs[i] = calloc(1, sizeof(struct iocb)); + if (iocbs[i] == NULL) + fail("failed to allocate an iocb\n"); + +/* iocbs[i]->data = i; */ + iocbs[i]->aio_fildes = handle; + iocbs[i]->aio_lio_opcode = IO_CMD_PWRITE; + iocbs[i]->aio_reqprio = 0; + iocbs[i]->u.c.buf = buf; + iocbs[i]->u.c.nbytes = BUFSIZE; + iocbs[i]->u.c.offset = BUFSIZE*i; + } + + pthread_create(&thread_read, NULL, (void*)&fun_read, NULL); + pthread_create(&thread_write, NULL, (void*)&fun_writeN, NULL); + + pthread_join(thread_read, NULL); + pthread_join(thread_write, NULL); + + io_destroy(ctxp); + close(handle); + + printf("%u iterations of racing extensions and collection passed\n", + MAX_AIO_EVENTS); + + return 0; +} + +void fun_read(void *ptr) +{ + long n = MAX_AIO_EVENTS; + struct stat filestat; + long long exSize; + long i; + long r; + + while (n > 0) { + r = io_getevents(ctxp, 1, MAX_AIO_EVENTS, ioevents, NULL); + if (r < 0) + fail("io_getevents returned %ld\n", r); + + n -= r; + for (i = 0; i < r; ++i) { + if (ioevents[i].obj->u.c.nbytes != BUFSIZE) + fail("error in block: expacted %d bytes, " + "receiced %ld\n", BUFSIZE, + ioevents[i].obj->u.c.nbytes); + + exSize = ioevents[i].obj->u.c.offset + + ioevents[i].obj->u.c.nbytes; + fstat(handle, &filestat); + if (filestat.st_size < exSize) + fail("write of %lu bytes @%llu finished, " + "expected filesize at least %llu, but " + "got %ld\n", ioevents[i].obj->u.c.nbytes, + ioevents[i].obj->u.c.offset, exSize, + filestat.st_size); + } + } +} + +void fun_writeN(void *ptr) +{ + int i; + int ret; + + for(i = 0; i < MAX_AIO_EVENTS; ++i) { + ret = io_submit(ctxp, 1, &(iocbs[i])); + if (ret != 1) + fail("io_subit returned %d instead of 1\n", ret); + } +} + +void fun_write1(void *ptr) +{ + int ret; + + ret = io_submit(ctxp, MAX_AIO_EVENTS, iocbs); + if (ret != MAX_AIO_EVENTS) + fail("io_subit returned %d instead of %u\n", ret, + MAX_AIO_EVENTS); +} diff --git a/src/aio-dio-regress/aio-dio-invalidate-failure.c b/src/aio-dio-regress/aio-dio-invalidate-failure.c new file mode 100644 index 0000000..7cc4a4b --- /dev/null +++ b/src/aio-dio-regress/aio-dio-invalidate-failure.c @@ -0,0 +1,155 @@ +#define _XOPEN_SOURCE 500 /* pwrite */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * DIO invalidates the read cache after it writes. At one point it tried to + * return EIO if this failed. When called from AIO, though, this EIO return + * would clobber EIOCBQUEUED and cause fs/aio.c and fs/direct-io.c to complete + * an iocb twice. This typically references freed memory from an interrupt + * handler and oopses. + * + * This test hits the race after at most two minutes on a single spindle. It + * spins performing large dio writes. It also spins racing buffered writes. + * It assumes it's on ext3 using ordered writes. The ordered write bhs can be + * pinned by jbd as a transaction commits. If invalidate_inode_pages2_range() + * hits pages backed by those buffers ->releasepage will fail and it'll try to + * return -EIO. + */ +#ifndef O_DIRECT +#define O_DIRECT 040000 /* direct disk access hint */ +#endif + +#define GINORMOUS (32 * 1024 * 1024) + + +/* This test never survived to 180 seconds on a single spindle */ +#define SECONDS 200 + +static unsigned char buf[GINORMOUS] __attribute((aligned (512))); + +#define fail(fmt , args...) do {\ + printf(fmt , ##args); \ + exit(1); \ +} while (0) + +void spin_dio(int fd) +{ + io_context_t ctx; + struct iocb iocb; + struct iocb *iocbs[1] = { &iocb }; + struct io_event event; + int ret; + + io_prep_pwrite(&iocb, fd, buf, GINORMOUS, 0); + + ret = io_queue_init(1, &ctx); + if (ret) + fail("io_queue_init returned %d", ret); + + while (1) { + ret = io_submit(ctx, 1, iocbs); + if (ret != 1) + fail("io_submit returned %d instead of 1", ret); + + ret = io_getevents(ctx, 1, 1, &event, NULL); + if (ret != 1) + fail("io_getevents returned %d instead of 1", ret); + + if (event.res == -EIO) { + printf("invalidation returned -EIO, OK\n"); + exit(0); + } + + if (event.res != GINORMOUS) + fail("event res %ld\n", event.res); + } +} + +void spin_buffered(int fd) +{ + int ret; + + while (1) { + ret = pwrite(fd, buf, GINORMOUS, 0); + if (ret != GINORMOUS) + fail("buffered write returned %d", ret); + } +} + +static void alarm_handler(int signum) +{ +} + +int main(int argc, char **argv) +{ + pid_t buffered_pid; + pid_t dio_pid; + pid_t pid; + int fd; + int fd2; + int status; + + if (argc != 2) + fail("only arg should be file name"); + + fd = open(argv[1], O_DIRECT|O_CREAT|O_RDWR, 0644); + if (fd < 0) + fail("open dio failed: %d\n", errno); + + fd2 = open(argv[1], O_RDWR, 0644); + if (fd < 0) + fail("open failed: %d\n", errno); + + buffered_pid = fork(); + if (buffered_pid < 0) + fail("fork failed: %d\n", errno); + + if (buffered_pid == 0) { + spin_buffered(fd2); + exit(0); + } + + dio_pid = fork(); + if (dio_pid < 0) { + kill(buffered_pid, SIGKILL); + fail("fork failed: %d\n", errno); + } + + if (dio_pid == 0) { + spin_dio(fd); + exit(0); + } + + signal(SIGALRM, alarm_handler); + alarm(SECONDS); + + pid = wait(&status); + if (pid < 0 && errno == EINTR) { + /* if we timed out then we're done */ + kill(buffered_pid, SIGKILL); + kill(dio_pid, SIGKILL); + printf("ran for %d seconds without error, passing\n", SECONDS); + exit(0); + } + + if (pid == dio_pid) + kill(buffered_pid, SIGKILL); + else + kill(dio_pid, SIGKILL); + + /* + * pass on the child's pass/fail return code or fail if the child + * didn't exit cleanly. + */ + exit(WIFEXITED(status) ? WEXITSTATUS(status) : 1); +} diff --git a/src/aio-dio-regress/aio-dio-invalidate-readahead.c b/src/aio-dio-regress/aio-dio-invalidate-readahead.c new file mode 100644 index 0000000..3d72b13 --- /dev/null +++ b/src/aio-dio-regress/aio-dio-invalidate-readahead.c @@ -0,0 +1,172 @@ +#define _XOPEN_SOURCE 500 /* pwrite */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * sync DIO invalidates the read cache after it finishes the write. This + * is to invalidate cached pages which might have been brought in during + * the write. + * + * In http://lkml.org/lkml/2007/10/26/478 a user reported this failing + * for his case of readers and writers racing. It turned out that his + * reader wasn't actually racing with the writer, but read-ahead from + * the reader pushed reads up into the region that the writer was working + * on. + * + * This test reproduces his case. We have a writing thread tell + * a reading thread how far into the file it will find new data. + * The reader reads behind the writer, checking for stale data. + * If the kernel fails to invalidate the read-ahead after the + * write then the reader will see stale data. + */ +#ifndef O_DIRECT +#define O_DIRECT 040000 /* direct disk access hint */ +#endif + +#define FILE_SIZE (8 * 1024 * 1024) + +/* this test always failed before 10 seconds on a single spindle */ +#define SECONDS 30 + +#define fail(fmt , args...) do {\ + printf(fmt , ##args); \ + exit(1); \ +} while (0) + +int page_size; + +pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; +pthread_cond_t cond = PTHREAD_COND_INITIALIZER; +loff_t write_pos = 0; +loff_t read_pos = 0; +unsigned char byte = 0; + +static void *writer(void *arg) +{ + char *path = arg; + loff_t off; + void *buf; + int ret; + int fd; + time_t start = time(NULL); + + buf = memalign(page_size, page_size); + if (buf == NULL) + fail("failed to allocate an aligned page"); + + fd = open(path, O_DIRECT|O_CREAT|O_RDWR|O_TRUNC, 0644); + if (fd < 0) + fail("dio open failed: %d\n", errno); + + while (1) { + if ((time(NULL) - start) > SECONDS) { + printf("test ran for %u seconds without error\n", + SECONDS); + exit(0); + } + + pthread_mutex_lock(&mut); + while (read_pos != write_pos) + pthread_cond_wait(&cond, &mut); + byte++; + write_pos = 0; + pthread_mutex_unlock(&mut); + + memset(buf, byte, page_size); + + for (off = 0; off < FILE_SIZE; off += page_size) { + + ret = pwrite(fd, buf, page_size, off); + if (ret != page_size) + fail("write returned %d", ret); + + if ((rand() % 4) == 0) { + pthread_mutex_lock(&mut); + write_pos = off; + pthread_cond_signal(&cond); + pthread_mutex_unlock(&mut); + }; + } + } +} + +static void *reader(void *arg) +{ + char *path = arg; + unsigned char old; + loff_t read_to = 0; + void *found; + int fd; + int ret; + void *buf; + loff_t off; + + setvbuf(stdout, NULL, _IONBF, 0); + + buf = memalign(page_size, page_size); + if (buf == NULL) + fail("failed to allocate an aligned page"); + + fd = open(path, O_CREAT|O_RDONLY, 0644); + if (fd < 0) + fail("buffered open failed: %d\n", errno); + + while (1) { + pthread_mutex_lock(&mut); + read_pos = read_to; + pthread_cond_signal(&cond); + while (read_pos == write_pos) + pthread_cond_wait(&cond, &mut); + read_to = write_pos; + off = read_pos; + old = byte - 1; + pthread_mutex_unlock(&mut); + + for (; off < read_to; off += page_size) { + + ret = pread(fd, buf, page_size, off); + if (ret != page_size) + fail("write returned %d", ret); + + found = memchr(buf, old, page_size); + if (found) + fail("reader found old byte at pos %lu", + (unsigned long)off + + (unsigned long)found - + (unsigned long)buf); + } + } +} + +int main(int argc, char **argv) +{ + pthread_t reader_thread; + pthread_t writer_thread; + int ret; + + page_size = getpagesize(); + + if (argc != 2) + fail("only arg should be file name"); + + ret = pthread_create(&writer_thread, NULL, writer, argv[1]); + if (ret == 0) + ret = pthread_create(&reader_thread, NULL, reader, argv[1]); + if (ret) + fail("failed to start reader and writer threads: %d", ret); + + pthread_join(writer_thread, NULL); + pthread_join(reader_thread, NULL); + exit(0); +} diff --git a/src/aio-dio-regress/aio-dio-subblock-eof-read.c b/src/aio-dio-regress/aio-dio-subblock-eof-read.c new file mode 100644 index 0000000..f92d361 --- /dev/null +++ b/src/aio-dio-regress/aio-dio-subblock-eof-read.c @@ -0,0 +1,95 @@ +/* + * Code taken from an example posted to linux-aio at kvack.org + * Original Author: Drangon Zhou + * Munged by Jeff Moyer. + * + * Description: This source code implements a test to ensure that an AIO + * read of the last block in a file opened with O_DIRECT returns the proper + * amount of data. In the past, there was a bug that resulted in a return + * value of the requested block size, when in fact there was only a fraction + * of that data available. Thus, if the last data block contained 300 bytes + * worth of data, and the user issued a 4k read, we want to ensure that + * the return value is 300, not 4k. + */ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include + +/* Create a file of a size that is not a multiple of block size */ +#define FILE_SIZE 300 + +#define fail(fmt , args...) \ +do { \ + printf(fmt , ##args); \ + exit(1); \ +} while (0) + +static unsigned char buffer[4096] __attribute((aligned (512))); + +int +main(int argc, char **argv) +{ + int ret; + int fd; + const char *filename; + struct iocb myiocb; + struct iocb *cb = &myiocb; + io_context_t ioctx; + struct io_event ie; + + if (argc != 2) + fail("only arg should be file name"); + + filename = argv[1]; + fd = open(filename, O_CREAT|O_RDWR|O_DIRECT, 0600); + if (fd < 0) + fail("open returned error %d\n", errno); + + ret = ftruncate(fd, FILE_SIZE); + if (ret < 0) + fail("truncate returned error %d\n", errno); + + /* <1> use normal disk read, this should be ok */ + ret = read(fd, buffer, 4096); + if (ret != FILE_SIZE) + fail("buffered read returned %d, should be 300\n", ret); + + /* <2> use AIO disk read, it sees error. */ + memset(&myiocb, 0, sizeof(myiocb)); + cb->data = 0; + cb->key = 0; + cb->aio_lio_opcode = IO_CMD_PREAD; + cb->aio_reqprio = 0; + cb->aio_fildes = fd; + cb->u.c.buf = buffer; + cb->u.c.nbytes = 4096; + cb->u.c.offset = 0; + + ret = io_queue_init(1, &ioctx); + if (ret != 0) + fail("io_queue_init returned error %d\n", ret); + + ret = io_submit(ioctx, 1, &cb); + if (ret != 1) + fail("io_submit returned error %d\n", ret); + + ret = io_getevents(ioctx, 1, 1, &ie, NULL); + if (ret != 1) + fail("io_getevents returned %d\n", ret); + + /* + * If all goes well, we should see 300 bytes read. If things + * are broken, we may very well see a result of 4k. + */ + if (ie.res != FILE_SIZE) + fail("AIO read of last block in file returned %d bytes, " + "expected %d\n", ret, FILE_SIZE); + + printf("AIO read of last block in file succeeded.\n"); + return 0; +} diff --git a/src/aio-dio-regress/aio-free-ring-with-bogus-nr-pages.c b/src/aio-dio-regress/aio-free-ring-with-bogus-nr-pages.c new file mode 100644 index 0000000..e91f344 --- /dev/null +++ b/src/aio-dio-regress/aio-free-ring-with-bogus-nr-pages.c @@ -0,0 +1,65 @@ +/* + * Code taken from an example posted to Red Hat bugzilla #220971 + * + * Original Author: Kostantin Khorenko from OpenVZ/Virtuozzo + * Munged by Jeff Moyer. + * + * Description: "aio_setup_ring() function initializes info->nr_pages + * variable incorrectly, then this variable can be used in error path + * to free the allocated resources. By this way an unprivileged user + * can crash the node." + * + * At the beginning of aio_setup_ring, info->nr_pages is initialized + * to the requested number of pages. However, it is supposed to + * indicate how many pages are mapped in info->ring_pages. Thus, if + * the call to do_mmap fails: + * + * info->mmap_base = do_mmap(NULL, 0, info->mmap_size, + * PROT_READ|PROT_WRITE, MAP_ANON|MAP_PRIVATE, + * 0); + * if (IS_ERR((void *)info->mmap_base)) { + * up_write(&ctx->mm->mmap_sem); + * printk("mmap err: %ld\n", -info->mmap_base); + * info->mmap_size = 0; + * aio_free_ring(ctx); <--------- + * return -EAGAIN; + * } + * + * we end up calling aio_free_ring with a bogus array and cause an oops. + * + * This is a destructive test. + */ +#include +#include +#include +#include +#include +#include + +int main(int __attribute__((unused)) argc, char **argv) +{ + long res; + io_context_t ctx; + void* map; + + while (1) { + map = mmap(NULL, 100, PROT_READ, MAP_ANONYMOUS|MAP_PRIVATE, + 0, 0); + if (map == MAP_FAILED) + break; + map = mmap(NULL, 100, PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, + 0, 0); + if (map == MAP_FAILED) + break; + } + + memset(&ctx, 0, sizeof(ctx)); + res = io_setup(10000, &ctx); + if (res != -ENOMEM) { + printf("%s: Error: io_setup returned %ld, expected -ENOMEM\n", + basename(argv[0]), res); + return 1; + } else + printf("%s: Success!\n", basename(argv[0])); + return 0; +} diff --git a/src/aio-dio-regress/aio-io-setup-with-nonwritable-context-pointer.c b/src/aio-dio-regress/aio-io-setup-with-nonwritable-context-pointer.c new file mode 100644 index 0000000..c0ba09f --- /dev/null +++ b/src/aio-dio-regress/aio-io-setup-with-nonwritable-context-pointer.c @@ -0,0 +1,31 @@ +/* + * Author: Jeff Moyer + * + * Description: Pass a non-writable context pointer to io_setup to see if + * the kernel deals with it correctly. In the past, the reference counting + * in this particular error path was off and this operation would cause an + * oops. + * + * This is a destructive test. + */ +#include +#include +#include +#include +#include + +int +main(int __attribute__((unused)) argc, char **argv) +{ + void *addr; + + addr = mmap(NULL, 4096, PROT_READ, MAP_SHARED|MAP_ANONYMOUS, 0, 0); + if (!addr) { + perror("mmap"); + exit(1); + } + io_setup(1, addr /* un-writable pointer */); + + printf("%s: Success!\n", basename(argv[0])); + return 0; +} From felixb@sgi.com Sat May 9 16:43:56 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n49LhtA7115062 for ; Sat, 9 May 2009 16:43:56 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6AC33AC002 for ; Sat, 9 May 2009 14:43:58 -0700 (PDT) Received: from [IPv6???1] (sshgate.corp.sgi.com [198.149.20.12]) by estes.americas.sgi.com (Postfix) with ESMTP id 004C47000103; Sat, 9 May 2009 16:43:57 -0500 (CDT) Cc: xfs-oss Message-Id: From: Felix Blyakher To: Eric Sandeen In-Reply-To: <4A050993.1020208@sandeen.net> Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v930.3) Subject: Re: [PATCH] xfstests: tidy up 205 Date: Sat, 9 May 2009 16:43:56 -0500 References: <4A050993.1020208@sandeen.net> X-Mailer: Apple Mail (2.930.3) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On May 8, 2009, at 11:41 PM, Eric Sandeen wrote: > Test 205 wasn't marked executable, and had the wrong test > number in the comments. > > Signed-off-by: Eric Sandeen Reviewed-by: Felix Blyakher > > --- > > diff --git a/205 b/205 > old mode 100644 > new mode 100755 > index 2a0b94e..1604cb3 > --- a/205 > +++ b/205 > @@ -1,5 +1,5 @@ > #! /bin/sh > -# FS QA Test No. 203 > +# FS QA Test No. 205 > # > # Test out ENOSPC flushiung on small filesystems. > # > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From sandeen@sandeen.net Sun May 10 11:25:21 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4AGPKf4190041 for ; Sun, 10 May 2009 11:25:21 -0500 X-ASG-Debug-ID: 1241972725-0cf6033c0000-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 3F86E27640B for ; Sun, 10 May 2009 09:25:25 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id x7MCQtuHn4CAvUGH for ; Sun, 10 May 2009 09:25:25 -0700 (PDT) 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 4D6CFAA60EE; Sun, 10 May 2009 11:25:24 -0500 (CDT) Message-ID: <4A06FFF3.2090103@sandeen.net> Date: Sun, 10 May 2009 11:25:23 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/5] xfs: remove ->write_super and stop maintaining ->s_dirt Subject: Re: [PATCH 1/5] xfs: remove ->write_super and stop maintaining ->s_dirt References: <20090426140305.113371000@bombadil.infradead.org> <20090426140707.533370000@bombadil.infradead.org> In-Reply-To: <20090426140707.533370000@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: 1241972726 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25432 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > the write_super method is used for > > (1) writing back the superblock periodically from pdflush > (2) called just before ->sync_fs for data integerity syncs > (3) just before ->put_super > > We don't need (1) because we have our own peridoc writeout through xfssyncd, > we don't need (2) because xfs_fs_sync_fs performs a proper synchronous > superblock writeout after all other data and metadata has been written out, > and we don't need (3) because we synchronously write the superblock in > ->put_super once the filesystem is fully shut down. > > Also remove ->s_dirt tracking as it's only used to decide when too call > ->write_super. > Just to double check, what about sync_filesystems(): if (sb->s_root && (wait || sb->s_dirt)) sb->s_op->sync_fs(sb, wait); if we lose s_dirt does that mean we are potentially doing one less ->sync_fs here when called with wait = 0, and is that ok? (/me waves hands about sync; sync; sync magic) :) -Eric From sandeen@sandeen.net Sun May 10 11:30:02 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4AGU2UT190460 for ; Sun, 10 May 2009 11:30:02 -0500 X-ASG-Debug-ID: 1241973006-3dc8009f0000-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 B5D4E1D21A03 for ; Sun, 10 May 2009 09:30:07 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id INobvu5PiyTx4xDv for ; Sun, 10 May 2009 09:30:07 -0700 (PDT) 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 6D298AA60EE; Sun, 10 May 2009 11:30:04 -0500 (CDT) Message-ID: <4A07010C.2080305@sandeen.net> Date: Sun, 10 May 2009 11:30:04 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/5] xfs: remove ->write_super and stop maintaining ->s_dirt Subject: Re: [PATCH 1/5] xfs: remove ->write_super and stop maintaining ->s_dirt References: <20090426140305.113371000@bombadil.infradead.org> <20090426140707.533370000@bombadil.infradead.org> <4A06FFF3.2090103@sandeen.net> In-Reply-To: <4A06FFF3.2090103@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: 1241973007 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25432 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Eric Sandeen wrote: > Christoph Hellwig wrote: > >> the write_super method is used for >> >> (1) writing back the superblock periodically from pdflush >> (2) called just before ->sync_fs for data integerity syncs >> (3) just before ->put_super >> >> We don't need (1) because we have our own peridoc writeout through xfssyncd, >> we don't need (2) because xfs_fs_sync_fs performs a proper synchronous >> superblock writeout after all other data and metadata has been written out, >> and we don't need (3) because we synchronously write the superblock in >> ->put_super once the filesystem is fully shut down. >> >> Also remove ->s_dirt tracking as it's only used to decide when too call >> ->write_super. >> > Just to double check, what about sync_filesystems(): > > if (sb->s_root && (wait || sb->s_dirt)) > sb->s_op->sync_fs(sb, wait); > > if we lose s_dirt does that mean we are potentially doing one less ->sync_fs > here when called with wait = 0, and is that ok? (/me waves hands about > sync; sync; sync magic) :) > > -Eric gah, never mind, I forgot that 0/5 talked about Jan's patches, and here: http://lkml.indiana.edu/hypermail/linux/kernel/0904.2/03642.html takes care of this concern. -Eric From sandeen@sandeen.net Sun May 10 12:37:36 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4AHbZgS193940 for ; Sun, 10 May 2009 12:37:36 -0500 X-ASG-Debug-ID: 1241977060-62a0017b0000-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 2BA3F1D219DE for ; Sun, 10 May 2009 10:37:40 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 3nXITQaGZxhBD2Sr for ; Sun, 10 May 2009 10:37:40 -0700 (PDT) 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 9136CA9B0B3; Sun, 10 May 2009 12:37:40 -0500 (CDT) Message-ID: <4A0710E3.3050102@sandeen.net> Date: Sun, 10 May 2009 12:37:39 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/5] xfs: remove ->write_super and stop maintaining ->s_dirt Subject: Re: [PATCH 1/5] xfs: remove ->write_super and stop maintaining ->s_dirt References: <20090426140305.113371000@bombadil.infradead.org> <20090426140707.533370000@bombadil.infradead.org> In-Reply-To: <20090426140707.533370000@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: 1241977061 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25436 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > the write_super method is used for > > (1) writing back the superblock periodically from pdflush > (2) called just before ->sync_fs for data integerity syncs > (3) just before ->put_super > > We don't need (1) because we have our own peridoc writeout through xfssyncd, > we don't need (2) because xfs_fs_sync_fs performs a proper synchronous > superblock writeout after all other data and metadata has been written out, > and we don't need (3) because we synchronously write the superblock in > ->put_super once the filesystem is fully shut down. > > Also remove ->s_dirt tracking as it's only used to decide when too call > ->write_super. > > > Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen From sandeen@sandeen.net Sun May 10 12:51:19 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4AHpID4194700 for ; Sun, 10 May 2009 12:51:19 -0500 X-ASG-Debug-ID: 1241977883-1d1e02690000-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 642822765D1 for ; Sun, 10 May 2009 10:51:23 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id Gze0bEbrlF02mdG3 for ; Sun, 10 May 2009 10:51:23 -0700 (PDT) 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 2C7BEA9B0D5; Sun, 10 May 2009 12:51:23 -0500 (CDT) Message-ID: <4A07141A.5060303@sandeen.net> Date: Sun, 10 May 2009 12:51:22 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/5] xfs: cleanup ->sync_fs Subject: Re: [PATCH 2/5] xfs: cleanup ->sync_fs References: <20090426140305.113371000@bombadil.infradead.org> <20090426140707.713299000@bombadil.infradead.org> In-Reply-To: <20090426140707.713299000@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: 1241977884 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25438 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Sort out ->sync_fs to not perform a superblock writeback for the wait = 0 case > as that is just an optional first pass and the superblock will be written back > properly in the next call with wait = 1. Instead perform an opportunistic > quota writeback to have less work later. Also remove the freeze special case > as we do a proper wait = 1 call in the freeze code anyway. > > Also rename the function to xfs_fs_sync_fs to match the normal naming > convention, update comments and avoid calling into the laptop_mode logic on > an error. > > Signed-off-by: Christoph Hellwig > > > Index: linux-2.6/fs/xfs/linux-2.6/xfs_super.c > =================================================================== > --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_super.c 2009-04-26 10:39:20.433949442 +0200 > +++ linux-2.6/fs/xfs/linux-2.6/xfs_super.c 2009-04-26 10:43:31.297949640 +0200 > @@ -1105,7 +1105,7 @@ xfs_fs_put_super( > } > > STATIC int > -xfs_fs_sync_super( > +xfs_fs_sync_fs( > struct super_block *sb, > int wait) > { > @@ -1113,23 +1113,23 @@ xfs_fs_sync_super( > int error; > > /* > - * Treat a sync operation like a freeze. This is to work > - * around a race in sync_inodes() which works in two phases > - * - an asynchronous flush, which can write out an inode > - * without waiting for file size updates to complete, and a > - * synchronous flush, which wont do anything because the > - * async flush removed the inode's dirty flag. Also > - * sync_inodes() will not see any files that just have > - * outstanding transactions to be flushed because we don't > - * dirty the Linux inode until after the transaction I/O > - * completes. > + * Not much we can do fort the first async pass. Writing out the ^ typo > + * superblock would be contra-productive as we are going to redirty ^ "counter-productive" is more common > + * when writing out other data and metadata (and writing out a single > + * block is quite fast anyway. ^ add a ")" > + * > + * Try to asynchronously kick of quota syncing at least. ^ "off?" > */ > - if (wait || unlikely(sb->s_frozen == SB_FREEZE_WRITE)) > - error = xfs_quiesce_data(mp); > - else > - error = xfs_sync_fsdata(mp, 0); > + if (!wait) { > + XFS_QM_DQSYNC(mp, SYNC_BDFLUSH); > + return 0; > + } > + Is it worth keeping a comment about this still being similar to the freeze path? (xfs_quiesce_data) > + error = xfs_quiesce_data(mp); > + if (error) > + return -error; > > - if (unlikely(laptop_mode)) { > + if (laptop_mode) { > int prev_sync_seq = mp->m_sync_seq; > > /* > @@ -1148,7 +1148,7 @@ xfs_fs_sync_super( > mp->m_sync_seq != prev_sync_seq); > } > > - return -error; > + return 0; > } > > STATIC int > @@ -1522,7 +1522,7 @@ static struct super_operations xfs_super > .write_inode = xfs_fs_write_inode, > .clear_inode = xfs_fs_clear_inode, > .put_super = xfs_fs_put_super, > - .sync_fs = xfs_fs_sync_super, > + .sync_fs = xfs_fs_sync_fs, > .freeze_fs = xfs_fs_freeze, > .statfs = xfs_fs_statfs, > .remount_fs = xfs_fs_remount, > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Sun May 10 13:02:12 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_35 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4AI2CQI195480 for ; Sun, 10 May 2009 13:02:12 -0500 X-ASG-Debug-ID: 1241978537-1d1f02c90000-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 EFDF527631F for ; Sun, 10 May 2009 11:02:17 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id yIiIgKuW6uMqlMDj for ; Sun, 10 May 2009 11:02:17 -0700 (PDT) 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 8A6C4A9B0B7; Sun, 10 May 2009 13:02:17 -0500 (CDT) Message-ID: <4A0716A8.1040108@sandeen.net> Date: Sun, 10 May 2009 13:02:16 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/5] xfs: make inodes dirty before issuing I/O Subject: Re: [PATCH 3/5] xfs: make inodes dirty before issuing I/O References: <20090426140305.113371000@bombadil.infradead.org> <20090426140707.884922000@bombadil.infradead.org> In-Reply-To: <20090426140707.884922000@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: 1241978537 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25438 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > To make sure they get properly waited on in sync when I/O is in flight and > we latter need to update the inode size. > maybe mention the new helper in the changelog just for completeness... > > Index: linux-2.6/fs/xfs/linux-2.6/xfs_aops.c > =================================================================== > --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_aops.c 2009-04-26 10:33:05.556127371 +0200 > +++ linux-2.6/fs/xfs/linux-2.6/xfs_aops.c 2009-04-26 10:37:23.137953826 +0200 > @@ -186,19 +186,37 @@ xfs_destroy_ioend( > } > > /* > + * If the end of the current ioend is beyond the current EOF, > + * return the new EOF value, otherwise zero. > + */ > +STATIC xfs_fsize_t > +xfs_ioend_new_eof( > + xfs_ioend_t *ioend) > +{ > + xfs_inode_t *ip = XFS_I(ioend->io_inode); > + xfs_fsize_t isize; > + xfs_fsize_t bsize; > + > + bsize = ioend->io_offset + ioend->io_size; > + isize = MAX(ip->i_size, ip->i_new_size); > + isize = MIN(isize, bsize); > + return isize > ip->i_d.di_size ? isize : 0; > +} > + > +/* > * Update on-disk file size now that data has been written to disk. > * The current in-memory file size is i_size. If a write is beyond > * eof i_new_size will be the intended file size until i_size is > * updated. If this write does not extend all the way to the valid > * file size then restrict this update to the end of the write. > */ > + > STATIC void > xfs_setfilesize( > xfs_ioend_t *ioend) > { > xfs_inode_t *ip = XFS_I(ioend->io_inode); > xfs_fsize_t isize; > - xfs_fsize_t bsize; > > ASSERT((ip->i_d.di_mode & S_IFMT) == S_IFREG); > ASSERT(ioend->io_type != IOMAP_READ); > @@ -206,14 +224,9 @@ xfs_setfilesize( > if (unlikely(ioend->io_error)) > return; > > - bsize = ioend->io_offset + ioend->io_size; > - > xfs_ilock(ip, XFS_ILOCK_EXCL); > - > - isize = MAX(ip->i_size, ip->i_new_size); > - isize = MIN(isize, bsize); > - > - if (ip->i_d.di_size < isize) { > + isize = xfs_ioend_new_eof(ioend); > + if (isize) { It strikes me as a little odd to potentially get back "isize == 0" here when nothing about the size is 0. Would it make more sense to rename this variable to "new_isize" or something? > ip->i_d.di_size = isize; > ip->i_update_core = 1; > ip->i_update_size = 1; > @@ -405,10 +418,16 @@ xfs_submit_ioend_bio( > struct bio *bio) > { > atomic_inc(&ioend->io_remaining); > - > bio->bi_private = ioend; > bio->bi_end_io = xfs_end_bio; > > + /* > + * if the I/O is beyond EOF we mark the inode dirty immediately ^If (uber-nitpick, in akpm-mode today I guess!) > + * but don't update the inode size until I/O completion. > + */ Maybe extend this comment a bit to say -why- you are doing this, not just -what- you are doing? > + if (xfs_ioend_new_eof(ioend)) > + xfs_mark_inode_dirty_sync(XFS_I(ioend->io_inode)); > + > submit_bio(WRITE, bio); > ASSERT(!bio_flagged(bio, BIO_EOPNOTSUPP)); > bio_put(bio); > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From BATV+1fafe6a6bff34e545181+2086+infradead.org+hch@bombadil.srs.infradead.org Sun May 10 13:03:24 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4AI3NTe195566 for ; Sun, 10 May 2009 13:03:24 -0500 X-ASG-Debug-ID: 1241978608-729501300000-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 03F4B1D219DD for ; Sun, 10 May 2009 11:03:28 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id D2r14fewlS1GiYNV for ; Sun, 10 May 2009 11:03:28 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3DN2-000104-HW; Sun, 10 May 2009 18:03:28 +0000 Date: Sun, 10 May 2009 14:03:28 -0400 From: Christoph Hellwig To: "Nathaniel W. Turner" Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs_repair: open filesystem device exclusively Subject: Re: [PATCH] xfs_repair: open filesystem device exclusively Message-ID: <20090510180328.GA3321@infradead.org> References: <49B48B8E.3030602@houseofnate.net> <49B491EA.4090003@houseofnate.net> <20090316212332.GA8496@infradead.org> <4A024B7C.4010409@houseofnate.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A024B7C.4010409@houseofnate.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: 1241978609 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, May 06, 2009 at 10:46:20PM -0400, Nathaniel W. Turner wrote: > ...just a friendly reminder to look at this again now that 3.0.1 is out. Thanks for the heads-up. I've put the patch in. From BATV+1fafe6a6bff34e545181+2086+infradead.org+hch@bombadil.srs.infradead.org Sun May 10 13:19:12 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4AIJCT3196544 for ; Sun, 10 May 2009 13:19:12 -0500 X-ASG-Debug-ID: 1241979557-1cd803ae0000-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 0205D27667B for ; Sun, 10 May 2009 11:19:17 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id jETXHrBRdgh7bYxn for ; Sun, 10 May 2009 11:19:17 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3DcL-0007Rg-Jv; Sun, 10 May 2009 18:19:17 +0000 Date: Sun, 10 May 2009 14:19:17 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH V2] xfstests: add aio-dio-test suite Subject: Re: [PATCH V2] xfstests: add aio-dio-test suite Message-ID: <20090510181917.GA23930@infradead.org> References: <4A050B11.5010403@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A050B11.5010403@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: 1241979558 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, May 08, 2009 at 11:48:17PM -0500, Eric Sandeen wrote: > Pull in the aio-dio-regress test suite from > http://git.kernel.org/?p=linux/kernel/git/zab/aio-dio-regress.git > > Changed from last time to break out into individual tests, > and move it under src/aio-dio-regress > > Also flagged a few as part of the "quick" group. The xfsqa integration looks good to me. Might be worth to mention what test each test cases runs in the top of file comments instead of just the aio+dio testsuite. Also what about keeping a file named SOURCE or similar in src/aio-dio-regress to tell exactly where we got this version from (repository + commit) so that we know what to diff against. From sandeen@sandeen.net Sun May 10 13:21:23 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4AILNNE196727 for ; Sun, 10 May 2009 13:21:23 -0500 X-ASG-Debug-ID: 1241979951-1cf203910000-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 B53FEF7FFF8 for ; Sun, 10 May 2009 11:25:51 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id Eh8GCAz34A9wjNnX for ; Sun, 10 May 2009 11:25:51 -0700 (PDT) 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 E0C23A9B0D8; Sun, 10 May 2009 13:21:25 -0500 (CDT) Message-ID: <4A071B25.2020808@sandeen.net> Date: Sun, 10 May 2009 13:21:25 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH V2] xfstests: add aio-dio-test suite Subject: Re: [PATCH V2] xfstests: add aio-dio-test suite References: <4A050B11.5010403@sandeen.net> <20090510181917.GA23930@infradead.org> In-Reply-To: <20090510181917.GA23930@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: 1241979953 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25439 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Fri, May 08, 2009 at 11:48:17PM -0500, Eric Sandeen wrote: >> Pull in the aio-dio-regress test suite from >> http://git.kernel.org/?p=linux/kernel/git/zab/aio-dio-regress.git >> >> Changed from last time to break out into individual tests, >> and move it under src/aio-dio-regress >> >> Also flagged a few as part of the "quick" group. > > The xfsqa integration looks good to me. Might be worth to mention > what test each test cases runs in the top of file comments instead > of just the aio+dio testsuite. good point, I'll lift comments from the tests themselves into the scripts. > Also what about keeping a file named SOURCE or similar in > src/aio-dio-regress to tell exactly where we got this version > from (repository + commit) so that we know what to diff against. ok, sure. I'll ask jeff & zach to put some proper licensing on the c files, and do the same for my new scripts as well. -Eric From sandeen@sandeen.net Sun May 10 13:28:59 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4AISxX8197448 for ; Sun, 10 May 2009 13:28:59 -0500 X-ASG-Debug-ID: 1241980409-485701a70000-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 E326DF7FC0F for ; Sun, 10 May 2009 11:33:29 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id RhDbIAYtCuB2BRcT for ; Sun, 10 May 2009 11:33:29 -0700 (PDT) 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 F064AA9B0C4; Sun, 10 May 2009 13:29:03 -0500 (CDT) Message-ID: <4A071CEF.5050000@sandeen.net> Date: Sun, 10 May 2009 13:29:03 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/5] xfs: make sure xfs_sync_fsdata covers the log Subject: Re: [PATCH 4/5] xfs: make sure xfs_sync_fsdata covers the log References: <20090426140305.113371000@bombadil.infradead.org> <20090426140708.037795000@bombadil.infradead.org> In-Reply-To: <20090426140708.037795000@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: 1241980409 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25439 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > We want to always cover the log after writing out the superblock, and > in case of a synchronous writeout make sure we actually wait for the > log to be covered. That way a filesystem that has been sync()ed can > be considered clean by log recovery. This one looks fine to me Reviewed-by: Eric Sandeen > Index: linux-2.6/fs/xfs/linux-2.6/xfs_sync.c > =================================================================== > --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-04-26 10:08:01.468074092 +0200 > +++ linux-2.6/fs/xfs/linux-2.6/xfs_sync.c 2009-04-26 10:28:37.049956907 +0200 > @@ -208,11 +210,15 @@ xfs_sync_inodes( > STATIC int > xfs_commit_dummy_trans( > struct xfs_mount *mp, > - uint log_flags) > + uint flags) > { > struct xfs_inode *ip = mp->m_rootip; > struct xfs_trans *tp; > int error; > + int log_flags = XFS_LOG_FORCE; > + > + if (flags & SYNC_WAIT) > + log_flags |= XFS_LOG_SYNC; > > /* > * Put a dummy transaction in the log to tell recovery > @@ -230,13 +236,12 @@ xfs_commit_dummy_trans( > xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); > xfs_trans_ihold(tp, ip); > xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); > - /* XXX(hch): ignoring the error here.. */ > error = xfs_trans_commit(tp, 0); > - > xfs_iunlock(ip, XFS_ILOCK_EXCL); > > + /* the log force ensures this transaction is pushed to disk */ > xfs_log_force(mp, 0, log_flags); > - return 0; > + return error; > } > > int > @@ -276,6 +281,7 @@ xfs_sync_fsdata( > */ > if (XFS_BUF_ISPINNED(bp)) > xfs_log_force(mp, 0, XFS_LOG_FORCE); > + xfs_flush_buftarg(mp->m_ddev_targp, 1); > } > > > @@ -284,7 +290,10 @@ xfs_sync_fsdata( > else > XFS_BUF_ASYNC(bp); > > - return xfs_bwrite(mp, bp); > + error = xfs_bwrite(mp, bp); > + if (!error && xfs_log_need_covered(mp)) > + error = xfs_commit_dummy_trans(mp, (flags & SYNC_WAIT)); > + return error; > > out_brelse: > xfs_buf_relse(bp); > @@ -469,8 +478,6 @@ xfs_sync_worker( > /* dgc: errors ignored here */ > error = XFS_QM_DQSYNC(mp, SYNC_BDFLUSH); > error = xfs_sync_fsdata(mp, SYNC_BDFLUSH); > - if (xfs_log_need_covered(mp)) > - error = xfs_commit_dummy_trans(mp, XFS_LOG_FORCE); > } > mp->m_sync_seq++; > wake_up(&mp->m_wait_single_sync_task); > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Sun May 10 13:37:54 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4AIbshl197955 for ; Sun, 10 May 2009 13:37:54 -0500 X-ASG-Debug-ID: 1241980679-5e1103c80000-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 5C9AF1D21897 for ; Sun, 10 May 2009 11:37:59 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id oskKFVtXxRYZwEvT for ; Sun, 10 May 2009 11:37:59 -0700 (PDT) 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 6B7AAA9B0CA; Sun, 10 May 2009 13:37:59 -0500 (CDT) Message-ID: <4A071F06.8040106@sandeen.net> Date: Sun, 10 May 2009 13:37:58 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 5/5] xfs: fix xfs_quiesce_data Subject: Re: [PATCH 5/5] xfs: fix xfs_quiesce_data References: <20090426140305.113371000@bombadil.infradead.org> <20090426140708.279368000@bombadil.infradead.org> In-Reply-To: <20090426140708.279368000@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: 1241980680 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25440 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > We need to do a synchronous xfs_sync_fsdata to make sure the superblock > actually is on disk when we return. While we're at it also remove the > superflous SYNC_BDFLUSH flag to xfs_sync_inodes, and move the xfs_filestream_flush > call later [hch: why? seems unrelated]. What makes SYNC_BDFLUSH "superfluous?" ... oh ... because nothing in that callchain below ever looks for it. Could we make that more obvious in the changelog? I guess I too would like a reason for the filestream_flush move somewhere in the changelog... Adding the SYNC_WAIT looks good to me though :) -Eric > > Index: linux-2.6/fs/xfs/linux-2.6/xfs_sync.c > =================================================================== > --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-04-26 10:46:17.112949525 +0200 > +++ linux-2.6/fs/xfs/linux-2.6/xfs_sync.c 2009-04-26 10:48:19.713979813 +0200 > @@ -323,16 +323,16 @@ xfs_quiesce_data( > int error; > > /* push non-blocking */ > - xfs_sync_inodes(mp, SYNC_DELWRI|SYNC_BDFLUSH); > + xfs_sync_inodes(mp, SYNC_DELWRI); > XFS_QM_DQSYNC(mp, SYNC_BDFLUSH); > - xfs_filestream_flush(mp); > > - /* push and block */ > + /* push and block till complete */ > xfs_sync_inodes(mp, SYNC_DELWRI|SYNC_WAIT|SYNC_IOWAIT); > XFS_QM_DQSYNC(mp, SYNC_WAIT); > + xfs_filestream_flush(mp); > > /* write superblock and hoover up shutdown errors */ > - error = xfs_sync_fsdata(mp, 0); > + error = xfs_sync_fsdata(mp, SYNC_WAIT); > > /* flush data-only devices */ > if (mp->m_rtdev_targp) > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From BATV+1fafe6a6bff34e545181+2086+infradead.org+hch@bombadil.srs.infradead.org Sun May 10 14:35:01 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4AJZ0Qm200449 for ; Sun, 10 May 2009 14:35:00 -0500 X-ASG-Debug-ID: 1241984371-4b12039d0000-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 6A927F807DB for ; Sun, 10 May 2009 12:39:31 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id H35WylIPanapJSNu for ; Sun, 10 May 2009 12:39:31 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3Enh-0004U6-CN; Sun, 10 May 2009 19:35:05 +0000 Date: Sun, 10 May 2009 15:35:05 -0400 From: Christoph Hellwig To: Dave Chinner Cc: xfs-oss X-ASG-Orig-Subj: Re: [patch] allow mkfs to make larger logs Subject: Re: [patch] allow mkfs to make larger logs Message-ID: <20090510193505.GA14021@infradead.org> References: <20080522061222.GQ173056135@sgi.com> <20080522132333.GB4972@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080522132333.GB4972@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: 1241984371 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I've put this into xfsprogs-dev now. From BATV+1fafe6a6bff34e545181+2086+infradead.org+hch@bombadil.srs.infradead.org Sun May 10 14:37:17 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4AJbHmm200572 for ; Sun, 10 May 2009 14:37:17 -0500 X-ASG-Debug-ID: 1241984508-77e2014a0000-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 611AC1448A9D for ; Sun, 10 May 2009 12:41:48 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id cqIDxLPQbpEX8vDi for ; Sun, 10 May 2009 12:41:48 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3Epu-0005VC-8F; Sun, 10 May 2009 19:37:22 +0000 Date: Sun, 10 May 2009 15:37:22 -0400 From: Christoph Hellwig To: Dave Chinner Cc: xfs-oss X-ASG-Orig-Subj: Re: [patch] xfsqa test to check log size scaling Subject: Re: [patch] xfsqa test to check log size scaling Message-ID: <20090510193722.GB14021@infradead.org> References: <20080522061257.GR173056135@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080522061257.GR173056135@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: 1241984508 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, May 22, 2008 at 04:12:57PM +1000, David Chinner wrote: > XFS-QA test to check that log size scaling works correctly > for old and new maximum log sizes. This patch has a couple of problems. For 32bit architecturs with 4k pages the maximum filesize is limited to just under 16 Terrabytes, so the 100 Terrabyte file can't be created. Even if limit the size to just under 16TB we can run of space quite quickly by just creating the filesystem and the large log on smaller test setups. From sandeen@sandeen.net Sun May 10 19:30:10 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-3.7 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_64, 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4B0UAhm208685 for ; Sun, 10 May 2009 19:30:10 -0500 X-ASG-Debug-ID: 1242001814-1f4f01e70000-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 7CE7A2769B7 for ; Sun, 10 May 2009 17:30:14 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id y3JKQFW7JJNMlgoc for ; Sun, 10 May 2009 17:30:14 -0700 (PDT) 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 1C870A9B0C8 for ; Sun, 10 May 2009 19:30:14 -0500 (CDT) Message-ID: <4A077195.3070708@sandeen.net> Date: Sun, 10 May 2009 19:30:13 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] xfsprogs: add fallocate command to xfs_io Subject: [PATCH] xfsprogs: add fallocate command to xfs_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: 1242001815 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25464 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Based on Dave's earlier patch, but now we have an fallocate glibc call... this also adds autoconf magic and a manpage update. (hopefully not too #ifdef-heavy....) Signed-off-by: Eric Sandeen --- diff --git a/configure.in b/configure.in index 3fbd44e..8f5782a 100644 --- a/configure.in +++ b/configure.in @@ -66,6 +66,7 @@ AC_HAVE_MINCORE AC_HAVE_SENDFILE AC_HAVE_GETMNTENT AC_HAVE_GETMNTINFO +AC_HAVE_FALLOCATE AC_TYPE_PSINT AC_TYPE_PSUNSIGNED diff --git a/include/builddefs.in b/include/builddefs.in index c8f5c08..d6bf5c0 100644 --- a/include/builddefs.in +++ b/include/builddefs.in @@ -94,6 +94,7 @@ HAVE_MINCORE = @have_mincore@ HAVE_SENDFILE = @have_sendfile@ HAVE_GETMNTENT = @have_getmntent@ HAVE_GETMNTINFO = @have_getmntinfo@ +HAVE_FALLOCATE = @have_fallocate@ GCCFLAGS = -funsigned-char -fno-strict-aliasing -Wall # -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-decl diff --git a/io/Makefile b/io/Makefile index 6f10e8d..1a51879 100644 --- a/io/Makefile +++ b/io/Makefile @@ -59,6 +59,10 @@ ifeq ($(ENABLE_EDITLINE),yes) LLDLIBS += $(LIBEDITLINE) $(LIBTERMCAP) endif +ifeq ($(HAVE_FALLOCATE),yes) +LCFLAGS += -DHAVE_FALLOCATE +endif + default: $(LTCOMMAND) include $(BUILDRULES) diff --git a/io/prealloc.c b/io/prealloc.c index 6a2563e..7d9bd2f 100644 --- a/io/prealloc.c +++ b/io/prealloc.c @@ -16,6 +16,9 @@ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#if defined(HAVE_FALLOCATE) +#include +#endif #include #include #include @@ -26,6 +29,9 @@ static cmdinfo_t allocsp_cmd; static cmdinfo_t freesp_cmd; static cmdinfo_t resvsp_cmd; static cmdinfo_t unresvsp_cmd; +#if defined(HAVE_FALLOCATE) +static cmdinfo_t falloc_cmd; +#endif static int offset_length( @@ -119,6 +125,40 @@ unresvsp_f( return 0; } +#if defined (HAVE_FALLOCATE) +static int +fallocate_f( + int argc, + char **argv) +{ + xfs_flock64_t segment; + int mode = 0; + int c; + + while ((c = getopt(argc, argv, "k")) != EOF) { + switch (c) { + case 'k': + mode = FALLOC_FL_KEEP_SIZE; + break; + default: + command_usage(&falloc_cmd); + } + } + if (optind != argc - 2) + return command_usage(&falloc_cmd); + + if (!offset_length(argv[optind], argv[optind+1], &segment)) + return 0; + + if (fallocate(file->fd, mode, + segment.l_start, segment.l_len)) { + perror("fallocate"); + return 0; + } + return 0; +} +#endif + void prealloc_init(void) { @@ -160,4 +200,17 @@ prealloc_init(void) add_command(&freesp_cmd); add_command(&resvsp_cmd); add_command(&unresvsp_cmd); + +#if defined (HAVE_FALLOCATE) + falloc_cmd.name = _("falloc"); + falloc_cmd.cfunc = fallocate_f; + falloc_cmd.argmin = 2; + falloc_cmd.argmax = -1; + falloc_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK; + falloc_cmd.args = _("[-k] off len"); + falloc_cmd.oneline = + _("allocates space associated with part of a file via fallocate"); + + add_command(&falloc_cmd); +#endif } diff --git a/m4/package_libcdev.m4 b/m4/package_libcdev.m4 index 5156ced..856794a 100644 --- a/m4/package_libcdev.m4 +++ b/m4/package_libcdev.m4 @@ -98,3 +98,18 @@ AC_DEFUN([AC_HAVE_GETMNTINFO], AC_MSG_RESULT(no)) AC_SUBST(have_getmntinfo) ]) + +# +# Check if we have a fallocate libc call (Linux) +# +AC_DEFUN([AC_HAVE_FALLOCATE], + [ AC_MSG_CHECKING([for fallocate]) + AC_TRY_COMPILE([ +#include + ], [ + fallocate(0, 0, 0, 0); + ], have_fallocate=yes + AC_MSG_RESULT(yes), + AC_MSG_RESULT(no)) + AC_SUBST(have_fallocate) + ]) diff --git a/man/man8/xfs_io.8 b/man/man8/xfs_io.8 index 23bef94..6fc6bad 100644 --- a/man/man8/xfs_io.8 +++ b/man/man8/xfs_io.8 @@ -295,6 +295,20 @@ system call described in the .BR xfsctl (3) manual page. .TP +.BI "falloc [ \-k ]" " offset length" +Allocates reserved, unwritten space for part of a file using the +fallocate routine as described in the +.BR fallocate (3) +manual page. +.RS 1.0i +.PD 0 +.TP 0.4i +.B \-k +will set the FALLOC_FL_KEEP_SIZE flag as described in +.BR fallocate (3). +.PD +.RE +.TP .BI truncate " offset" Truncates the current file at the given offset using .BR ftruncate (2). From unth@volny.cz Mon May 11 09:18:35 2009 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_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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4BEIXAb258033 for ; Mon, 11 May 2009 09:18:34 -0500 X-ASG-Debug-ID: 1242051519-58e603a10000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp2.vol.cz (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 184B31D24125 for ; Mon, 11 May 2009 07:18:39 -0700 (PDT) Received: from smtp2.vol.cz (smtp2.vol.cz [195.250.128.75]) by cuda.sgi.com with ESMTP id 1Yq3G5QlCDewQFYr for ; Mon, 11 May 2009 07:18:39 -0700 (PDT) X-ASG-Whitelist: Client Received: from webmail3.vol.cz (webmail3.vol.cz [195.250.155.228]) by smtp2.vol.cz (Postfix) with ESMTP id 7190629B9A; Mon, 11 May 2009 16:18:38 +0200 (CEST) Received: from webmail3.vol.cz (localhost [127.0.0.1]) by webmail3.vol.cz (8.14.3/8.14.3) with ESMTP id n4BEIct7057998; Mon, 11 May 2009 16:18:38 +0200 (CEST) (envelope-from unth@volny.cz) Received: (from www@localhost) by webmail3.vol.cz (8.14.3/8.14.3/Submit) id n4BEIVIc057946; Mon, 11 May 2009 16:18:31 +0200 (CEST) (envelope-from unth@volny.cz) Received: from d146228.upc-d.chello.nl (d146228.upc-d.chello.nl [213.46.146.228]) by www3.mail.volny.cz (www3.mail.volny.cz [195.250.155.196]) with HTTP; Mon, 11 May 2009 16:18:31 +0200 (CEST) MIME-Version: 1.0 X-ASG-Orig-Subj: YEAR 2009 Subject: YEAR 2009 From: unth@volny.cz X-Originating-Account: unth/volny.cz To: unth@volny.cz Date: Mon, 11 May 2009 16:18:31 +0200 (CEST) Message-ID: X-Mailer: Volny.cz Webmail2 2.136 X-Originating-Ip: 213.46.146.228 X-Originating-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; OfficeLiveConnector.1.3; OfficeLivePatch.0.0) X-Webmail2-Origin: unth/volny.cz [213.46.146.228] X-Priority: 3 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Barracuda-Connect: smtp2.vol.cz[195.250.128.75] X-Barracuda-Start-Time: 1242051520 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean WUVBUiAyMDA5DQoNCg0KTG90dGVyeSBXaW5uZXIsDQoNCg0KQ29uZ3JhdHVs YXRpb25zIHRvIHlvdSBhcyB3ZSBicmluZyB0byB5b3VyIG5vdGljZSB0aGUg cmVzdWx0IG9mIFVUSUxJVFkNCk5BVElPTkFMIGUtTE9UVE8gTkwgMjAwOSBB d2FyZCBQcm9tb3Rpb24uDQpXZSBhcmUgaGFwcHkgdG8gaW5mb3JtIHlvdSB0 aGF0IHlvdXIgZW1haWwgYWRkcmVzcyBoYXZlIGVtZXJnZWQgYSB3aW5uZXIN Cm9mIOKCrDEuNW0gKE9uZSBtaWxsaW9uLCBmaXZlIGh1bmRyZWQgdGhvdXNh bmQgRXVyb3MpLg0KDQoNCkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBwcm9j ZWR1cmUsIHBsZWFzZSBDb250YWN0IE1yLlZhbiBEaWprIExhYXQsDQpvbiB0 aGUgZGV0YWlscyBnaXZlbiBiZWxvdywNCg0KDQpNci4gVmFuIERpamsgTGFh dChDTEFJTSBBR0VOVDsgDQpUZWxlcGhvbmU6ICszMSA2MTcgMDI4IDQ4MA0K QU1TVEVSREFNLU5FVEhFUkxBTkRTDQpFbWFpbDogdmFuZGlqa2xhYXRAbHVj a3ltYWlsLmNvbQ0KDQoNCkxvdHRlcnkgUmVmIE5POiBjby80NzgvMzQvMDYN CkJhdGNoIE5vLjowMDktNjk0LTg4LU5MDQpHYW1lIE5vLjpOTDU3Ni1VVE42 MC0wMDkNCkx1Y2t5IE5vLjoyMC9VVE4zNS80OS8wMjAvOTANClRpY2tldE5v LjpVVE42NTcvMjUvMjIvMDA5DQo= From BATV+4cd80222a6d8dd6c43b0+2087+infradead.org+hch@bombadil.srs.infradead.org Mon May 11 11:06:37 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4BG6VFU001126 for ; Mon, 11 May 2009 11:06:37 -0500 X-ASG-Debug-ID: 1242057996-7f2900c90000-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 43510278F64 for ; Mon, 11 May 2009 09:06:36 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id vWNfil2BDGWjwMrd for ; Mon, 11 May 2009 09:06:36 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3Y1B-0006zy-ED for xfs@oss.sgi.com; Mon, 11 May 2009 16:06:35 +0000 Date: Mon, 11 May 2009 12:06:17 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfs: update max log size Subject: [PATCH] xfs: update max log size Message-ID: <20090511160609.GA18278@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: 1242057997 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Commit a6634fba3dec4a92f0a2c4e30c80b634c0576ad5 in xfsprogs increased the maximum log size supported by mkfs. Merged back the changes to xfs_fs.h so the growfs enforced the same limit and the headers are in sync. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_fs.h =================================================================== --- xfs.orig/fs/xfs/xfs_fs.h 2009-02-08 21:51:06.576943974 +0100 +++ xfs/fs/xfs/xfs_fs.h 2009-05-10 21:33:30.970822643 +0200 @@ -239,10 +239,13 @@ typedef struct xfs_fsop_resblks { * Minimum and maximum sizes need for growth checks */ #define XFS_MIN_AG_BLOCKS 64 -#define XFS_MIN_LOG_BLOCKS 512 -#define XFS_MAX_LOG_BLOCKS (64 * 1024) -#define XFS_MIN_LOG_BYTES (256 * 1024) -#define XFS_MAX_LOG_BYTES (128 * 1024 * 1024) +#define XFS_MIN_LOG_BLOCKS 512ULL +#define XFS_MAX_LOG_BLOCKS (1024 * 1024ULL) +#define XFS_MIN_LOG_BYTES (10 * 1024 * 1024ULL) + +/* keep the maximum size under 2^31 by a small amount */ +#define XFS_MAX_LOG_BYTES \ + ((2 * 1024 * 1024 * 1024ULL) - XFS_MIN_LOG_BYTES) /* * Structures for XFS_IOC_FSGROWFSDATA, XFS_IOC_FSGROWFSLOG & XFS_IOC_FSGROWFSRT From sandeen@sandeen.net Mon May 11 11:25:30 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4BGPTov002095 for ; Mon, 11 May 2009 11:25:30 -0500 X-ASG-Debug-ID: 1242059134-044b00ff0000-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 76EB0279414 for ; Mon, 11 May 2009 09:25:34 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id QsmzDJ3k5ijgN4Le for ; Mon, 11 May 2009 09:25:34 -0700 (PDT) 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 n4BGPPFg027043; Mon, 11 May 2009 12:25:25 -0400 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 n4BGPOSJ013873; Mon, 11 May 2009 12:25:24 -0400 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 n4BGPNIL020304; Mon, 11 May 2009 12:25:24 -0400 Message-ID: <4A085173.5040208@sandeen.net> Date: Mon, 11 May 2009 11:25:23 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: update max log size Subject: Re: [PATCH] xfs: update max log size References: <20090511160609.GA18278@infradead.org> In-Reply-To: <20090511160609.GA18278@infradead.org> 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: 1242059135 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25506 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Commit a6634fba3dec4a92f0a2c4e30c80b634c0576ad5 in xfsprogs increased the > maximum log size supported by mkfs. Merged back the changes to xfs_fs.h > so the growfs enforced the same limit and the headers are in sync. > > Signed-off-by: Christoph Hellwig Ok, looks like kernelspace only cares about this during xfs_growfs_log_private(), and that's not actually implemented yet, right? So no worries about kernel<->userspace version correlation I think. Reviewed-by: Eric Sandeen > Index: xfs/fs/xfs/xfs_fs.h > =================================================================== > --- xfs.orig/fs/xfs/xfs_fs.h 2009-02-08 21:51:06.576943974 +0100 > +++ xfs/fs/xfs/xfs_fs.h 2009-05-10 21:33:30.970822643 +0200 > @@ -239,10 +239,13 @@ typedef struct xfs_fsop_resblks { > * Minimum and maximum sizes need for growth checks > */ > #define XFS_MIN_AG_BLOCKS 64 > -#define XFS_MIN_LOG_BLOCKS 512 > -#define XFS_MAX_LOG_BLOCKS (64 * 1024) > -#define XFS_MIN_LOG_BYTES (256 * 1024) > -#define XFS_MAX_LOG_BYTES (128 * 1024 * 1024) > +#define XFS_MIN_LOG_BLOCKS 512ULL > +#define XFS_MAX_LOG_BLOCKS (1024 * 1024ULL) > +#define XFS_MIN_LOG_BYTES (10 * 1024 * 1024ULL) > + > +/* keep the maximum size under 2^31 by a small amount */ > +#define XFS_MAX_LOG_BYTES \ > + ((2 * 1024 * 1024 * 1024ULL) - XFS_MIN_LOG_BYTES) > > /* > * Structures for XFS_IOC_FSGROWFSDATA, XFS_IOC_FSGROWFSLOG & XFS_IOC_FSGROWFSRT > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From BATV+4cd80222a6d8dd6c43b0+2087+infradead.org+hch@bombadil.srs.infradead.org Mon May 11 11:28:45 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4BGSinX002279 for ; Mon, 11 May 2009 11:28:44 -0500 X-ASG-Debug-ID: 1242059599-0530037d0000-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 D35D61252CB4 for ; Mon, 11 May 2009 09:33:19 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id TVAyZGy5I4Oz0Kiv for ; Mon, 11 May 2009 09:33:19 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3YMz-0000RS-Fu; Mon, 11 May 2009 16:28:49 +0000 Date: Mon, 11 May 2009 12:28:49 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: update max log size Subject: Re: [PATCH] xfs: update max log size Message-ID: <20090511162849.GA1430@infradead.org> References: <20090511160609.GA18278@infradead.org> <4A085173.5040208@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A085173.5040208@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: 1242059600 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, May 11, 2009 at 11:25:23AM -0500, Eric Sandeen wrote: > Christoph Hellwig wrote: > > Commit a6634fba3dec4a92f0a2c4e30c80b634c0576ad5 in xfsprogs increased the > > maximum log size supported by mkfs. Merged back the changes to xfs_fs.h > > so the growfs enforced the same limit and the headers are in sync. > > > > Signed-off-by: Christoph Hellwig > > Ok, looks like kernelspace only cares about this during > xfs_growfs_log_private(), and that's not actually implemented yet, > right? So no worries about kernel<->userspace version correlation I think. Indeed, I just did a quick grep what's actually using it. From BATV+4cd80222a6d8dd6c43b0+2087+infradead.org+hch@bombadil.srs.infradead.org Mon May 11 15:11:28 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4BKBPSa011504 for ; Mon, 11 May 2009 15:11:27 -0500 X-ASG-Debug-ID: 1242072961-5f7402be0000-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 0341EF8FCE4 for ; Mon, 11 May 2009 13:16:01 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id NMB0lmTIkkZSREHh for ; Mon, 11 May 2009 13:16:01 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3bqR-00071G-1A; Mon, 11 May 2009 20:11:27 +0000 Date: Mon, 11 May 2009 16:11:27 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/5] xfs: cleanup ->sync_fs Subject: Re: [PATCH 2/5] xfs: cleanup ->sync_fs Message-ID: <20090511201126.GA14195@infradead.org> References: <20090426140305.113371000@bombadil.infradead.org> <20090426140707.713299000@bombadil.infradead.org> <4A07141A.5060303@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A07141A.5060303@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: 1242072963 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, May 10, 2009 at 12:51:22PM -0500, Eric Sandeen wrote: > Is it worth keeping a comment about this still being similar to the > freeze path? (xfs_quiesce_data) Don't think so. The commonality is in xfs_quiesce_data, and both calling this functions for the majority of the work makes that quite obvious. From BATV+4cd80222a6d8dd6c43b0+2087+infradead.org+hch@bombadil.srs.infradead.org Mon May 11 15:15:07 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4BKF6mU011623 for ; Mon, 11 May 2009 15:15:06 -0500 X-ASG-Debug-ID: 1242072912-020700b60000-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 2A3FC27A6F9 for ; Mon, 11 May 2009 13:15:12 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id LUF2D7TPkmxj0QfK for ; Mon, 11 May 2009 13:15:12 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3bu3-0002bP-Sz; Mon, 11 May 2009 20:15:11 +0000 Date: Mon, 11 May 2009 16:15:11 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 5/5] xfs: fix xfs_quiesce_data Subject: Re: [PATCH 5/5] xfs: fix xfs_quiesce_data Message-ID: <20090511201511.GB14195@infradead.org> References: <20090426140305.113371000@bombadil.infradead.org> <20090426140708.279368000@bombadil.infradead.org> <4A071F06.8040106@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A071F06.8040106@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: 1242072913 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, May 10, 2009 at 01:37:58PM -0500, Eric Sandeen wrote: > Christoph Hellwig wrote: > > > We need to do a synchronous xfs_sync_fsdata to make sure the superblock > > actually is on disk when we return. While we're at it also remove the > > superflous SYNC_BDFLUSH flag to xfs_sync_inodes, and move the xfs_filestream_flush > > call later [hch: why? seems unrelated]. > > What makes SYNC_BDFLUSH "superfluous?" ... oh ... because nothing in > that callchain below ever looks for it. Could we make that more obvious > in the changelog? Ok. > I guess I too would like a reason for the filestream_flush move > somewhere in the changelog... Hehe, maybe Dave can chime in. Or I can test if it actually affects anything and maybe move it out to another patch. The lack of reliability of the filesystreams tests doesn't make this any easier to test. > > Adding the SYNC_WAIT looks good to me though :) > > -Eric > > > > > Index: linux-2.6/fs/xfs/linux-2.6/xfs_sync.c > > =================================================================== > > --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-04-26 10:46:17.112949525 +0200 > > +++ linux-2.6/fs/xfs/linux-2.6/xfs_sync.c 2009-04-26 10:48:19.713979813 +0200 > > @@ -323,16 +323,16 @@ xfs_quiesce_data( > > int error; > > > > /* push non-blocking */ > > - xfs_sync_inodes(mp, SYNC_DELWRI|SYNC_BDFLUSH); > > + xfs_sync_inodes(mp, SYNC_DELWRI); > > XFS_QM_DQSYNC(mp, SYNC_BDFLUSH); > > - xfs_filestream_flush(mp); > > > > - /* push and block */ > > + /* push and block till complete */ > > xfs_sync_inodes(mp, SYNC_DELWRI|SYNC_WAIT|SYNC_IOWAIT); > > XFS_QM_DQSYNC(mp, SYNC_WAIT); > > + xfs_filestream_flush(mp); > > > > /* write superblock and hoover up shutdown errors */ > > - error = xfs_sync_fsdata(mp, 0); > > + error = xfs_sync_fsdata(mp, SYNC_WAIT); > > > > /* flush data-only devices */ > > if (mp->m_rtdev_targp) > > > > _______________________________________________ > > 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 ---end quoted text--- From asachdeva@attributor.com Mon May 11 18:54:34 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4BNsXhZ019188 for ; Mon, 11 May 2009 18:54:33 -0500 X-ASG-Debug-ID: 1242086350-62fa00df0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from zimbra1.mindcentric.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 618AC1252C62 for ; Mon, 11 May 2009 16:59:10 -0700 (PDT) Received: from zimbra1.mindcentric.com (zimbra.mindcentric.com [216.98.159.230]) by cuda.sgi.com with ESMTP id FZbNBOUuSiaBF4HC for ; Mon, 11 May 2009 16:59:10 -0700 (PDT) Received: from zimbra1.mindcentric.com (localhost.localdomain [127.0.0.1]) by zimbra1.mindcentric.com (Postfix) with ESMTP id 8B37B22ACADA for ; Mon, 11 May 2009 16:54:38 -0700 (PDT) Date: Mon, 11 May 2009 16:54:38 -0700 (PDT) From: Anshuman Sachdeva To: xfs@oss.sgi.com Message-ID: <11164227.961242086072718.JavaMail.SYSTEM@lp-asachdeva> X-ASG-Orig-Subj: xfs hangs in hadoop file system Subject: xfs hangs in hadoop file system MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [69.181.203.59] X-Mailer: Zimbra 5.0.6_GA_2313.RHEL4_64 (Yahoo! Zimbra Desktop/1.0_1537_Windows) X-Barracuda-Connect: zimbra.mindcentric.com[216.98.159.230] X-Barracuda-Start-Time: 1242086351 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1898 1.0000 -0.8822 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.88 X-Barracuda-Spam-Status: No, SCORE=-0.88 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25532 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi All, Does any one else is also having same issue? Anshuman From info@bestorganizationlive.com Mon May 11 22:51:47 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4C3pl5o032507 for ; Mon, 11 May 2009 22:51:47 -0500 X-ASG-Debug-ID: 1242100310-44a2005f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from customer-server4.catalservers.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 31E721D26F48 for ; Mon, 11 May 2009 20:51:51 -0700 (PDT) Received: from customer-server4.catalservers.com (customer-server4.catalservers.com [91.212.126.5]) by cuda.sgi.com with ESMTP id 4F8dRZYBV5VgMFhS for ; Mon, 11 May 2009 20:51:51 -0700 (PDT) Received: from bestorganizationlive.com (customer-server4.catalservers.com [91.212.126.5]) by customer-server4.catalservers.com (Postfix) with ESMTPA id C325CA87A2 for ; Tue, 12 May 2009 05:51:37 +0200 (CEST) Date: Tue, 12 May 2009 05:51:37 +0200 Errors-To: info@bestorganizationlive.com To: xfs@oss.sgi.com From: World Business Register Reply-To: register@wbg2day.com X-ASG-Orig-Subj: Business Registration 2009/2010 Subject: Business Registration 2009/2010 Message-ID: MSMail-Priority: normal X-Priority: 3 X-Mailer: Mail sent with Web2Life-Newsletter v1.1.5 -- www.Web2Life.de MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_c19a8585fdb263aac981d2a7c266c7ea" X-Barracuda-Connect: customer-server4.catalservers.com[91.212.126.5] X-Barracuda-Start-Time: 1242100313 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4790 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= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25549 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --b1_c19a8585fdb263aac981d2a7c266c7ea Content-Type: text/plain; charset = "UTF-8" Content-Transfer-Encoding: 8bit Dear Ladies and Gentlemen. In order to have your company inserted in the registry of World Businesses for 2009/2010 edition, please print, complete and submit the enclosed form (PDF file) to the following address: WORLD BUSINESS GUIDE P.O. Box 2021 3500 GA Utrecht The Netherlands email: register@wbg2day.com FAX: +31 20 524 8107 Updating is free of charge! If you are not the intended recipient, please submit an email to unsubscribe@wbg2day.com Your request shall be dealt with accordingly. --b1_c19a8585fdb263aac981d2a7c266c7ea Content-Type: application/octet-stream; name="Registration_Form.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Registration_Form.pdf" JVBERi0xLjYNJeLjz9MNCjggMCBvYmoNPDwvTGluZWFyaXplZCAxL0wgNDM2NTkvTyAxMS9FIDM4 NjcxL04gMS9UIDQzMzg1L0ggWyA5MzYgMjA2XT4+DWVuZG9iag0gICAgICAgICAgICAgICAgICAg IA14cmVmDTggMzINMDAwMDAwMDAxNiAwMDAwMCBuDQowMDAwMDAxMTQyIDAwMDAwIG4NCjAwMDAw MDEyMTggMDAwMDAgbg0KMDAwMDAwMTM0NCAwMDAwMCBuDQowMDAwMDAxODc1IDAwMDAwIG4NCjAw MDAwMDI0NTAgMDAwMDAgbg0KMDAwMDAwMzE0NSAwMDAwMCBuDQowMDAwMDAzNjEyIDAwMDAwIG4N CjAwMDAwMDQ0NDUgMDAwMDAgbg0KMDAwMDAwNTAyNSAwMDAwMCBuDQowMDAwMDA2NTEwIDAwMDAw IG4NCjAwMDAwMDc5MTIgMDAwMDAgbg0KMDAwMDAwOTE3NSAwMDAwMCBuDQowMDAwMDEwNDg5IDAw MDAwIG4NCjAwMDAwMTA2MzIgMDAwMDAgbg0KMDAwMDAxMjE0MCAwMDAwMCBuDQowMDAwMDEzMzky IDAwMDAwIG4NCjAwMDAwMTM1MDUgMDAwMDAgbg0KMDAwMDAxMzU3NCAwMDAwMCBuDQowMDAwMDEz NjUzIDAwMDAwIG4NCjAwMDAwMTgyMTEgMDAwMDAgbg0KMDAwMDAxODQ5OCAwMDAwMCBuDQowMDAw MDE4NzY4IDAwMDAwIG4NCjAwMDAwMTg3OTMgMDAwMDAgbg0KMDAwMDAxOTE3MyAwMDAwMCBuDQow MDAwMDI0NTkxIDAwMDAwIG4NCjAwMDAwMjUwMTggMDAwMDAgbg0KMDAwMDAyNTEwMiAwMDAwMCBu DQowMDAwMDI4OTI2IDAwMDAwIG4NCjAwMDAwMjkzOTIgMDAwMDAgbg0KMDAwMDAzODM5NyAwMDAw MCBuDQowMDAwMDAwOTM2IDAwMDAwIG4NCnRyYWlsZXINPDwvU2l6ZSA0MC9Sb290IDkgMCBSL0lu Zm8gNyAwIFIvSURbPDUzNjdDREQwMTk4NDQxOEZBOURBNjlFREQ4QTg4RjBFPjwyREM2OEY2MTU1 Nzg0N0FGQjA4RTYzRURBRDU5MjMzRT5dL1ByZXYgNDMzNzc+Pg1zdGFydHhyZWYNMA0lJUVPRg0g ICAgICAgICAgICAgICAgICAgICAgICANMzkgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0kg MTQwL0xlbmd0aCAxMjAvUyAzOS9WIDExOD4+c3RyZWFtDQpo3mJgYJBlYGD+wgAEk3wZUAEzELMw cDQwqiEJykIxA4MkAx/jFPkFnU3z2F4YNXQd3SLa4pvo5FAmruOzQYxBh+GmdIBjw1cGBjFTF8dJ DG/eFuQlizA/gRrDyMAwzRFsPgNrLNxwdgaGFR4QWYZogAADANG4GG0NZW5kc3RyZWFtDWVuZG9i ag05IDAgb2JqDTw8L0Fjcm9Gb3JtIDEwIDAgUi9NZXRhZGF0YSA2IDAgUi9QYWdlcyA1IDAgUi9U eXBlL0NhdGFsb2c+Pg1lbmRvYmoNMTAgMCBvYmoNPDwvREEoL0hlbHYgMCBUZiAwIGcgKS9EUjw8 L0VuY29kaW5nPDwvUERGRG9jRW5jb2RpbmcgNCAwIFI+Pi9Gb250PDwvSGVsdiAyIDAgUi9aYURi IDMgMCBSPj4+Pi9GaWVsZHMgMSAwIFI+Pg1lbmRvYmoNMTEgMCBvYmoNPDwvQXJ0Qm94WzAuMCAw LjAwMDk3NjU2MiA1OTUuMjc1IDg0MS44OV0vQmxlZWRCb3hbMC4wIDAuMCA1OTUuMjc1IDg0MS44 OV0vQ29udGVudHNbMTMgMCBSIDE1IDAgUiAxNyAwIFIgMTggMCBSIDE5IDAgUiAyMCAwIFIgMjIg MCBSIDIzIDAgUl0vQ3JvcEJveFswLjAgMC4wIDU5NS4yNzUgODQxLjg5XS9NZWRpYUJveFswLjAg MC4wIDU5NS4yNzUgODQxLjg5XS9QYXJlbnQgNSAwIFIvUmVzb3VyY2VzPDwvRXh0R1N0YXRlPDwv R1MwIDI0IDAgUj4+L0ZvbnQ8PC9DMl8wIDIxIDAgUi9UMV8wIDE0IDAgUi9UMV8xIDE2IDAgUi9U VDAgMTIgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL1Byb3BlcnRpZXM8PC9NQzA8PC9Db2xvclsy MDIyNCAzMjc2OCA2NTUzNV0vRGltbWVkIGZhbHNlL0VkaXRhYmxlIHRydWUvUHJldmlldyB0cnVl L1ByaW50ZWQgdHJ1ZS9UaXRsZShMYXllciAxKS9WaXNpYmxlIHRydWU+Pj4+Pj4vUm90YXRlIDAv VHJpbUJveFswLjAgMC4wIDU5NS4yNzUgODQxLjg5XS9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTIgMCBv YmoNPDwvQmFzZUZvbnQvTkJJU1dCK0hlbHZldGljYU5ldWVMVFN0ZC1CZC9FbmNvZGluZy9XaW5B bnNpRW5jb2RpbmcvRmlyc3RDaGFyIDMyL0ZvbnREZXNjcmlwdG9yIDM4IDAgUi9MYXN0Q2hhciAx ODMvU3VidHlwZS9UcnVlVHlwZS9UeXBlL0ZvbnQvV2lkdGhzWzI3OCAwIDAgMCAwIDAgMCAwIDI5 NiAyOTYgMCAwIDI3OCA0MDcgMjc4IDAgNTU2IDU1NiA1NTYgNTU2IDAgNTU2IDAgMCAwIDAgMjc4 IDAgMCAwIDAgMCAwIDY4NSA3MDQgNzQxIDc0MSA2NDggNTkzIDc1OSA3NDEgMjk1IDU1NiAwIDU5 MyAwIDc0MSA3NzggNjY3IDAgNzIyIDY0OSA2MTEgNzQxIDAgOTQ0IDAgMCAwIDAgMCAwIDAgMCAw IDU3NCA2MTEgNTc0IDYxMSA1NzQgMzMzIDYxMSA1OTMgMjU4IDAgMCAyNTggOTA2IDU5MyA2MTEg NjExIDAgMzg5IDUzNyAzNTIgNTkzIDAgMCA1MzcgNTE5IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMjc4XT4+DWVuZG9iag0x MyAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDYyNj4+c3RyZWFtDQpIiayXTU9V QQyG/0qXkOjQdqadqTsvEhIFv7iu1AXBiySARnCh/972KCMmYmJobvLmzEef05n2dObuHBx/31zB zuEuwurJLgAW0uGKzKG9AsI57OwfIXy89mfvQwIxKdwFRqMyhsHVBk59yDCMwqbwiEdicmuErqO0 JtOu16W5mK3WsLNeIxCsT4HILYnjRfOZUIsqKnArRgLrS3i79XKbcOsgZC/kccjRbELI69lch7yZ fc/nlGXgRcij2bfIgi9ztMyBVcjnkG+zj0NwPtEceMfaZ6OGyJyKc2B/LgCmn19DrkI2ISchZ3Pg wZ8LOJvzYC5vMyf/Hl14FyHHIZ9CPoRcb79fP4W9NXzxKCxbD9yLDhJrw4OGRQ09uB1OLu8K8zNo cAiLtc+Bh9RL88y4gCN4dYtbzblqppLLFXIWG5LmcrU6a5Bpy+V2KR2rWPL2ju5YE6ycyzUrnVrP cRd//c4XawprlsU8rKnfWC856AtprYzqKWnNXyPgLDaK4rG6I2GVwwkxd+pfLt72TpX/lqsmxMht QbLVYSb3QopjGD3ylIbUFlvbEWsasmvp4l8TaxpymB8po1vN85LQDwjrI8KcxqRaRHv1Tz6PyeL5 q8PGyGPWUfxcrMFJYwqW2hWxJ67dOdoEsSXGqMc9oIlpXnqSF04aDVNzyYtmk4rW8mLEfinqzN2t 05Bci5lXJc5LT65aWClOuDxmG0UqsUmin4plIDoqD+l3W1TzStfzmENKrdaQEsNu3o/DK13e6ea5 Xkb3imx5flb2w7x1Qb3vft5cJyjK8X/cJqr/Wfn1fWTdJhyp+rOCORJ+CDAARY+rlg1lbmRzdHJl YW0NZW5kb2JqDTE0IDAgb2JqDTw8L0Jhc2VGb250L01UWU1JRCtUcmFqYW5Qcm8tQm9sZC9FbmNv ZGluZy9XaW5BbnNpRW5jb2RpbmcvRmlyc3RDaGFyIDMyL0ZvbnREZXNjcmlwdG9yIDMzIDAgUi9M YXN0Q2hhciAxNDgvU3VidHlwZS9UeXBlMS9UeXBlL0ZvbnQvV2lkdGhzWzMwMCAwIDAgMCAwIDAg MCAwIDM2MCAzNjAgMCAwIDI1MCA0MjUgMjUwIDU0MiAwIDAgMCAwIDAgNjAwIDAgMCAwIDYwMCAy NTAgMCAwIDAgMCAwIDAgNzAwIDcwNyA4MDAgOTM2IDYzMiA2MjIgODg2IDk3MiA0NTIgNDE2IDc2 OCA2MDUgMTA0MyA5NDcgOTI3IDY1NSAwIDc1NSA1ODIgNzEwIDg1MiA3MjQgMTA4NSA3MTIgNjcw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy MTggMzYwIDM2MF0+Pg1lbmRvYmoNMTUgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0 aCA3NjQ+PnN0cmVhbQ0KSImsVl1vUkEQ/Sv7CA+Mszv7Nb5Rg02sqTXF+GCMwZbGpsVW0MT+e8/e CwskRatuCMPlzp6z873LpOwMUxIIl8ujddacGMZnge/IJorRmVtzbt6ab8Z2GmuCI+c4seBRBEt8 0BjNBTD/Shk9+ayJWZpRpkgpqFMXm1FmJXY5qbSz0rIlpwm+N+S0QiEm0dwuQdYFyhKz5tyOUzJZ jqIa2nEGJkmROTX0PToCDbNvmKPkSW3P04wzJ7LZc9NaUiUfhNW3y5GzlpJzCehmlE5IFVPJtStP J5FctJhzDV33mYJYp6GhnZEpMzttl3WXhDgqJl1qx5kDiahn2zDtivecMel8M07UOuWEiazt7BTn yPoUOP5vPI+mhxA35tl0WjabXpncoTPiYyJO6+wVrxfmw+DFcOQGd0V8LeJ7EbMiLupfU8R9EfMi lkWs9mHPhx+nr8yIib0zI0EzezO9BP24aC+rWFaWVRU9FlB0VQfVHnpWt1jtW3Zbjdoaf1mJezoc ThJ7g9aWbNf+2Pe2s+lhx4s1FknBTWFrypd9l+f7frvO78ihR7ys1v7c89FJt2xj1KQoR0UsKuC6 +lhR3KGCph71vu7/uYZi9tRAW1QLSsTifoV62YbmugZkJxaTaVc35XODW0QkxpTCKPAGfeZFcWrh smLNcm6OMB7tjt6it9O+HmWLnXt9cki4PKaPLLhNJpSqR0WHR5fI4SV/2Q8ZrRRMzBhvYdMTpzWg ixpGU7N/Vf8+7JfUsiouqmJRe2dWK+dQfDfOxT/673OkrP63S0IiDY+zHIyP4NDEnDOCTCdXegC5 sDmWdrKYTkBf9QFmGAhpq+yiaz+tw2t7n/AjjDoJAdSBXIi5j/BrhIAH49Oh5cHxu6GVwfh4cm7O z96UNyeT003pPz2RXikEn4woqrQcU91G45qx5brIpc/ObN3rniTjB26H2pJS8ik94q483Rcx79sH czt2PRl3Jtyqks/qKhjazZ+8s67j3Y6z5e5Mk0pgfgkwAMhhvkoNZW5kc3RyZWFtDWVuZG9iag0x NiAwIG9iag08PC9CYXNlRm9udC9NVFlNSUQrSGVsdmV0aWNhTmV1ZUxUU3RkLVJvbWFuL0VuY29k aW5nIDM0IDAgUi9GaXJzdENoYXIgMzEvRm9udERlc2NyaXB0b3IgMzYgMCBSL0xhc3RDaGFyIDE4 My9TdWJ0eXBlL1R5cGUxL1R5cGUvRm9udC9XaWR0aHNbNTE4IDI3OCAwIDAgMCAwIDAgMCAwIDAg MCAwIDYwMCAyNzggMCAyNzggMzMzIDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDAgNTU2IDU1NiAw IDI3OCAwIDAgMCAwIDAgMCA2NDggNjg1IDcyMiA3MDQgMCA1NzQgNzU5IDAgMjU5IDAgMCA1NTYg ODcxIDcyMiA3NjAgNjQ4IDAgNjg1IDY0OCA1NzQgMCAwIDkyNiA2MTEgMCAwIDAgMCAwIDAgMCAw IDUzNyA1OTMgNTM3IDU5MyA1MzcgMjk2IDU3NCA1NTYgMjIyIDIyMiA1MTkgMjIyIDg1MyA1NTYg NTc0IDU5MyAwIDMzMyA1MDAgMzE1IDU1NiA1MDAgNzU4IDUxOCA1MDAgNDgwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDI3OF0+ Pg1lbmRvYmoNMTcgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxNDE1Pj5zdHJl YW0NCkiJjFbbUuNGEP2C/EM/SikspBmNLvsm24OtLSNckoxDxakUBSbrLMFbBh42X5++jGwZQ3YL ai6tvvfpHrefYaDiQCkNgzxIUgXtPfzuWX+gvSda/qLlkZYNLc/+QHlf/D/azxCpIIpyCEWioa/f aLkllqcPJFSIhsIgDCMR+0xfWeKN7JpOLLtmWfJSZ7gFaWZEdiSaO0PvipGTCZDBRIQuiGsnDJ2t u+OgVMQuxplI1PT1dR8KL5uesyRmW9BKo2s5xFGK6UxhoEMdRFkCyqALBnZreACTxoFB/XEYB1lI 4SgVmDQDnQYmi4Vp2JLDqALXaL/CVzhvoz9DwMw9QBQC/eGmwyDWxkCMdkyWo9P/UG6u/Cj0qras bNWuvGblw3Jqaws3vgq9q0UNyGG8y7lvQq+obqBsoBghpS2v7SeOSaP7OuZUaC2pGJJwXVSkezRd eZb0lhWqLoXEgiEMogCBNEaJj8yxe3NbF36CNm0jJmOJCrcoC3QSZZBmYZAYgiVFtWSxejaG4aLB 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 Rmd3RM/XDe7L26SjrwVUZSMfEQr8Odik4uhBKkM3M7FTXbqJI4cIlelW4fc4RUPM4Kv7AMUpnF/o mrFnGZ1UGuHpCdnzbsa1FLc58bt6MAdE52m/q8bwhEwZJDNPh76vBm1GiubODG6WZF9+bfAQpihB cKLLYP5qcudlztXYbEejpbui0TiATkwcdUa37yCOGkli34wi8uZSyQmK+IaMEc3fvNdGoJHfCMxy v/CibuMdailUox9sBAv47MDmun42MqtCvn3c2fCTo/P5NmeD51CfH1+rb3tecG7t92tOc/WnMoaP Hz7lh5NioAgHIqg//AsGeLzv/LMDA7TDxrE0n4DmE+a8o3//TVDNsmfWmc0MjMImVnSb1yjsBOTj GQazjAyE1OnQTj+6n03gNBaSZ6DLwqBwjKpkt5g0Kt1GoJxSWWUuOuvfgZyjyMpW4ax+0RAjsg44 fzoJZP8zwQmdT+js5Nm+YCx883THcILCqRj5f28YKeugcdbBSEZ7prOdYKzp1mB8CMxkHZ/vhBS0 9nAPkwZJ0MDgHxNMXOUEOTZ9Kjn8rFX+CYKZ5gAP5vVHgAEAbIaGBw1lbmRzdHJlYW0NZW5kb2Jq DTIxIDAgb2JqDTw8L0Jhc2VGb250L09KU1lLWitIZWx2ZXRpY2FOZXVlTFRTdGQtQmQvRGVzY2Vu ZGFudEZvbnRzIDMwIDAgUi9FbmNvZGluZy9JZGVudGl0eS1IL1N1YnR5cGUvVHlwZTAvVG9Vbmlj b2RlIDMxIDAgUi9UeXBlL0ZvbnQ+Pg1lbmRvYmoNMjIgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVj b2RlL0xlbmd0aCAxNDM4Pj5zdHJlYW0NCkiJbFbbchw1EP0C/kGPa/Aquo/EmxM7wVTIzUtBFaao rcmYLFnvmvG6IHw9p7sl7RbFy4zOdE+rr0daBu2zVYP2wall0C4wwKel16WDUS2dzrnLrE6OgXME XF1CzejYJU2dtLshslMBtmNdB3HU3liV+O8RKCdCNtAzYR21dW3t9cCmBDntsTLQNPAYRg0U4ccg dmAVvkMwaEuuBz1AnrXHr8uoSyJLRQeSQYXcNvDFESLHgJIgiRA4O8EktdpUKQVqtU0djYS9O5UG 0Q3hFMXgRLfiwbBdJ5aGILs42xC5a49wi2CM6RD2BCSApIvERb5Swvg/fDWUUZ9aBqjwlJrA2fdw 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 zg3llddZF4fMbVO7KIvBS7TbAhYQK1FA2cKXonkBbCiaLPxc3K8TmoRov1oDmgNaAs7soq63ReN7 5BQYlzE9xfCENbx5Kz/1K4X77YqDSgxLYmPcxmVEamid/sC5EpzrGf4t/iXnRnvMFed2Fr7NvKzP 8f+Tx8YgTvdcHeMYQkP4MoxpP0ayOfDjdK2XzfmPmMh+bWvcSeNhNbqWhmaWHVbve7dmJbNS7El3 N7+9n8HF7fzd9eV8Dle372aXfm3jxmf3vF/YDYOL+k+QHNXvpY1x++Icrs7htmuKxaojLcVifhAB bS/XBS1mXGTLlhiXGR4EuPlpwZIUTEonAW60QcaN7Q4q4OG3BqklE3g2DKepO1HUwcFygVua8Zz+ 8DnB0Ymj+CPMBIqGwHSU3tUxRx1xelfylCvxijPiawj5KC19KuR/QzmKxhxRhgIecfRJjjzFCVnJ lAnsuVSKcZ6CTCRLxXHi7pjjLOUSn3iYcYYsfAqcMOuDadoff2jSJhak0a4wuKY+RjeTqYg63GWi FaGCUEOIdp7oPT1yEit6PJG4I5QPotNoB437iOCW4GYw6NjtwIZBZTuMLehR0tgjoRdC9xO3G/3H GaysO+RB4UVHGsw6XCkOK9dzZIr3AGvHOXHMbKzHOcYwhbUf5VAn05OUcF953S/sUxrj5UilFqeL Mb5j11SfejJV1Cc59E5RWVV0TuLzUNYmlFX5Auf/p6B4V2QGp64QnNmULm2YkbF42TOcJdL6HMId E1m4kQn5D6yhOdayRI8XTGnNMOlTlMsPbwGrBn8LMACL5skjDWVuZHN0cmVhbQ1lbmRvYmoNMjQg MCBvYmoNPDwvQUlTIGZhbHNlL0JNL05vcm1hbC9DQSAxLjAvT1AgZmFsc2UvT1BNIDEvU0EgdHJ1 ZS9TTWFzay9Ob25lL1R5cGUvRXh0R1N0YXRlL2NhIDEuMC9vcCBmYWxzZT4+DWVuZG9iag0yNSAw IG9iag08PC9PcmRlcmluZyhJZGVudGl0eSkvUmVnaXN0cnkoQWRvYmUpL1N1cHBsZW1lbnQgMD4+ DWVuZG9iag0yNiAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDExPj5zdHJlYW0N CkiJagAIMAAAgQCBDWVuZHN0cmVhbQ1lbmRvYmoNMjcgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVj 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 IDI2IDAgUi9DYXBIZWlnaHQgNzE0L0Rlc2NlbnQgLTI5My9GbGFncyA0L0ZvbnRCQm94Wy0xNjYg LTI5MyAxMDc4IDk3NV0vRm9udEZhbWlseShIZWx2ZXRpY2FOZXVlTFQgU3RkKS9Gb250RmlsZTIg MjcgMCBSL0ZvbnROYW1lL09KU1lLWitIZWx2ZXRpY2FOZXVlTFRTdGQtQmQvRm9udFN0cmV0Y2gv Tm9ybWFsL0ZvbnRXZWlnaHQgNzAwL0l0YWxpY0FuZ2xlIDAvU3RlbVYgMTQ0L1R5cGUvRm9udERl c2NyaXB0b3IvWEhlaWdodCA1MTc+Pg1lbmRvYmoNMjkgMCBvYmoNPDwvQmFzZUZvbnQvT0pTWUta K0hlbHZldGljYU5ldWVMVFN0ZC1CZC9DSURTeXN0ZW1JbmZvIDI1IDAgUi9DSURUb0dJRE1hcC9J ZGVudGl0eS9EVyAxMDAwL0ZvbnREZXNjcmlwdG9yIDI4IDAgUi9TdWJ0eXBlL0NJREZvbnRUeXBl Mi9UeXBlL0ZvbnQvV1szWzI3OF00OVs2NjddNjZbNTc0XTY4WzU3NF03MFs1NzQgMzMzXTczWzU5 MyAyNThdNzdbMjU4IDkwNiA1OTNdODAgODEgNjExIDgzWzM4OSA1MzcgMzUyXTkwWzUxOV0xMDlb NjExXV0+Pg1lbmRvYmoNMzAgMCBvYmoNWzI5IDAgUl0NZW5kb2JqDTMxIDAgb2JqDTw8L0ZpbHRl ci9GbGF0ZURlY29kZS9MZW5ndGggMzExPj5zdHJlYW0NCkiJXNLNaoNAEAfwu08xx+YQVk3UBERI kwge+kFtH8DsjqlQ12U1B9++6/5DCl1Q+DE7zjCjOFanSncTiXc7yJonajutLI/DzUqmC187HUQx qU5Od/m37BsTCJdcz+PEfaXbIchzEh8uOE52pqeDGi68CsSbVWw7faWnr2O9IlHfjPnhnvVEIRUF KW7dh14a89r0TMKnrSvl4t00r13O343P2TDF3hGakYPi0TSSbaOvHOShOwXlpTtFwFr9i0c7pF1a +d1Yf33jrodhHBaLNpFXAm1jrzSCttAGSqEEyqAU2kM76ADtoRN0hM7QCSqhs1cSQiWEzjJ0lqDr LIbQWYbOkgTaQqieoXq6VC+fw8gP5z6FZUxum/TYgbxZ68bvV+7nvky80/z4K8xgyGUtT/ArwABu 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 NzUwL0NoYXJTZXQoL3NwYWNlL3BhcmVubGVmdC9wYXJlbnJpZ2h0L2NvbW1hL2h5cGhlbi9wZXJp b2Qvc2xhc2gvZml2ZS9uaW5lL2NvbG9uL0EvQi9DL0QvRS9GL0cvSC9JL0ovSy9ML00vTi9PL1Av Ui9TL1QvVS9WL1cvWC9ZL3F1b3RlcmlnaHQvcXVvdGVkYmxsZWZ0L3F1b3RlZGJscmlnaHQpL0Rl c2NlbnQgLTI4NC9GbGFncyAxMzExMDYvRm9udEJCb3hbLTI0OCAtMjg0IDE1MjggOTg1XS9Gb250 RmFtaWx5KFRyYWphbiBQcm8pL0ZvbnRGaWxlMyAzMiAwIFIvRm9udE5hbWUvTVRZTUlEK1RyYWph blByby1Cb2xkL0ZvbnRTdHJldGNoL05vcm1hbC9Gb250V2VpZ2h0IDcwMC9JdGFsaWNBbmdsZSAw L1N0ZW1WIDEyMC9UeXBlL0ZvbnREZXNjcmlwdG9yL1hIZWlnaHQgNjQwPj4NZW5kb2JqDTM0IDAg b2JqDTw8L0Jhc2VFbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRGlmZmVyZW5jZXNbMzEvZl9pXS9U eXBlL0VuY29kaW5nPj4NZW5kb2JqDTM1IDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5n dGggMzczOS9TdWJ0eXBlL1R5cGUxQz4+c3RyZWFtDQpIiVxUDVBTVxZ+z0duAsagZF+0xCZPGrQg Kj+K+EcFVBBBWXWttC4Sk6gRSGgSglCtrEsVDdFqZ3d1/Vk7rTLb7eyWZWxpi3XRxfqzLEXZCD7U UA06WX+6Vve8eLKze4MzO7M7b+ace+6758x3vvPdyzJRoxiWZYXi1aXFSxdNLbBUui0uq8m43FJj KVq9ymWettJeZbRFzuiliaw0IUp6WcnjXNzy/OLzIhk8iZWEcS0Tx16JYzhaiYlinrPyjeutefbq Ood102aXkDYnKyuF2jmpIzYjRUhPTU0XRlxGjtm+wSKsqnO6LFVOYanNZHdU2x1Gl8U8XciprBRW Rko4hZUWp8Xhjmz+F6BgdQpGYbXDaLZUGR0Vgn0j/Wc1Wyo3WBybLA5hkaPGVFFldJo2W20Wm5CT L1i2miprnFa3pbJOqLSaLDanxSy4NjvsNZs2C0VWm91VV22hiw0Oo6NOyK/aUJAiGG1mocpYJ1CQ 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 OM1tcFDEkJs4B+Ig7ibMgRAIjabVIQ7jonEOhsrOQLAODoyPDyajFeclJUdGJg3APJpYTC6GTLrJ AOYd2Rv/f2R1u54vqtC8m/3EuDLBPUApxHpCluEkZN2q0N9NsMoYPHrhGvxCdvIRe17csCHOl862 g4nARHtp67Sa6IQyNdVJdD5+GmJFDKi7vR58pXvAd4D/ndiTMU02YXhJ05MHuoM+/2vDZxcvF6ft ozUWrFVPtCGTnrS/vHCRumWslOheLR2rSAtKTypfk5x2YmgXrWcttJibFZObWifdE01DHxG1/Hsc ZaFntn0vX1E2UiPVn7XB1SnFztMymW+0zYO6dGoVRrNhJwvPTrGnv/JRjwxTMeji0fzxUph/9fKp 3jaZaKI0foTQ1H6XPuPboL0ubNXKyDOSkOICPclg/mAtiQtlsFpv4P5OfbWsdgIG/kmqccRTILR7 ttHpKJovPcE4O0tL4MLZQq/hR0YYg6fI8RYT+qe1CFKMe3oE52SWFFLbT4pPFkNliXW/tkvo3B84 xcAOm8GOmzkwMVwPrZAClVwwQxHT8BFI49DEhGFaCao5SzS+ouQWe/JKrH/QSoX2GbikjsHel0Po 5RAG+frBgiiuaHtpWYFUVlZft90mbF3KC+1VTc3VzdLQmfa7Z22Wx7xZPqalmo8FaqkKfsugXwvg LuuO5dDJ4xV9rvEPEGohwKRAgFmBXrHwVNGZD061tv6p6FRhYdGvC2QDD5GeazpVIc6DNFVwP6Q9 mptB/j+Yz03Md+N/mU9wwzQsEadjFvKqfl8kGtEbeEvZEU/uEdx8iMF79Xfq9YlDvPIzdY7WFaCN if8WYABopmZVDWVuZHN0cmVhbQ1lbmRvYmoNMzYgMCBvYmoNPDwvQXNjZW50IDk1Mi9DYXBIZWln aHQgNzE0L0NoYXJTZXQoL2ZfaS9zcGFjZS9wbHVzL2NvbW1hL3BlcmlvZC9zbGFzaC96ZXJvL29u ZS90d28vdGhyZWUvZm91ci9maXZlL3NldmVuL2VpZ2h0L2NvbG9uL0EvQi9DL0QvRi9HL0kvTC9N L04vTy9QL1IvUy9UL1cvWC9hL2IvYy9kL2UvZi9nL2gvaS9qL2svbC9tL24vby9wL3Ivcy90L3Uv di93L3gveS96L3BlcmlvZGNlbnRlcmVkKS9EZXNjZW50IC0yMTQvRmxhZ3MgMzIvRm9udEJCb3hb LTE2NiAtMjE0IDEwNzYgOTUyXS9Gb250RmFtaWx5KEhlbHZldGljYU5ldWVMVCBTdGQpL0ZvbnRG aWxlMyAzNSAwIFIvRm9udE5hbWUvTVRZTUlEK0hlbHZldGljYU5ldWVMVFN0ZC1Sb21hbi9Gb250 U3RyZXRjaC9Ob3JtYWwvRm9udFdlaWdodCA0MDAvSXRhbGljQW5nbGUgMC9TdGVtViA4NC9UeXBl L0ZvbnREZXNjcmlwdG9yL1hIZWlnaHQgNTE3Pj4NZW5kb2JqDTM3IDAgb2JqDTw8L0ZpbHRlci9G bGF0ZURlY29kZS9MZW5ndGggODkyMS9MZW5ndGgxIDE2NTgyPj5zdHJlYW0NCkiJdFYJWFTXFf7v ezOMoCwDg8ug43szwzrsMIJGES2g0aooLkxaDURxQVFccclCkyYxoyVrk5Rqm7Z2kdg4aYwdRA1p EhdsGxutWTSDidEmbZq2KV3y+cH0f2/GiVozfJd37rn3nv/cc/5z74UAEItWyKieVZNXuG1U4hpq LrDVLW6qb+4r/bQFEOMBw/2LN21QREvMnYDxKMfTljYva4ry7Cph/yPOWb9s1ZalpiMHhwOmBUD2 geUN9Ut6rxY+DRQP5vwxy6kwpcqvsj+Jfefypg2bS6yjuthvoH3nqjWL6zMvuQ8ApY8AkqWpfnOz rEjLgXG7OV9ZXd/UsLqzLZP9I8RsaV6zfkPQj0KgvFgbb17X0HzJc8rC/lz210EWAekwjDBIXqmW mumhr1iEQjGGCIMHGSTtZ2gF9pdDmYbwb1LF5EooUK5KUs/Ahzghv4n3qJa1Mcko9WhjMGgdCH2B hWOURABRokfzBReJbhAyZxkRBROWIxoxGIwhjHYc4pEAMxKRxJXJGIphGI4RsCIFIzEKNoymBRV2 OOBEKtKQjgxkIgsuZCMHuchDPgq48yIUw40xKEEpxmIcbsN4TEAZJqIcd2MyvoYKVKIKUzAVt2Ma puPrmIGZmIVqzMYc1GAu5mE+FqAWHtyBb+CbWIhFYI7xS+zHi/gVDuEIXsMJnMJJ9OB3+C1+jzfx Fk7jDziDcziLP+JtvIPzeJdRuoAAPkAv99+MH6Eed2EpNmA9voufogPfwz14AH3w4jv4B3bhX/g3 luBZfIrP8Fd8jM+xA4/iCh7Dk9iGOjyDv6MB/8RlNGIztuC/eAE+vII2PIU1eAQr0IJJGIQf4j+4 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 fcAPR6MO+hgfUkmyQ5hTGjOXwLTT49SCo0wcZus6LuFDum2VhC7BrQdnGoUD6pKRxKuwUoLYlfh8 xzowkRp5yW0Z/lOAAQA2uVTdDWVuZHN0cmVhbQ1lbmRvYmoNMzggMCBvYmoNPDwvQXNjZW50IDk3 NS9DYXBIZWlnaHQgNzE0L0Rlc2NlbnQgLTI5My9GbGFncyAzMi9Gb250QkJveFstMTY2IC0yOTMg MTA3OCA5NzVdL0ZvbnRGYW1pbHkoSGVsdmV0aWNhTmV1ZUxUIFN0ZCkvRm9udEZpbGUyIDM3IDAg Ui9Gb250TmFtZS9OQklTV0IrSGVsdmV0aWNhTmV1ZUxUU3RkLUJkL0ZvbnRTdHJldGNoL05vcm1h bC9Gb250V2VpZ2h0IDcwMC9JdGFsaWNBbmdsZSAwL1N0ZW1WIDE0NC9UeXBlL0ZvbnREZXNjcmlw dG9yL1hIZWlnaHQgNTE3Pj4NZW5kb2JqDTEgMCBvYmoNW10NZW5kb2JqDTIgMCBvYmoNPDwvQmFz ZUZvbnQvSGVsdmV0aWNhL0VuY29kaW5nIDQgMCBSL05hbWUvSGVsdi9TdWJ0eXBlL1R5cGUxL1R5 cGUvRm9udD4+DWVuZG9iag0zIDAgb2JqDTw8L0Jhc2VGb250L1phcGZEaW5nYmF0cy9OYW1lL1ph RGIvU3VidHlwZS9UeXBlMS9UeXBlL0ZvbnQ+Pg1lbmRvYmoNNCAwIG9iag08PC9EaWZmZXJlbmNl c1syNC9icmV2ZS9jYXJvbi9jaXJjdW1mbGV4L2RvdGFjY2VudC9odW5nYXJ1bWxhdXQvb2dvbmVr L3JpbmcvdGlsZGUgMzkvcXVvdGVzaW5nbGUgOTYvZ3JhdmUgMTI4L2J1bGxldC9kYWdnZXIvZGFn Z2VyZGJsL2VsbGlwc2lzL2VtZGFzaC9lbmRhc2gvZmxvcmluL2ZyYWN0aW9uL2d1aWxzaW5nbGxl ZnQvZ3VpbHNpbmdscmlnaHQvbWludXMvcGVydGhvdXNhbmQvcXVvdGVkYmxiYXNlL3F1b3RlZGJs bGVmdC9xdW90ZWRibHJpZ2h0L3F1b3RlbGVmdC9xdW90ZXJpZ2h0L3F1b3Rlc2luZ2xiYXNlL3Ry YWRlbWFyay9maS9mbC9Mc2xhc2gvT0UvU2Nhcm9uL1lkaWVyZXNpcy9aY2Fyb24vZG90bGVzc2kv bHNsYXNoL29lL3NjYXJvbi96Y2Fyb24gMTYwL0V1cm8gMTY0L2N1cnJlbmN5IDE2Ni9icm9rZW5i YXIgMTY4L2RpZXJlc2lzL2NvcHlyaWdodC9vcmRmZW1pbmluZSAxNzIvbG9naWNhbG5vdC8ubm90 ZGVmL3JlZ2lzdGVyZWQvbWFjcm9uL2RlZ3JlZS9wbHVzbWludXMvdHdvc3VwZXJpb3IvdGhyZWVz dXBlcmlvci9hY3V0ZS9tdSAxODMvcGVyaW9kY2VudGVyZWQvY2VkaWxsYS9vbmVzdXBlcmlvci9v cmRtYXNjdWxpbmUgMTg4L29uZXF1YXJ0ZXIvb25laGFsZi90aHJlZXF1YXJ0ZXJzIDE5Mi9BZ3Jh dmUvQWFjdXRlL0FjaXJjdW1mbGV4L0F0aWxkZS9BZGllcmVzaXMvQXJpbmcvQUUvQ2NlZGlsbGEv RWdyYXZlL0VhY3V0ZS9FY2lyY3VtZmxleC9FZGllcmVzaXMvSWdyYXZlL0lhY3V0ZS9JY2lyY3Vt ZmxleC9JZGllcmVzaXMvRXRoL050aWxkZS9PZ3JhdmUvT2FjdXRlL09jaXJjdW1mbGV4L090aWxk ZS9PZGllcmVzaXMvbXVsdGlwbHkvT3NsYXNoL1VncmF2ZS9VYWN1dGUvVWNpcmN1bWZsZXgvVWRp ZXJlc2lzL1lhY3V0ZS9UaG9ybi9nZXJtYW5kYmxzL2FncmF2ZS9hYWN1dGUvYWNpcmN1bWZsZXgv YXRpbGRlL2FkaWVyZXNpcy9hcmluZy9hZS9jY2VkaWxsYS9lZ3JhdmUvZWFjdXRlL2VjaXJjdW1m bGV4L2VkaWVyZXNpcy9pZ3JhdmUvaWFjdXRlL2ljaXJjdW1mbGV4L2lkaWVyZXNpcy9ldGgvbnRp bGRlL29ncmF2ZS9vYWN1dGUvb2NpcmN1bWZsZXgvb3RpbGRlL29kaWVyZXNpcy9kaXZpZGUvb3Ns YXNoL3VncmF2ZS91YWN1dGUvdWNpcmN1bWZsZXgvdWRpZXJlc2lzL3lhY3V0ZS90aG9ybi95ZGll cmVzaXNdL1R5cGUvRW5jb2Rpbmc+Pg1lbmRvYmoNNSAwIG9iag08PC9Db3VudCAxL0tpZHNbMTEg MCBSXS9UeXBlL1BhZ2VzPj4NZW5kb2JqDTYgMCBvYmoNPDwvTGVuZ3RoIDMxMTQvU3VidHlwZS9Y TUwvVHlwZS9NZXRhZGF0YT4+c3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBN cENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEv IiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA0LjIuMS1jMDQxIDUyLjM0Mjk5NiwgMjAwOC8wNS8w Ny0yMTozNzoxOSAgICAgICAgIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3Lncz Lm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiBy ZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hh cC8xLjAvIj4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMDktMDQtMjFUMTA6MTM6NDQrMDM6 MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAwOS0wNC0yMVQx MDoxMzo0NCswMzowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRl PjIwMDktMDQtMjFUMTA6MTM6NDQrMDM6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgIDwvcmRm OkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAg ICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAg ICA8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0PgogICAgICA8L3JkZjpEZXNj cmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAg eG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iPgogICAgICAgICA8 eG1wTU06RG9jdW1lbnRJRD51dWlkOmNiYzA4YzE2LWVmNGItYjg0Zi1hNzY0LTA2YzM2ZWZlMGM4 MDwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+dXVpZDozYzNm YzcyYy1hMzlmLTA4NGEtOWRlMC0xYzNlYjcxNTMzYWE8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAg IDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAg 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 ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9 InciPz4NZW5kc3RyZWFtDWVuZG9iag03IDAgb2JqDTw8L0NyZWF0aW9uRGF0ZShEOjIwMDkwNDIx MTAxMzQ0KzAzJzAwJykvTW9kRGF0ZShEOjIwMDkwNDIxMTAxMzQ0KzAzJzAwJyk+Pg1lbmRvYmoN eHJlZg0wIDgNMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDM4NjcxIDAwMDAwIG4NCjAwMDAwMzg2 ODkgMDAwMDAgbg0KMDAwMDAzODc3NyAwMDAwMCBuDQowMDAwMDM4ODUzIDAwMDAwIG4NCjAwMDAw NDAwNDQgMDAwMDAgbg0KMDAwMDA0MDA5NiAwMDAwMCBuDQowMDAwMDQzMjg2IDAwMDAwIG4NCnRy YWlsZXINPDwvU2l6ZSA4L0lEWzw1MzY3Q0REMDE5ODQ0MThGQTlEQTY5RUREOEE4OEYwRT48MkRD NjhGNjE1NTc4NDdBRkIwOEU2M0VEQUQ1OTIzM0U+XT4+DXN0YXJ0eHJlZg0xMTYNJSVFT0YNNiAw IG9iag08PC9MZW5ndGggMzExNC9TdWJ0eXBlL1hNTC9UeXBlL01ldGFkYXRhPj5zdHJlYW0NCjw/ eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4Onht cG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQu Mi4xLWMwNDEgNTIuMzQyOTk2LCAyMDA4LzA1LzA3LTIwOjQ4OjAwICAgICAgICAiPgogICA8cmRm OlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1u cyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxu czp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eG1wOk1vZGlm eURhdGU+MjAwOS0wNC0yNlQxOTowNzozNyswMjowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAg IDx4bXA6Q3JlYXRlRGF0ZT4yMDA5LTA0LTIxVDEwOjEzOjQ0KzAzOjAwPC94bXA6Q3JlYXRlRGF0 ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAwOS0wNC0yNlQxOTowNzozNyswMjowMDwv eG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVz Y3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5v cmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+YXBwbGljYXRpb24vcGRm PC9kYzpmb3JtYXQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0 aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2Jl LmNvbS94YXAvMS4wL21tLyI+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPnV1aWQ6Y2JjMDhj MTYtZWY0Yi1iODRmLWE3NjQtMDZjMzZlZmUwYzgwPC94bXBNTTpEb2N1bWVudElEPgogICAgICAg ICA8eG1wTU06SW5zdGFuY2VJRD51dWlkOjExOWJmZjcxLTQ3MTYtNDMwZC05YTk2LTc4ZDNjZmY4 M2IwYzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRm OlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 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 ICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pg0KZW5kc3RyZWFtDWVuZG9iag03IDAg b2JqDTw8L0NyZWF0aW9uRGF0ZShEOjIwMDkwNDIxMTAxMzQ0KzAzJzAwJykvTW9kRGF0ZShEOjIw MDkwNDI2MTkwNzM3KzAyJzAwJyk+Pg1lbmRvYmoNMTAgMCBvYmoNPDwvREEoL0hlbHYgMCBUZiAw IGcgKS9EUjw8L0VuY29kaW5nPDwvUERGRG9jRW5jb2RpbmcgNCAwIFI+Pi9Gb250PDwvQ291ciA0 MCAwIFIvSGVsdiAyIDAgUi9aYURiIDMgMCBSPj4+Pi9GaWVsZHMgMSAwIFI+Pg1lbmRvYmoNMTEg MCBvYmoNPDwvQW5ub3RzIDQxIDAgUi9BcnRCb3hbMC4wIDAuMDAwOTc2NTYyIDU5NS4yNzUgODQx Ljg5XS9CbGVlZEJveFswLjAgMC4wIDU5NS4yNzUgODQxLjg5XS9Db250ZW50c1sxMyAwIFIgMTUg MCBSIDE3IDAgUiAxOCAwIFIgMTkgMCBSIDIwIDAgUiAyMiAwIFIgMjMgMCBSXS9Dcm9wQm94WzAu MCAwLjAgNTk1LjI3NSA4NDEuODldL01lZGlhQm94WzAuMCAwLjAgNTk1LjI3NSA4NDEuODldL1Bh cmVudCA1IDAgUi9SZXNvdXJjZXM8PC9FeHRHU3RhdGU8PC9HUzAgMjQgMCBSPj4vRm9udDw8L0My XzAgMjEgMCBSL1QxXzAgMTQgMCBSL1QxXzEgMTYgMCBSL1RUMCAxMiAwIFI+Pi9Qcm9jU2V0Wy9Q REYvVGV4dF0vUHJvcGVydGllczw8L01DMDw8L0NvbG9yWzIwMjI0IDMyNzY4IDY1NTM1XS9EaW1t ZWQgZmFsc2UvRWRpdGFibGUgdHJ1ZS9QcmV2aWV3IHRydWUvUHJpbnRlZCB0cnVlL1RpdGxlKExh eWVyIDEpL1Zpc2libGUgdHJ1ZT4+Pj4+Pi9Sb3RhdGUgMC9UcmltQm94WzAuMCAwLjAgNTk1LjI3 NSA4NDEuODldL1R5cGUvUGFnZT4+DWVuZG9iag00MCAwIG9iag08PC9CYXNlRm9udC9Db3VyaWVy L0VuY29kaW5nIDQgMCBSL05hbWUvQ291ci9TdWJ0eXBlL1R5cGUxL1R5cGUvRm9udD4+DWVuZG9i ag00MSAwIG9iag1bNDIgMCBSIDQzIDAgUiA0NCAwIFIgNDUgMCBSIDQ2IDAgUiA0NyAwIFIgNDgg MCBSIDQ5IDAgUiA1MCAwIFIgNTEgMCBSXQ1lbmRvYmoNNDIgMCBvYmoNPDwvQVA8PC9OIDcxIDAg Uj4+L0JTIDcwIDAgUi9DcmVhdGlvbkRhdGUoRDoyMDA5MDQyNjE5MDMxMCswMicwMCcpL0RBKDE2 LjI1IFRMIC9Db3VyIDEyIFRmKS9EUyhmb250OiBDb3VyaWVyIDEyLjBwdDsgdGV4dC1hbGlnbjps ZWZ0OyBjb2xvcjojMDAwMDAwICkvRiA0L0lUL0ZyZWVUZXh0VHlwZXdyaXRlci9NKEQ6MjAwOTA0 MjYxOTAzMTIrMDInMDAnKS9OTSg3NmI1MWMyYS01OGNiLTQ3MzMtYTFlNy0wODJkMDU0MmY3NGYp L1AgMTEgMCBSL1JEWzAuNSAwLjUgMC41IDAuNV0vUmVjdFsyNTIuMDgxIDUuNTE4MzQgMjY3LjQ4 MSAxOC41MTgzXS9TdWJqKFNjaHJlaWJtYXNjaGluZW50ZXh0KS9TdWJ0eXBlL0ZyZWVUZXh0L1Qo WFRSRU1FKS9UeXBlL0Fubm90Pj4NZW5kb2JqDTQzIDAgb2JqDTw8L0FQPDwvTiA2OSAwIFI+Pi9C UyA2OCAwIFIvQ3JlYXRpb25EYXRlKEQ6MjAwOTA0MjYxOTAzMTIrMDInMDAnKS9EQSgxMSBUTCAv Q291ciA4IFRmKS9EUyhmb250OiBDb3VyaWVyIDguMHB0OyB0ZXh0LWFsaWduOmxlZnQ7IGNvbG9y OiMwMDAwMDAgKS9GIDQvSVQvRnJlZVRleHRUeXBld3JpdGVyL00oRDoyMDA5MDQyNjE5MDYxOCsw MicwMCcpL05NKGNiZGQxMTNiLTE2M2ItNDEyNy04ZWZjLTRmMjVmNjBjOTBmYSkvUCAxMSAwIFIv UkRbMC41IDAuNSAwLjUgMC41XS9SZWN0WzI5MS45NCA1LjA1MzU5IDMzNi4xNSAxOC45NTE2XS9T dWJqKFNjaHJlaWJtYXNjaGluZW50ZXh0KS9TdWJ0eXBlL0ZyZWVUZXh0L1QoWFRSRU1FKS9UeXBl L0Fubm90Pj4NZW5kb2JqDTQ0IDAgb2JqDTw8L0FQPDwvTiA2NyAwIFI+Pi9CUyA2NiAwIFIvQ3Jl YXRpb25EYXRlKEQ6MjAwOTA0MjYxOTAzMTIrMDInMDAnKS9EQSgxNi4yNSBUTCAvQ291ciAxMiBU ZikvRFMoZm9udDogQ291cmllciAxMi4wcHQ7IHRleHQtYWxpZ246bGVmdDsgY29sb3I6IzAwMDAw MCApL0YgNC9JVC9GcmVlVGV4dFR5cGV3cml0ZXIvTShEOjIwMDkwNDI2MTkwMzEzKzAyJzAwJykv Tk0oNWIyODhhM2YtNzEzNS00MGYyLWE0NWYtMjQ0OGMzNmNlMmQxKS9QIDExIDAgUi9SRFswLjUg MC41IDAuNSAwLjVdL1JlY3RbMjc1LjQ3NyAyMC42ODE5IDI5MC44NzcgMzMuNjgxOV0vU3ViaihT Y2hyZWlibWFzY2hpbmVudGV4dCkvU3VidHlwZS9GcmVlVGV4dC9UKFhUUkVNRSkvVHlwZS9Bbm5v dD4+DWVuZG9iag00NSAwIG9iag08PC9BUDw8L04gNjUgMCBSPj4vQlMgNjQgMCBSL0NyZWF0aW9u RGF0ZShEOjIwMDkwNDI2MTkwNDA5KzAyJzAwJykvREEoMTYuMjUgVEwgL0NvdXIgMTIgVGYpL0RT KGZvbnQ6IENvdXJpZXIgMTIuMHB0OyB0ZXh0LWFsaWduOmxlZnQ7IGNvbG9yOiMwMDAwMDAgKS9G IDQvSVQvRnJlZVRleHRUeXBld3JpdGVyL00oRDoyMDA5MDQyNjE5MDU1NCswMicwMCcpL05NKDA1 NjY4Mzc1LTE2MTQtNDQwYi05MWMxLWYxM2FlNjQ5NjdjYikvUCAxMSAwIFIvUkRbMC41IDAuNSAw LjUgMC41XS9SZWN0WzMxNi4yMDIgOS44NTA3OCAzMzEuNjAyIDIyLjg1MDhdL1N1YmooU2NocmVp Ym1hc2NoaW5lbnRleHQpL1N1YnR5cGUvRnJlZVRleHQvVChYVFJFTUUpL1R5cGUvQW5ub3Q+Pg1l bmRvYmoNNDYgMCBvYmoNPDwvQVA8PC9OIDYzIDAgUj4+L0JTIDYyIDAgUi9DcmVhdGlvbkRhdGUo RDoyMDA5MDQyNjE5MDQ1MCswMicwMCcpL0RBKDEyLjI1IFRMIC9Db3VyIDkgVGYpL0RTKGZvbnQ6 IENvdXJpZXIgOS4wcHQ7IHRleHQtYWxpZ246bGVmdDsgY29sb3I6IzAwMDAwMCApL0YgNC9JVC9G cmVlVGV4dFR5cGV3cml0ZXIvTShEOjIwMDkwNDI2MTkwNDUzKzAyJzAwJykvTk0oNjM1YjE2Zjkt MjYwZi00ODNiLWFjMTQtMjE1NmM4YTRkNjNlKS9QIDExIDAgUi9SRFswLjUgMC41IDAuNSAwLjVd L1JlY3RbMjgyLjQwOSAzLjM1MjEzIDI5Ny44MDkgMTYuMzUyMV0vU3ViaihTY2hyZWlibWFzY2hp bmVudGV4dCkvU3VidHlwZS9GcmVlVGV4dC9UKFhUUkVNRSkvVHlwZS9Bbm5vdD4+DWVuZG9iag00 NyAwIG9iag08PC9BUDw8L04gNjEgMCBSPj4vQlMgNjAgMCBSL0NyZWF0aW9uRGF0ZShEOjIwMDkw NDI2MTkwNTA5KzAyJzAwJykvREEoMTIuMjUgVEwgL0NvdXIgOSBUZikvRFMoZm9udDogQ291cmll ciA5LjBwdDsgdGV4dC1hbGlnbjpsZWZ0OyBjb2xvcjojMDAwMDAwICkvRiA0L0lUL0ZyZWVUZXh0 VHlwZXdyaXRlci9NKEQ6MjAwOTA0MjYxOTA1MTArMDInMDAnKS9OTSgyMTc2ZjliMi1lNzdkLTQz MjEtYmYxNy1lNmRjMjU0MzRjYWEpL1AgMTEgMCBSL1JEWzAuNSAwLjUgMC41IDAuNV0vUmVjdFsy OTYuNzA2IDEwLjcxNzMgMzEyLjEwNiAyMy43MTczXS9TdWJqKFNjaHJlaWJtYXNjaGluZW50ZXh0 KS9TdWJ0eXBlL0ZyZWVUZXh0L1QoWFRSRU1FKS9UeXBlL0Fubm90Pj4NZW5kb2JqDTQ4IDAgb2Jq DTw8L0FQPDwvTiA1OSAwIFI+Pi9CUyA1OCAwIFIvQ3JlYXRpb25EYXRlKEQ6MjAwOTA0MjYxOTA1 NTArMDInMDAnKS9EQSgxMi4yNSBUTCAvQ291ciA5IFRmKS9EUyhmb250OiBDb3VyaWVyIDkuMHB0 OyB0ZXh0LWFsaWduOmxlZnQ7IGNvbG9yOiMwMDAwMDAgKS9GIDQvSVQvRnJlZVRleHRUeXBld3Jp dGVyL00oRDoyMDA5MDQyNjE5MDU1NyswMicwMCcpL05NKDVlN2I4ODY4LTljYWYtNDY3ZS05MWYz LWI3ZTZhYTFhNWQwMikvUCAxMSAwIFIvUkRbMC41IDAuNSAwLjUgMC41XS9SZWN0WzI4OC45MDcg Ny42ODQ1NyAzMDQuMzA3IDIwLjY4NDZdL1N1YmooU2NocmVpYm1hc2NoaW5lbnRleHQpL1N1YnR5 cGUvRnJlZVRleHQvVChYVFJFTUUpL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNNDkgMCBvYmoNPDwvQVA8 PC9OIDU3IDAgUj4+L0JTIDU2IDAgUi9Db250ZW50cygwNC8yNikvQ3JlYXRpb25EYXRlKEQ6MjAw OTA0MjYxOTA2MjArMDInMDAnKS9EQSgwIEcgMCBnIDAgVGMgMCBUdyAxMDAgVHogMTYuMjUgVEwg MCBUcyAwIFRyIC9Db3VyIDggVGYpL0RTKGZvbnQ6IENvdXIgOC4wcHQ7Zm9udC1zdHJldGNoOk5v cm1hbDsgdGV4dC1hbGlnbjpsZWZ0OyBjb2xvcjojMDAwMDAwICkvRiA0L0lUL0ZyZWVUZXh0VHlw ZXdyaXRlci9NKEQ6MjAwOTA0MjYxOTA3MjIrMDInMDAnKS9OTSgxMzZhM2E3MC0wMmFlLTQwOWEt YTViMy0wZWNiMWQ4NDA5YzQpL1AgMTEgMCBSL1JDKDw/eG1sIHZlcnNpb249IjEuMCI/Pjxib2R5 IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWxuczp4ZmE9Imh0dHA6Ly93 d3cueGZhLm9yZy9zY2hlbWEveGZhLWRhdGEvMS4wLyIgeGZhOkFQSVZlcnNpb249IkFjcm9iYXQ6 OS4wLjAiIHhmYTpzcGVjPSIyLjAuMiIgIHN0eWxlPSJmb250LXNpemU6OC4wcHQ7dGV4dC1hbGln bjpsZWZ0O2NvbG9yOiMwMDAwMDA7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFs O1wNZm9udC1mYW1pbHk6Q291cjtmb250LXN0cmV0Y2g6bm9ybWFsIj48cCBkaXI9Imx0ciI+PHNw YW4gc3R5bGU9ImxpbmUtaGVpZ2h0OjE2LjNwdDtmb250LWZhbWlseTpDb3VyaWVyIj4wNC8yNjwv c3Bhbj48L3A+PC9ib2R5PikvUkRbMC41IDAuNSAwLjUgMC41XS9SZWN0WzI4Ny42MDcgMC43NTI2 NyAzMTIuNjE3IDEzLjc1MjddL1N1YmooU2NocmVpYm1hc2NoaW5lbnRleHQpL1N1YnR5cGUvRnJl ZVRleHQvVChYVFJFTUUpL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNNTAgMCBvYmoNPDwvQVA8PC9OIDU1 IDAgUj4+L0JTIDU0IDAgUi9DcmVhdGlvbkRhdGUoRDoyMDA5MDQyNjE5MDY1NSswMicwMCcpL0RB KDExIFRMIC9Db3VyIDggVGYpL0RTKGZvbnQ6IENvdXJpZXIgOC4wcHQ7IHRleHQtYWxpZ246bGVm dDsgY29sb3I6IzAwMDAwMCApL0YgNC9JVC9GcmVlVGV4dFR5cGV3cml0ZXIvTShEOjIwMDkwNDI2 MTkwNzA2KzAyJzAwJykvTk0oM2NlYjMwNzItMmY5Ni00ZDNiLTljYWEtNzc0ZTZmOTc0ZTc3KS9Q IDExIDAgUi9SRFswLjUgMC41IDAuNSAwLjVdL1JlY3RbMjk2LjcwNiAyLjA1MjQgMzEyLjEwNiAx NS4wNTI0XS9TdWJqKFNjaHJlaWJtYXNjaGluZW50ZXh0KS9TdWJ0eXBlL0ZyZWVUZXh0L1QoWFRS RU1FKS9UeXBlL0Fubm90Pj4NZW5kb2JqDTUxIDAgb2JqDTw8L0FQPDwvTiA1MyAwIFI+Pi9CUyA1 MiAwIFIvQ3JlYXRpb25EYXRlKEQ6MjAwOTA0MjYxOTA3MjMrMDInMDAnKS9EQSgxMSBUTCAvQ291 ciA4IFRmKS9EUyhmb250OiBDb3VyaWVyIDguMHB0OyB0ZXh0LWFsaWduOmxlZnQ7IGNvbG9yOiMw MDAwMDAgKS9GIDQvSVQvRnJlZVRleHRUeXBld3JpdGVyL00oRDoyMDA5MDQyNjE5MDczNyswMicw MCcpL05NKDYzYjI1OWI4LTRkZWYtNDVkMy1hMDkwLWE1OWEwOTUzZjI4NykvUCAxMSAwIFIvUkRb MC41IDAuNSAwLjUgMC41XS9SZWN0WzM1My44OTQgMy4zNTIxMyAzNjkuMjk0IDE2LjM1MjFdL1N1 YmooU2NocmVpYm1hc2NoaW5lbnRleHQpL1N1YnR5cGUvRnJlZVRleHQvVChYVFJFTUUpL1R5cGUv QW5ub3Q+Pg1lbmRvYmoNNTIgMCBvYmoNPDwvVyAwLjA+Pg1lbmRvYmoNNTMgMCBvYmoNPDwvQkJv eFszNTMuODk0IDMuMzUyMTMgMzY5LjI5NCAxNi4zNTIxXS9Gb3JtVHlwZSAxL0xlbmd0aCA1NC9N YXRyaXhbMS4wIDAuMCAwLjAgMS4wIC0zNTMuODk0IC0zLjM1MjEzXS9SZXNvdXJjZXM8PC9Qcm9j U2V0Wy9QREZdPj4vU3VidHlwZS9Gb3JtL1R5cGUvWE9iamVjdD4+c3RyZWFtDQpxCjEgMCAwIDEg MCAwIGNtCjM1NC4zOTM5IDMuODUyMSAxNC40IDEyIHJlClcKbgowIGcKUQoNCmVuZHN0cmVhbQ1l bmRvYmoNNTQgMCBvYmoNPDwvVyAwLjA+Pg1lbmRvYmoNNTUgMCBvYmoNPDwvQkJveFsyOTYuNzA2 IDIuMDUyNCAzMTIuMTA2IDE1LjA1MjRdL0Zvcm1UeXBlIDEvTGVuZ3RoIDU0L01hdHJpeFsxLjAg MC4wIDAuMCAxLjAgLTI5Ni43MDYgLTIuMDUyNF0vUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGXT4+ L1N1YnR5cGUvRm9ybS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KcQoxIDAgMCAxIDAgMCBjbQoyOTcu MjA1NiAyLjU1MjQgMTQuNCAxMiByZQpXCm4KMCBnClEKDQplbmRzdHJlYW0NZW5kb2JqDTU2IDAg b2JqDTw8L1cgMC4wPj4NZW5kb2JqDTU3IDAgb2JqDTw8L0JCb3hbMjg3LjYwNyAwLjc1MjY3IDMx Mi42MTcgMTMuNzUyN10vRm9ybVR5cGUgMS9MZW5ndGggMTA0L01hdHJpeFsxLjAgMC4wIDAuMCAx LjAgLTI4Ny42MDcgLTAuNzUyNjddL1Jlc291cmNlczw8L0ZvbnQ8PC9Db3VyIDQwIDAgUj4+L1By b2NTZXRbL1BERi9UZXh0XT4+L1N1YnR5cGUvRm9ybS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KcQox IDAgMCAxIDAgMCBjbQoyODguMTA3NSAxLjI1MjcgMjQuMDEgMTIgcmUKVwpuCjAgZwpCVAovQ291 ciA4IFRmCjAgZwoyODguMTA3IDcuNjQ1IFRkCigwNC8yNikgVGoKRVQKUQoNCmVuZHN0cmVhbQ1l bmRvYmoNNTggMCBvYmoNPDwvVyAwLjA+Pg1lbmRvYmoNNTkgMCBvYmoNPDwvQkJveFsyODguOTA3 IDcuNjg0NTcgMzA0LjMwNyAyMC42ODQ2XS9Gb3JtVHlwZSAxL0xlbmd0aCA1NC9NYXRyaXhbMS4w IDAuMCAwLjAgMS4wIC0yODguOTA3IC03LjY4NDU3XS9SZXNvdXJjZXM8PC9Qcm9jU2V0Wy9QREZd Pj4vU3VidHlwZS9Gb3JtL1R5cGUvWE9iamVjdD4+c3RyZWFtDQpxCjEgMCAwIDEgMCAwIGNtCjI4 OS40MDcyIDguMTg0NiAxNC40IDEyIHJlClcKbgowIGcKUQoNCmVuZHN0cmVhbQ1lbmRvYmoNNjAg MCBvYmoNPDwvVyAwLjA+Pg1lbmRvYmoNNjEgMCBvYmoNPDwvQkJveFsyOTYuNzA2IDEwLjcxNzMg MzEyLjEwNiAyMy43MTczXS9Gb3JtVHlwZSAxL0xlbmd0aCA1NS9NYXRyaXhbMS4wIDAuMCAwLjAg MS4wIC0yOTYuNzA2IC0xMC43MTczXS9SZXNvdXJjZXM8PC9Qcm9jU2V0Wy9QREZdPj4vU3VidHlw ZS9Gb3JtL1R5cGUvWE9iamVjdD4+c3RyZWFtDQpxCjEgMCAwIDEgMCAwIGNtCjI5Ny4yMDU2IDEx LjIxNzMgMTQuNCAxMiByZQpXCm4KMCBnClEKDQplbmRzdHJlYW0NZW5kb2JqDTYyIDAgb2JqDTw8 L1cgMC4wPj4NZW5kb2JqDTYzIDAgb2JqDTw8L0JCb3hbMjgyLjQwOSAzLjM1MjEzIDI5Ny44MDkg MTYuMzUyMV0vRm9ybVR5cGUgMS9MZW5ndGggNTQvTWF0cml4WzEuMCAwLjAgMC4wIDEuMCAtMjgy LjQwOSAtMy4zNTIxM10vUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGXT4+L1N1YnR5cGUvRm9ybS9U eXBlL1hPYmplY3Q+PnN0cmVhbQ0KcQoxIDAgMCAxIDAgMCBjbQoyODIuOTA4NiAzLjg1MjEgMTQu NCAxMiByZQpXCm4KMCBnClEKDQplbmRzdHJlYW0NZW5kb2JqDTY0IDAgb2JqDTw8L1cgMC4wPj4N ZW5kb2JqDTY1IDAgb2JqDTw8L0JCb3hbMzE2LjIwMiA5Ljg1MDc4IDMzMS42MDIgMjIuODUwOF0v Rm9ybVR5cGUgMS9MZW5ndGggNTUvTWF0cml4WzEuMCAwLjAgMC4wIDEuMCAtMzE2LjIwMiAtOS44 NTA3OF0vUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGXT4+L1N1YnR5cGUvRm9ybS9UeXBlL1hPYmpl Y3Q+PnN0cmVhbQ0KcQoxIDAgMCAxIDAgMCBjbQozMTYuNzAxNiAxMC4zNTA4IDE0LjQgMTIgcmUK VwpuCjAgZwpRCg0KZW5kc3RyZWFtDWVuZG9iag02NiAwIG9iag08PC9XIDAuMD4+DWVuZG9iag02 NyAwIG9iag08PC9CQm94WzI3NS40NzcgMjAuNjgxOSAyOTAuODc3IDMzLjY4MTldL0Zvcm1UeXBl IDEvTGVuZ3RoIDU1L01hdHJpeFsxLjAgMC4wIDAuMCAxLjAgLTI3NS40NzcgLTIwLjY4MTldL1Jl c291cmNlczw8L1Byb2NTZXRbL1BERl0+Pi9TdWJ0eXBlL0Zvcm0vVHlwZS9YT2JqZWN0Pj5zdHJl YW0NCnEKMSAwIDAgMSAwIDAgY20KMjc1Ljk3NjcgMjEuMTgxOSAxNC40IDEyIHJlClcKbgowIGcK UQoNCmVuZHN0cmVhbQ1lbmRvYmoNNjggMCBvYmoNPDwvVyAwLjA+Pg1lbmRvYmoNNjkgMCBvYmoN PDwvQkJveFsyOTEuOTQgNS4wNTM1OSAzMzYuMTUgMTguOTUxNl0vRm9ybVR5cGUgMS9MZW5ndGgg NTkvTWF0cml4WzEuMCAwLjAgMC4wIDEuMCAtMjkxLjk0IC01LjA1MzU5XS9SZXNvdXJjZXM8PC9Q cm9jU2V0Wy9QREZdPj4vU3VidHlwZS9Gb3JtL1R5cGUvWE9iamVjdD4+c3RyZWFtDQpxCjEgMCAw IDEgMCAwIGNtCjI5Mi40Mzk5IDUuNTUzNiA0My4yMSAxMi44OTggcmUKVwpuCjAgZwpRCg0KZW5k c3RyZWFtDWVuZG9iag03MCAwIG9iag08PC9XIDAuMD4+DWVuZG9iag03MSAwIG9iag08PC9CQm94 WzI1Mi4wODEgNS41MTgzNCAyNjcuNDgxIDE4LjUxODNdL0Zvcm1UeXBlIDEvTGVuZ3RoIDU0L01h dHJpeFsxLjAgMC4wIDAuMCAxLjAgLTI1Mi4wODEgLTUuNTE4MzRdL1Jlc291cmNlczw8L1Byb2NT ZXRbL1BERl0+Pi9TdWJ0eXBlL0Zvcm0vVHlwZS9YT2JqZWN0Pj5zdHJlYW0NCnEKMSAwIDAgMSAw IDAgY20KMjUyLjU4MTUgNi4wMTgzIDE0LjQgMTIgcmUKVwpuCjAgZwpRCg0KZW5kc3RyZWFtDWVu ZG9iag14cmVmDQowIDENCjAwMDAwMDAwMDAgNjU1MzUgZg0KNiAyDQowMDAwMDQzNjU5IDAwMDAw IG4NCjAwMDAwNDY4NTAgMDAwMDAgbg0KMTAgMg0KMDAwMDA0Njk0MSAwMDAwMCBuDQowMDAwMDQ3 MDc5IDAwMDAwIG4NCjQwIDMyDQowMDAwMDQ3NjI0IDAwMDAwIG4NCjAwMDAwNDc3MTEgMDAwMDAg bg0KMDAwMDA0Nzc5OSAwMDAwMCBuDQowMDAwMDQ4MTkzIDAwMDAwIG4NCjAwMDAwNDg1ODAgMDAw MDAgbg0KMDAwMDA0ODk3NCAwMDAwMCBuDQowMDAwMDQ5MzY4IDAwMDAwIG4NCjAwMDAwNDk3NjAg MDAwMDAgbg0KMDAwMDA1MDE1MiAwMDAwMCBuDQowMDAwMDUwNTQ0IDAwMDAwIG4NCjAwMDAwNTEz OTMgMDAwMDAgbg0KMDAwMDA1MTc4MSAwMDAwMCBuDQowMDAwMDUyMTcwIDAwMDAwIG4NCjAwMDAw NTIxOTcgMDAwMDAgbg0KMDAwMDA1MjQ0NiAwMDAwMCBuDQowMDAwMDUyNDczIDAwMDAwIG4NCjAw MDAwNTI3MjAgMDAwMDAgbg0KMDAwMDA1Mjc0NyAwMDAwMCBuDQowMDAwMDUzMDczIDAwMDAwIG4N CjAwMDAwNTMxMDAgMDAwMDAgbg0KMDAwMDA1MzM0OSAwMDAwMCBuDQowMDAwMDUzMzc2IDAwMDAw IG4NCjAwMDAwNTM2MjYgMDAwMDAgbg0KMDAwMDA1MzY1MyAwMDAwMCBuDQowMDAwMDUzOTAyIDAw MDAwIG4NCjAwMDAwNTM5MjkgMDAwMDAgbg0KMDAwMDA1NDE3OSAwMDAwMCBuDQowMDAwMDU0MjA2 IDAwMDAwIG4NCjAwMDAwNTQ0NTYgMDAwMDAgbg0KMDAwMDA1NDQ4MyAwMDAwMCBuDQowMDAwMDU0 NzM0IDAwMDAwIG4NCjAwMDAwNTQ3NjEgMDAwMDAgbg0KdHJhaWxlcg0KPDwvU2l6ZSA3Mi9Sb290 IDkgMCBSL0luZm8gNyAwIFIvSURbPDUzNjdDREQwMTk4NDQxOEZBOURBNjlFREQ4QTg4RjBFPjw0 RTRCRDM5NkEzRUU1MDQ4QjkxMTQ5NTc0RUI1MEM5RT5dL1ByZXYgMTE2Pj4NCnN0YXJ0eHJlZg0K NTUwMTANCiUlRU9GDQo2IDAgb2JqDTw8L0xlbmd0aCAzMTE0L1N1YnR5cGUvWE1ML1R5cGUvTWV0 YWRhdGE+PnN0cmVhbQ0KPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6 TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0i QWRvYmUgWE1QIENvcmUgNC4yLjEtYzA0MyA1Mi4zNzI3MjgsIDIwMDkvMDEvMTgtMTU6MDg6MDQg ICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8w Mi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIi CiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAg ICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDA5LTA0LTI3VDE5OjM3OjIwKzAyOjAwPC94bXA6TW9k aWZ5RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMDktMDQtMjFUMTA6MTM6NDQrMDM6 MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDA5LTA0LTI3 VDE5OjM3OjIwKzAyOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlv bj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6 ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1h dD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAg ICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcE1N PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIj4KICAgICAgICAgPHhtcE1NOkRvY3Vt ZW50SUQ+dXVpZDpjYmMwOGMxNi1lZjRiLWI4NGYtYTc2NC0wNmMzNmVmZTBjODA8L3htcE1NOkRv Y3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnV1aWQ6YzVjZTI5ZWMtMjUwOS00 ZTBlLThmZWMtMDVlOGU1MTUyMzUzPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICA8L3JkZjpEZXNj cmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAg 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 ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+DQplbmRz dHJlYW0NZW5kb2JqDTcgMCBvYmoNPDwvQ3JlYXRpb25EYXRlKEQ6MjAwOTA0MjExMDEzNDQrMDMn MDAnKS9Nb2REYXRlKEQ6MjAwOTA0MjcxOTM3MjArMDInMDAnKT4+DWVuZG9iag00OSAwIG9iag08 PC9BUDw8L04gNzIgMCBSPj4vQlMgNTYgMCBSL0NvbnRlbnRzKDA0LzI3KS9DcmVhdGlvbkRhdGUo RDoyMDA5MDQyNjE5MDYyMCswMicwMCcpL0RBKDAgRyAwIGcgMCBUYyAwIFR3IDEwMCBUeiAxNi4z IFRMIDAgVHMgMCBUciAvQ291ciA4IFRmKS9EUyhmb250OiBDb3VyIDguMHB0O2ZvbnQtc3RyZXRj aDpOb3JtYWw7IHRleHQtYWxpZ246bGVmdDsgY29sb3I6IzAwMDAwMCApL0YgNC9JVC9GcmVlVGV4 dFR5cGV3cml0ZXIvTShEOjIwMDkwNDI3MTkzNzIwKzAyJzAwJykvTk0oMTM2YTNhNzAtMDJhZS00 MDlhLWE1YjMtMGVjYjFkODQwOWM0KS9QIDExIDAgUi9SQyg8P3htbCB2ZXJzaW9uPSIxLjAiPz48 Ym9keSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6eGZhPSJodHRw Oi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLzEuMC8iIHhmYTpBUElWZXJzaW9uPSJBY3Jv YmF0OjkuMS4wIiB4ZmE6c3BlYz0iMi4wLjIiICBzdHlsZT0iZm9udC1zaXplOjguMHB0O3RleHQt YWxpZ246bGVmdDtjb2xvcjojMDAwMDAwO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5v cm1hbDtcDWZvbnQtZmFtaWx5OkNvdXI7Zm9udC1zdHJldGNoOm5vcm1hbCI+PHAgZGlyPSJsdHIi PjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDoxNi4zcHQ7Zm9udC1mYW1pbHk6Q291cmllciI+MDQv Mjc8L3NwYW4+PC9wPjwvYm9keT4pL1JEWzAuNSAwLjUgMC41IDAuNV0vUmVjdFsyODcuNjA3IDAu NzUyNjcgMzEyLjYxNyAxMy43NTI3XS9TdWJqKFNjaHJlaWJtYXNjaGluZW50ZXh0KS9TdWJ0eXBl L0ZyZWVUZXh0L1QoWFRSRU1FKS9UeXBlL0Fubm90Pj4NZW5kb2JqDTcyIDAgb2JqDTw8L0JCb3hb Mjg3LjYwNyAwLjc1MjY3IDMxMi42MTcgMTMuNzUyN10vRm9ybVR5cGUgMS9MZW5ndGggMTAzL01h dHJpeFsxLjAgMC4wIDAuMCAxLjAgLTI4Ny42MDcgLTAuNzUyNjddL1Jlc291cmNlczw8L0ZvbnQ8 PC9Db3VyIDQwIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XT4+L1N1YnR5cGUvRm9ybS9UeXBlL1hP YmplY3Q+PnN0cmVhbQ0KcQoxIDAgMCAxIDAgMCBjbQoyODguMTA3IDEuMjUyNyAyNC4wMSAxMiBy ZQpXCm4KMCBnCkJUCi9Db3VyIDggVGYKMCBnCjI4OC4xMDcgNy42NDUgVGQKKDA0LzI3KSBUagpF VApRCg0KZW5kc3RyZWFtDWVuZG9iag14cmVmDQowIDENCjAwMDAwMDAwMDAgNjU1MzUgZg0KNiAy DQowMDAwMDU1OTMxIDAwMDAwIG4NCjAwMDAwNTkxMjIgMDAwMDAgbg0KNDkgMQ0KMDAwMDA1OTIx MyAwMDAwMCBuDQo3MiAxDQowMDAwMDYwMDYxIDAwMDAwIG4NCnRyYWlsZXINCjw8L1NpemUgNzMv Um9vdCA5IDAgUi9JbmZvIDcgMCBSL0lEWzw1MzY3Q0REMDE5ODQ0MThGQTlEQTY5RUREOEE4OEYw RT48QjM2QjZFQkI2NUFFN0E0REE0OTIyQkExRkFEMkNFQUE+XS9QcmV2IDU1MDEwPj4NCnN0YXJ0 eHJlZg0KNjAzODYNCiUlRU9GDQo2IDAgb2JqDTw8L0xlbmd0aCAzMTE0L1N1YnR5cGUvWE1ML1R5 cGUvTWV0YWRhdGE+PnN0cmVhbQ0KPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhp SHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4 bXB0az0iQWRvYmUgWE1QIENvcmUgNC4yLjEtYzA0MyA1Mi4zNzI3MjgsIDIwMDkvMDEvMTgtMTU6 MDg6MDQgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcv MTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFi b3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4w LyI+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDA5LTA1LTAzVDE2OjA0OjA3KzAyOjAwPC94 bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMDktMDQtMjFUMTA6MTM6 NDQrMDM6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDA5 LTA1LTAzVDE2OjA0OjA3KzAyOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICA8L3JkZjpEZXNj cmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAg eG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRj OmZvcm1hdD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRp b24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5z OnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIj4KICAgICAgICAgPHhtcE1N OkRvY3VtZW50SUQ+dXVpZDpjYmMwOGMxNi1lZjRiLWI4NGYtYTc2NC0wNmMzNmVmZTBjODA8L3ht cE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnV1aWQ6YTEyMmMwOTgt YzQ4Ni00YjJlLThjMWMtMjI5NTg0YTI5NzEzPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICA8L3Jk ZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAg 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 ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+ DQplbmRzdHJlYW0NZW5kb2JqDTcgMCBvYmoNPDwvQ3JlYXRpb25EYXRlKEQ6MjAwOTA0MjExMDEz NDQrMDMnMDAnKS9Nb2REYXRlKEQ6MjAwOTA1MDMxNjA0MDcrMDInMDAnKT4+DWVuZG9iag00OSAw IG9iag08PC9BUDw8L04gNzMgMCBSPj4vQlMgNTYgMCBSL0NvbnRlbnRzKDA1LzAzKS9DcmVhdGlv bkRhdGUoRDoyMDA5MDQyNjE5MDYyMCswMicwMCcpL0RBKDAgRyAwIGcgMCBUYyAwIFR3IDEwMCBU eiAxNi4zIFRMIDAgVHMgMCBUciAvQ291ciA4IFRmKS9EUyhmb250OiBDb3VyIDguMHB0O2ZvbnQt c3RyZXRjaDpOb3JtYWw7IHRleHQtYWxpZ246bGVmdDsgY29sb3I6IzAwMDAwMCApL0YgNC9JVC9G cmVlVGV4dFR5cGV3cml0ZXIvTShEOjIwMDkwNTAzMTYwNDA3KzAyJzAwJykvTk0oMTM2YTNhNzAt MDJhZS00MDlhLWE1YjMtMGVjYjFkODQwOWM0KS9QIDExIDAgUi9SQyg8P3htbCB2ZXJzaW9uPSIx LjAiPz48Ym9keSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6eGZh PSJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLzEuMC8iIHhmYTpBUElWZXJzaW9u PSJBY3JvYmF0OjkuMS4wIiB4ZmE6c3BlYz0iMi4wLjIiICBzdHlsZT0iZm9udC1zaXplOjguMHB0 O3RleHQtYWxpZ246bGVmdDtjb2xvcjojMDAwMDAwO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0 eWxlOm5vcm1hbDtcDWZvbnQtZmFtaWx5OkNvdXI7Zm9udC1zdHJldGNoOm5vcm1hbCI+PHAgZGly PSJsdHIiPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDoxNi4zcHQ7Zm9udC1mYW1pbHk6Q291cmll ciI+MDUvMDM8L3NwYW4+PC9wPjwvYm9keT4pL1JEWzAuNSAwLjUgMC41IDAuNV0vUmVjdFsyODcu NjA3IDAuNzUyNjcgMzEyLjYxNyAxMy43NTI3XS9TdWJqKFNjaHJlaWJtYXNjaGluZW50ZXh0KS9T dWJ0eXBlL0ZyZWVUZXh0L1QoWFRSRU1FKS9UeXBlL0Fubm90Pj4NZW5kb2JqDTczIDAgb2JqDTw8 L0JCb3hbMjg3LjYwNyAwLjc1MjY3IDMxMi42MTcgMTMuNzUyN10vRm9ybVR5cGUgMS9MZW5ndGgg MTAzL01hdHJpeFsxLjAgMC4wIDAuMCAxLjAgLTI4Ny42MDcgLTAuNzUyNjddL1Jlc291cmNlczw8 L0ZvbnQ8PC9Db3VyIDQwIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XT4+L1N1YnR5cGUvRm9ybS9U eXBlL1hPYmplY3Q+PnN0cmVhbQ0KcQoxIDAgMCAxIDAgMCBjbQoyODguMTA3IDEuMjUyNyAyNC4w MSAxMiByZQpXCm4KMCBnCkJUCi9Db3VyIDggVGYKMCBnCjI4OC4xMDcgNy42NDUgVGQKKDA1LzAz KSBUagpFVApRCg0KZW5kc3RyZWFtDWVuZG9iag14cmVmDQowIDENCjAwMDAwMDAwMDAgNjU1MzUg Zg0KNiAyDQowMDAwMDYwNjY4IDAwMDAwIG4NCjAwMDAwNjM4NTkgMDAwMDAgbg0KNDkgMQ0KMDAw MDA2Mzk1MCAwMDAwMCBuDQo3MyAxDQowMDAwMDY0Nzk4IDAwMDAwIG4NCnRyYWlsZXINCjw8L1Np emUgNzQvUm9vdCA5IDAgUi9JbmZvIDcgMCBSL0lEWzw1MzY3Q0REMDE5ODQ0MThGQTlEQTY5RURE OEE4OEYwRT48NjVBMzA5MDI0NkRCRTI0MEFCMDY3QUM0OTk1NEY0OTM+XS9QcmV2IDYwMzg2Pj4N CnN0YXJ0eHJlZg0KNjUxMjMNCiUlRU9GDQo2IDAgb2JqDTw8L0xlbmd0aCAzMTE0L1N1YnR5cGUv WE1ML1R5cGUvTWV0YWRhdGE+PnN0cmVhbQ0KPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0w TXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRh LyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4yLjEtYzA0MyA1Mi4zNzI3MjgsIDIwMDkvMDEv MTgtMTU6MDg6MDQgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53 My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24g cmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94 YXAvMS4wLyI+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDA5LTA1LTA0VDE2OjEwOjM4KzAy OjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMDktMDQtMjFU MTA6MTM6NDQrMDM6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0 ZT4yMDA5LTA1LTA0VDE2OjEwOjM4KzAyOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICA8L3Jk ZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAg ICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAg ICAgPGRjOmZvcm1hdD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVz Y3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAg IHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIj4KICAgICAgICAg PHhtcE1NOkRvY3VtZW50SUQ+dXVpZDpjYmMwOGMxNi1lZjRiLWI4NGYtYTc2NC0wNmMzNmVmZTBj ODA8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnV1aWQ6ZDdh OWFkYjAtODg1Ni00MWJhLWJiMjctOGEyMDIzNTc0ZGIwPC94bXBNTTpJbnN0YW5jZUlEPgogICAg ICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAg 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 ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5k PSJ3Ij8+DQplbmRzdHJlYW0NZW5kb2JqDTcgMCBvYmoNPDwvQ3JlYXRpb25EYXRlKEQ6MjAwOTA0 MjExMDEzNDQrMDMnMDAnKS9Nb2REYXRlKEQ6MjAwOTA1MDQxNjEwMzgrMDInMDAnKT4+DWVuZG9i ag00OSAwIG9iag08PC9BUDw8L04gNzQgMCBSPj4vQlMgNTYgMCBSL0NvbnRlbnRzKDA1LzA0KS9D cmVhdGlvbkRhdGUoRDoyMDA5MDQyNjE5MDYyMCswMicwMCcpL0RBKDAgRyAwIGcgMCBUYyAwIFR3 IDEwMCBUeiAxNi4zIFRMIDAgVHMgMCBUciAvQ291ciA4IFRmKS9EUyhmb250OiBDb3VyIDguMHB0 O2ZvbnQtc3RyZXRjaDpOb3JtYWw7IHRleHQtYWxpZ246bGVmdDsgY29sb3I6IzAwMDAwMCApL0Yg NC9JVC9GcmVlVGV4dFR5cGV3cml0ZXIvTShEOjIwMDkwNTA0MTYxMDM4KzAyJzAwJykvTk0oMTM2 YTNhNzAtMDJhZS00MDlhLWE1YjMtMGVjYjFkODQwOWM0KS9QIDExIDAgUi9SQyg8P3htbCB2ZXJz aW9uPSIxLjAiPz48Ym9keSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1s bnM6eGZhPSJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLzEuMC8iIHhmYTpBUElW ZXJzaW9uPSJBY3JvYmF0OjkuMS4wIiB4ZmE6c3BlYz0iMi4wLjIiICBzdHlsZT0iZm9udC1zaXpl OjguMHB0O3RleHQtYWxpZ246bGVmdDtjb2xvcjojMDAwMDAwO2ZvbnQtd2VpZ2h0Om5vcm1hbDtm b250LXN0eWxlOm5vcm1hbDtcDWZvbnQtZmFtaWx5OkNvdXI7Zm9udC1zdHJldGNoOm5vcm1hbCI+ PHAgZGlyPSJsdHIiPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDoxNi4zcHQ7Zm9udC1mYW1pbHk6 Q291cmllciI+MDUvMDQ8L3NwYW4+PC9wPjwvYm9keT4pL1JEWzAuNSAwLjUgMC41IDAuNV0vUmVj dFsyODcuNjA3IDAuNzUyNjcgMzEyLjYxNyAxMy43NTI3XS9TdWJqKFNjaHJlaWJtYXNjaGluZW50 ZXh0KS9TdWJ0eXBlL0ZyZWVUZXh0L1QoWFRSRU1FKS9UeXBlL0Fubm90Pj4NZW5kb2JqDTc0IDAg b2JqDTw8L0JCb3hbMjg3LjYwNyAwLjc1MjY3IDMxMi42MTcgMTMuNzUyN10vRm9ybVR5cGUgMS9M ZW5ndGggMTAzL01hdHJpeFsxLjAgMC4wIDAuMCAxLjAgLTI4Ny42MDcgLTAuNzUyNjddL1Jlc291 cmNlczw8L0ZvbnQ8PC9Db3VyIDQwIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XT4+L1N1YnR5cGUv Rm9ybS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KcQoxIDAgMCAxIDAgMCBjbQoyODguMTA3IDEuMjUy NyAyNC4wMSAxMiByZQpXCm4KMCBnCkJUCi9Db3VyIDggVGYKMCBnCjI4OC4xMDcgNy42NDUgVGQK KDA1LzA0KSBUagpFVApRCg0KZW5kc3RyZWFtDWVuZG9iag14cmVmDQowIDENCjAwMDAwMDAwMDAg NjU1MzUgZg0KNiAyDQowMDAwMDY1NDA1IDAwMDAwIG4NCjAwMDAwNjg1OTYgMDAwMDAgbg0KNDkg MQ0KMDAwMDA2ODY4NyAwMDAwMCBuDQo3NCAxDQowMDAwMDY5NTM1IDAwMDAwIG4NCnRyYWlsZXIN Cjw8L1NpemUgNzUvUm9vdCA5IDAgUi9JbmZvIDcgMCBSL0lEWzw1MzY3Q0REMDE5ODQ0MThGQTlE QTY5RUREOEE4OEYwRT48NzQ0QTA0MTREMjVCNTE0RUI0MDJGRUZGQjhGMjA2QjE+XS9QcmV2IDY1 MTIzPj4NCnN0YXJ0eHJlZg0KNjk4NjANCiUlRU9GDQo2IDAgb2JqDTw8L0xlbmd0aCAzMTE0L1N1 YnR5cGUvWE1ML1R5cGUvTWV0YWRhdGE+PnN0cmVhbQ0KPD94cGFja2V0IGJlZ2luPSLvu78iIGlk PSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpu czptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4yLjEtYzA0MyA1Mi4zNzI3MjgsIDIw MDkvMDEvMTgtMTU6MDg6MDQgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDov L3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3Jp cHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2Jl LmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDA5LTA1LTA1VDE3OjUz OjUwKzAyOjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMDkt MDQtMjFUMTA6MTM6NDQrMDM6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFk YXRhRGF0ZT4yMDA5LTA1LTA1VDE3OjUzOjUwKzAyOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAg ICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIK ICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4K ICAgICAgICAgPGRjOmZvcm1hdD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD4KICAgICAgPC9y ZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAg ICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIj4KICAg ICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+dXVpZDpjYmMwOGMxNi1lZjRiLWI4NGYtYTc2NC0wNmMz NmVmZTBjODA8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnV1 aWQ6MDcxOTlmODctNDA2ZS00MjMyLWEyMjMtZDk0MDA2NGFlNGZlPC94bXBNTTpJbnN0YW5jZUlE PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAg 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 ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNr ZXQgZW5kPSJ3Ij8+DQplbmRzdHJlYW0NZW5kb2JqDTcgMCBvYmoNPDwvQ3JlYXRpb25EYXRlKEQ6 MjAwOTA0MjExMDEzNDQrMDMnMDAnKS9Nb2REYXRlKEQ6MjAwOTA1MDUxNzUzNTArMDInMDAnKT4+ DWVuZG9iag00OSAwIG9iag08PC9BUDw8L04gNzYgMCBSPj4vQlMgNTYgMCBSL0NvbnRlbnRzKDA1 LzA1KS9DcmVhdGlvbkRhdGUoRDoyMDA5MDQyNjE5MDYyMCswMicwMCcpL0RBKDAgRyAwIGcgMCBU YyAwIFR3IDEwMCBUeiAxNi4zIFRMIDAgVHMgMCBUciAvQ291ciA4IFRmKS9EUyhmb250OiBDb3Vy IDguMHB0O2ZvbnQtc3RyZXRjaDpOb3JtYWw7IHRleHQtYWxpZ246bGVmdDsgY29sb3I6IzAwMDAw MCApL0YgNC9JVC9GcmVlVGV4dFR5cGV3cml0ZXIvTShEOjIwMDkwNTA1MTc1MzUwKzAyJzAwJykv Tk0oMTM2YTNhNzAtMDJhZS00MDlhLWE1YjMtMGVjYjFkODQwOWM0KS9QIDExIDAgUi9SQyg8P3ht bCB2ZXJzaW9uPSIxLjAiPz48Ym9keSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt bCIgeG1sbnM6eGZhPSJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLzEuMC8iIHhm YTpBUElWZXJzaW9uPSJBY3JvYmF0OjkuMS4wIiB4ZmE6c3BlYz0iMi4wLjIiICBzdHlsZT0iZm9u dC1zaXplOjguMHB0O3RleHQtYWxpZ246bGVmdDtjb2xvcjojMDAwMDAwO2ZvbnQtd2VpZ2h0Om5v cm1hbDtmb250LXN0eWxlOm5vcm1hbDtcDWZvbnQtZmFtaWx5OkNvdXI7Zm9udC1zdHJldGNoOm5v cm1hbCI+PHAgZGlyPSJsdHIiPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDoxNi4zcHQ7Zm9udC1m YW1pbHk6Q291cmllciI+MDUvMDU8L3NwYW4+PC9wPjwvYm9keT4pL1JEWzAuNSAwLjUgMC41IDAu NV0vUmVjdFsyODcuNjA3IDAuNzUyNjcgMzEyLjYxNyAxMy43NTI3XS9TdWJqKFNjaHJlaWJtYXNj aGluZW50ZXh0KS9TdWJ0eXBlL0ZyZWVUZXh0L1QoWFRSRU1FKS9UeXBlL0Fubm90Pj4NZW5kb2Jq DTUwIDAgb2JqDTw8L0FQPDwvTiA3NSAwIFI+Pi9CUyA1NCAwIFIvQ3JlYXRpb25EYXRlKEQ6MjAw OTA0MjYxOTA2NTUrMDInMDAnKS9EQSgxMSBUTCAvQ291ciA4IFRmKS9EUyhmb250OiBDb3VyaWVy IDguMHB0OyB0ZXh0LWFsaWduOmxlZnQ7IGNvbG9yOiMwMDAwMDAgKS9GIDQvSVQvRnJlZVRleHRU eXBld3JpdGVyL00oRDoyMDA5MDUwNTE3NTMzNyswMicwMCcpL05NKDNjZWIzMDcyLTJmOTYtNGQz Yi05Y2FhLTc3NGU2Zjk3NGU3NykvUCAxMSAwIFIvUkRbMC41IDAuNSAwLjUgMC41XS9SZWN0WzI5 Ni43MDYgMi4wNTI0IDMxMi4xMDYgMTUuMDUyNF0vU3ViaihTY2hyZWlibWFzY2hpbmVudGV4dCkv U3VidHlwZS9GcmVlVGV4dC9UKFhUUkVNRSkvVHlwZS9Bbm5vdD4+DWVuZG9iag03NSAwIG9iag08 PC9CQm94WzI5Ni43MDYgMi4wNTI0IDMxMi4xMDYgMTUuMDUyNF0vRm9ybVR5cGUgMS9MZW5ndGgg NTMvTWF0cml4WzEuMCAwLjAgMC4wIDEuMCAtMjk2LjcwNiAtMi4wNTI0XS9SZXNvdXJjZXM8PC9Q cm9jU2V0Wy9QREZdPj4vU3VidHlwZS9Gb3JtL1R5cGUvWE9iamVjdD4+c3RyZWFtDQpxCjEgMCAw IDEgMCAwIGNtCjI5Ny4yMDYgMi41NTI0IDE0LjQgMTIgcmUKVwpuCjAgZwpRCg0KZW5kc3RyZWFt DWVuZG9iag03NiAwIG9iag08PC9CQm94WzI4Ny42MDcgMC43NTI2NyAzMTIuNjE3IDEzLjc1Mjdd L0Zvcm1UeXBlIDEvTGVuZ3RoIDEwMy9NYXRyaXhbMS4wIDAuMCAwLjAgMS4wIC0yODcuNjA3IC0w Ljc1MjY3XS9SZXNvdXJjZXM8PC9Gb250PDwvQ291ciA0MCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4 dF0+Pi9TdWJ0eXBlL0Zvcm0vVHlwZS9YT2JqZWN0Pj5zdHJlYW0NCnEKMSAwIDAgMSAwIDAgY20K Mjg4LjEwNyAxLjI1MjcgMjQuMDEgMTIgcmUKVwpuCjAgZwpCVAovQ291ciA4IFRmCjAgZwoyODgu MTA3IDcuNjQ1IFRkCigwNS8wNSkgVGoKRVQKUQoNCmVuZHN0cmVhbQ1lbmRvYmoNeHJlZg0KMCAx DQowMDAwMDAwMDAwIDY1NTM1IGYNCjYgMg0KMDAwMDA3MDE0MiAwMDAwMCBuDQowMDAwMDczMzMz IDAwMDAwIG4NCjQ5IDINCjAwMDAwNzM0MjQgMDAwMDAgbg0KMDAwMDA3NDI3MiAwMDAwMCBuDQo3 NSAyDQowMDAwMDc0NjYwIDAwMDAwIG4NCjAwMDAwNzQ5MDYgMDAwMDAgbg0KdHJhaWxlcg0KPDwv U2l6ZSA3Ny9Sb290IDkgMCBSL0luZm8gNyAwIFIvSURbPDUzNjdDREQwMTk4NDQxOEZBOURBNjlF REQ4QTg4RjBFPjwzQkU1QTU1MUE4Mzg3NjQzOERFOTU1MEMyRkJFOUU5Mj5dL1ByZXYgNjk4NjA+ Pg0Kc3RhcnR4cmVmDQo3NTIzMQ0KJSVFT0YNCjYgMCBvYmoNPDwvTGVuZ3RoIDMxMTQvU3VidHlw ZS9YTUwvVHlwZS9NZXRhZGF0YT4+c3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1 TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1l dGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA0LjIuMS1jMDQzIDUyLjM3MjcyOCwgMjAwOS8w MS8xOC0xNTowODowNCAgICAgICAgIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3 LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlv biByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29t L3hhcC8xLjAvIj4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMDktMDUtMDZUMTg6NDM6NTMr MDI6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAwOS0wNC0y MVQxMDoxMzo0NCswMzowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFE YXRlPjIwMDktMDUtMDZUMTg6NDM6NTMrMDI6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgIDwv cmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAg ICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAg ICAgICA8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0PgogICAgICA8L3JkZjpE ZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAg ICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iPgogICAgICAg ICA8eG1wTU06RG9jdW1lbnRJRD51dWlkOmNiYzA4YzE2LWVmNGItYjg0Zi1hNzY0LTA2YzM2ZWZl MGM4MDwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+dXVpZDo2 MmEwNTY0ZC1lMjAwLTQzOTctYTdmOS01NTdkMjI2YWI4NGU8L3htcE1NOkluc3RhbmNlSUQ+CiAg ICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAg 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 ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBl bmQ9InciPz4NCmVuZHN0cmVhbQ1lbmRvYmoNNyAwIG9iag08PC9DcmVhdGlvbkRhdGUoRDoyMDA5 MDQyMTEwMTM0NCswMycwMCcpL01vZERhdGUoRDoyMDA5MDUwNjE4NDM1MyswMicwMCcpPj4NZW5k b2JqDTQ5IDAgb2JqDTw8L0FQPDwvTiA3OCAwIFI+Pi9CUyA1NiAwIFIvQ29udGVudHMoMDUvMDYp L0NyZWF0aW9uRGF0ZShEOjIwMDkwNDI2MTkwNjIwKzAyJzAwJykvREEoMCBHIDAgZyAwIFRjIDAg VHcgMTAwIFR6IDE2LjMgVEwgMCBUcyAwIFRyIC9Db3VyIDggVGYpL0RTKGZvbnQ6IENvdXIgOC4w cHQ7Zm9udC1zdHJldGNoOk5vcm1hbDsgdGV4dC1hbGlnbjpsZWZ0OyBjb2xvcjojMDAwMDAwICkv RiA0L0lUL0ZyZWVUZXh0VHlwZXdyaXRlci9NKEQ6MjAwOTA1MDYxODQzNTMrMDInMDAnKS9OTSgx MzZhM2E3MC0wMmFlLTQwOWEtYTViMy0wZWNiMWQ4NDA5YzQpL1AgMTEgMCBSL1JDKDw/eG1sIHZl cnNpb249IjEuMCI/Pjxib2R5IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4 bWxuczp4ZmE9Imh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWRhdGEvMS4wLyIgeGZhOkFQ SVZlcnNpb249IkFjcm9iYXQ6OS4xLjAiIHhmYTpzcGVjPSIyLjAuMiIgIHN0eWxlPSJmb250LXNp emU6OC4wcHQ7dGV4dC1hbGlnbjpsZWZ0O2NvbG9yOiMwMDAwMDA7Zm9udC13ZWlnaHQ6bm9ybWFs O2ZvbnQtc3R5bGU6bm9ybWFsO1wNZm9udC1mYW1pbHk6Q291cjtmb250LXN0cmV0Y2g6bm9ybWFs Ij48cCBkaXI9Imx0ciI+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0OjE2LjNwdDtmb250LWZhbWls eTpDb3VyaWVyIj4wNS8wNjwvc3Bhbj48L3A+PC9ib2R5PikvUkRbMC41IDAuNSAwLjUgMC41XS9S ZWN0WzI4Ny42MDcgMC43NTI2NyAzMTIuNjE3IDEzLjc1MjddL1N1YmooU2NocmVpYm1hc2NoaW5l bnRleHQpL1N1YnR5cGUvRnJlZVRleHQvVChYVFJFTUUpL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNNTAg MCBvYmoNPDwvQVA8PC9OIDc3IDAgUj4+L0JTIDU0IDAgUi9DcmVhdGlvbkRhdGUoRDoyMDA5MDQy NjE5MDY1NSswMicwMCcpL0RBKDExIFRMIC9Db3VyIDggVGYpL0RTKGZvbnQ6IENvdXJpZXIgOC4w cHQ7IHRleHQtYWxpZ246bGVmdDsgY29sb3I6IzAwMDAwMCApL0YgNC9JVC9GcmVlVGV4dFR5cGV3 cml0ZXIvTShEOjIwMDkwNTA2MTg0MzQxKzAyJzAwJykvTk0oM2NlYjMwNzItMmY5Ni00ZDNiLTlj YWEtNzc0ZTZmOTc0ZTc3KS9QIDExIDAgUi9SRFswLjUgMC41IDAuNSAwLjVdL1JlY3RbMjk2Ljcw NiAyLjA1MjQgMzEyLjEwNiAxNS4wNTI0XS9TdWJqKFNjaHJlaWJtYXNjaGluZW50ZXh0KS9TdWJ0 eXBlL0ZyZWVUZXh0L1QoWFRSRU1FKS9UeXBlL0Fubm90Pj4NZW5kb2JqDTc3IDAgb2JqDTw8L0JC b3hbMjk2LjcwNiAyLjA1MjQgMzEyLjEwNiAxNS4wNTI0XS9Gb3JtVHlwZSAxL0xlbmd0aCA1My9N YXRyaXhbMS4wIDAuMCAwLjAgMS4wIC0yOTYuNzA2IC0yLjA1MjRdL1Jlc291cmNlczw8L1Byb2NT ZXRbL1BERl0+Pi9TdWJ0eXBlL0Zvcm0vVHlwZS9YT2JqZWN0Pj5zdHJlYW0NCnEKMSAwIDAgMSAw IDAgY20KMjk3LjIwNiAyLjU1MjQgMTQuNCAxMiByZQpXCm4KMCBnClEKDQplbmRzdHJlYW0NZW5k b2JqDTc4IDAgb2JqDTw8L0JCb3hbMjg3LjYwNyAwLjc1MjY3IDMxMi42MTcgMTMuNzUyN10vRm9y bVR5cGUgMS9MZW5ndGggMTAzL01hdHJpeFsxLjAgMC4wIDAuMCAxLjAgLTI4Ny42MDcgLTAuNzUy NjddL1Jlc291cmNlczw8L0ZvbnQ8PC9Db3VyIDQwIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XT4+ L1N1YnR5cGUvRm9ybS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KcQoxIDAgMCAxIDAgMCBjbQoyODgu MTA3IDEuMjUyNyAyNC4wMSAxMiByZQpXCm4KMCBnCkJUCi9Db3VyIDggVGYKMCBnCjI4OC4xMDcg Ny42NDUgVGQKKDA1LzA2KSBUagpFVApRCg0KZW5kc3RyZWFtDWVuZG9iag14cmVmDQowIDENCjAw MDAwMDAwMDAgNjU1MzUgZg0KNiAyDQowMDAwMDc1NTUzIDAwMDAwIG4NCjAwMDAwNzg3NDQgMDAw MDAgbg0KNDkgMg0KMDAwMDA3ODgzNSAwMDAwMCBuDQowMDAwMDc5NjgzIDAwMDAwIG4NCjc3IDIN CjAwMDAwODAwNzEgMDAwMDAgbg0KMDAwMDA4MDMxNyAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXpl IDc5L1Jvb3QgOSAwIFIvSW5mbyA3IDAgUi9JRFs8NTM2N0NERDAxOTg0NDE4RkE5REE2OUVERDhB ODhGMEU+PEYzQkQwRDBENTU2OUIxNDBBRTJDRERCQzc0MjhCM0E5Pl0vUHJldiA3NTIzMT4+DQpz dGFydHhyZWYNCjgwNjQyDQolJUVPRg0KNiAwIG9iag08PC9MZW5ndGggMzExNC9TdWJ0eXBlL1hN TC9UeXBlL01ldGFkYXRhPj5zdHJlYW0NCjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1w Q2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8i IHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMi4xLWMwNDMgNTIuMzcyNzI4LCAyMDA5LzAxLzE4 LTE1OjA4OjA0ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMu b3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJk ZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFw LzEuMC8iPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAwOS0wNS0wN1QxNDoxMzo1MiswMjow MDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDA5LTA0LTIxVDEw OjEzOjQ0KzAzOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+ MjAwOS0wNS0wN1QxNDoxMzo1MiswMjowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgPC9yZGY6 RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAg ICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAgICAg IDxkYzpmb3JtYXQ+YXBwbGljYXRpb24vcGRmPC9kYzpmb3JtYXQ+CiAgICAgIDwvcmRmOkRlc2Ny aXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4 bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyI+CiAgICAgICAgIDx4 bXBNTTpEb2N1bWVudElEPnV1aWQ6Y2JjMDhjMTYtZWY0Yi1iODRmLWE3NjQtMDZjMzZlZmUwYzgw PC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD51dWlkOjcwZjIy YTdjLTkxOWMtNDRhZC04ZDJjLWIyNjhiMDljOWYxODwveG1wTU06SW5zdGFuY2VJRD4KICAgICAg PC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAg 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 ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0i dyI/Pg0KZW5kc3RyZWFtDWVuZG9iag03IDAgb2JqDTw8L0NyZWF0aW9uRGF0ZShEOjIwMDkwNDIx MTAxMzQ0KzAzJzAwJykvTW9kRGF0ZShEOjIwMDkwNTA3MTQxMzUyKzAyJzAwJyk+Pg1lbmRvYmoN NDkgMCBvYmoNPDwvQVA8PC9OIDgwIDAgUj4+L0JTIDU2IDAgUi9Db250ZW50cygwNS8wNykvQ3Jl YXRpb25EYXRlKEQ6MjAwOTA0MjYxOTA2MjArMDInMDAnKS9EQSgwIEcgMCBnIDAgVGMgMCBUdyAx MDAgVHogMTYuMyBUTCAwIFRzIDAgVHIgL0NvdXIgOCBUZikvRFMoZm9udDogQ291ciA4LjBwdDtm b250LXN0cmV0Y2g6Tm9ybWFsOyB0ZXh0LWFsaWduOmxlZnQ7IGNvbG9yOiMwMDAwMDAgKS9GIDQv SVQvRnJlZVRleHRUeXBld3JpdGVyL00oRDoyMDA5MDUwNzE0MTM1MiswMicwMCcpL05NKDEzNmEz YTcwLTAyYWUtNDA5YS1hNWIzLTBlY2IxZDg0MDljNCkvUCAxMSAwIFIvUkMoPD94bWwgdmVyc2lv bj0iMS4wIj8+PGJvZHkgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbG5z OnhmYT0iaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8xLjAvIiB4ZmE6QVBJVmVy c2lvbj0iQWNyb2JhdDo5LjEuMCIgeGZhOnNwZWM9IjIuMC4yIiAgc3R5bGU9ImZvbnQtc2l6ZTo4 LjBwdDt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6IzAwMDAwMDtmb250LXdlaWdodDpub3JtYWw7Zm9u dC1zdHlsZTpub3JtYWw7XA1mb250LWZhbWlseTpDb3VyO2ZvbnQtc3RyZXRjaDpub3JtYWwiPjxw IGRpcj0ibHRyIj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6MTYuM3B0O2ZvbnQtZmFtaWx5OkNv dXJpZXIiPjA1LzA3PC9zcGFuPjwvcD48L2JvZHk+KS9SRFswLjUgMC41IDAuNSAwLjVdL1JlY3Rb Mjg3LjYwNyAwLjc1MjY3IDMxMi42MTcgMTMuNzUyN10vU3ViaihTY2hyZWlibWFzY2hpbmVudGV4 dCkvU3VidHlwZS9GcmVlVGV4dC9UKFhUUkVNRSkvVHlwZS9Bbm5vdD4+DWVuZG9iag01MCAwIG9i ag08PC9BUDw8L04gNzkgMCBSPj4vQlMgNTQgMCBSL0NyZWF0aW9uRGF0ZShEOjIwMDkwNDI2MTkw NjU1KzAyJzAwJykvREEoMTEgVEwgL0NvdXIgOCBUZikvRFMoZm9udDogQ291cmllciA4LjBwdDsg dGV4dC1hbGlnbjpsZWZ0OyBjb2xvcjojMDAwMDAwICkvRiA0L0lUL0ZyZWVUZXh0VHlwZXdyaXRl ci9NKEQ6MjAwOTA1MDcxNDEzMzkrMDInMDAnKS9OTSgzY2ViMzA3Mi0yZjk2LTRkM2ItOWNhYS03 NzRlNmY5NzRlNzcpL1AgMTEgMCBSL1JEWzAuNSAwLjUgMC41IDAuNV0vUmVjdFsyOTYuNzA2IDIu MDUyNCAzMTIuMTA2IDE1LjA1MjRdL1N1YmooU2NocmVpYm1hc2NoaW5lbnRleHQpL1N1YnR5cGUv RnJlZVRleHQvVChYVFJFTUUpL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNNzkgMCBvYmoNPDwvQkJveFsy OTYuNzA2IDIuMDUyNCAzMTIuMTA2IDE1LjA1MjRdL0Zvcm1UeXBlIDEvTGVuZ3RoIDUzL01hdHJp eFsxLjAgMC4wIDAuMCAxLjAgLTI5Ni43MDYgLTIuMDUyNF0vUmVzb3VyY2VzPDwvUHJvY1NldFsv UERGXT4+L1N1YnR5cGUvRm9ybS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KcQoxIDAgMCAxIDAgMCBj bQoyOTcuMjA2IDIuNTUyNCAxNC40IDEyIHJlClcKbgowIGcKUQoNCmVuZHN0cmVhbQ1lbmRvYmoN ODAgMCBvYmoNPDwvQkJveFsyODcuNjA3IDAuNzUyNjcgMzEyLjYxNyAxMy43NTI3XS9Gb3JtVHlw ZSAxL0xlbmd0aCAxMDMvTWF0cml4WzEuMCAwLjAgMC4wIDEuMCAtMjg3LjYwNyAtMC43NTI2N10v UmVzb3VyY2VzPDwvRm9udDw8L0NvdXIgNDAgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdPj4vU3Vi dHlwZS9Gb3JtL1R5cGUvWE9iamVjdD4+c3RyZWFtDQpxCjEgMCAwIDEgMCAwIGNtCjI4OC4xMDcg MS4yNTI3IDI0LjAxIDEyIHJlClcKbgowIGcKQlQKL0NvdXIgOCBUZgowIGcKMjg4LjEwNyA3LjY0 NSBUZAooMDUvMDcpIFRqCkVUClEKDQplbmRzdHJlYW0NZW5kb2JqDXhyZWYNCjAgMQ0KMDAwMDAw MDAwMCA2NTUzNSBmDQo2IDINCjAwMDAwODA5NjQgMDAwMDAgbg0KMDAwMDA4NDE1NSAwMDAwMCBu DQo0OSAyDQowMDAwMDg0MjQ2IDAwMDAwIG4NCjAwMDAwODUwOTQgMDAwMDAgbg0KNzkgMg0KMDAw MDA4NTQ4MiAwMDAwMCBuDQowMDAwMDg1NzI4IDAwMDAwIG4NCnRyYWlsZXINCjw8L1NpemUgODEv Um9vdCA5IDAgUi9JbmZvIDcgMCBSL0lEWzw1MzY3Q0REMDE5ODQ0MThGQTlEQTY5RUREOEE4OEYw RT48QTYxRTZBMDFEQzM2QUY0NkE5MEYzNjdCMzg1Q0NGRDk+XS9QcmV2IDgwNjQyPj4NCnN0YXJ0 eHJlZg0KODYwNTMNCiUlRU9GDQo2IDAgb2JqDTw8L0xlbmd0aCAzMTE0L1N1YnR5cGUvWE1ML1R5 cGUvTWV0YWRhdGE+PnN0cmVhbQ0KPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhp SHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4 bXB0az0iQWRvYmUgWE1QIENvcmUgNC4yLjEtYzA0MyA1Mi4zNzI3MjgsIDIwMDkvMDEvMTgtMTU6 MDg6MDQgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcv MTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFi b3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4w LyI+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDA5LTA1LTA4VDE1OjQ3OjQxKzAyOjAwPC94 bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMDktMDQtMjFUMTA6MTM6 NDQrMDM6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDA5 LTA1LTA4VDE1OjQ3OjQxKzAyOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICA8L3JkZjpEZXNj cmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAg eG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRj OmZvcm1hdD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRp b24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5z OnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIj4KICAgICAgICAgPHhtcE1N OkRvY3VtZW50SUQ+dXVpZDpjYmMwOGMxNi1lZjRiLWI4NGYtYTc2NC0wNmMzNmVmZTBjODA8L3ht cE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnV1aWQ6YWJhY2JhMDYt NjQyMS00ZjAyLTk5OTQtYmIzODQ2ODg1MjJkPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICA8L3Jk ZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAg 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 ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+ DQplbmRzdHJlYW0NZW5kb2JqDTcgMCBvYmoNPDwvQ3JlYXRpb25EYXRlKEQ6MjAwOTA0MjExMDEz NDQrMDMnMDAnKS9Nb2REYXRlKEQ6MjAwOTA1MDgxNTQ3NDErMDInMDAnKT4+DWVuZG9iag00MSAw IG9iag1bNDIgMCBSIDQzIDAgUiA0NCAwIFIgNDUgMCBSIDQ2IDAgUiA0NyAwIFIgNDggMCBSIDQ5 IDAgUiA1MCAwIFIgNTEgMCBSIDgxIDAgUl0NZW5kb2JqDTQzIDAgb2JqDTw8L0FQPDwvTiA4NyAw IFI+Pi9CUyA2OCAwIFIvQ3JlYXRpb25EYXRlKEQ6MjAwOTA0MjYxOTAzMTIrMDInMDAnKS9EQSgx MSBUTCAvQ291ciA4IFRmKS9EUyhmb250OiBDb3VyaWVyIDguMHB0OyB0ZXh0LWFsaWduOmxlZnQ7 IGNvbG9yOiMwMDAwMDAgKS9GIDQvSVQvRnJlZVRleHRUeXBld3JpdGVyL00oRDoyMDA5MDUwODE1 NDcwNyswMicwMCcpL05NKGNiZGQxMTNiLTE2M2ItNDEyNy04ZWZjLTRmMjVmNjBjOTBmYSkvUCAx MSAwIFIvUkRbMC41IDAuNSAwLjUgMC41XS9SZWN0WzI5MS45NCA1LjA1MzU5IDMzNi4xNSAxOC45 NTE2XS9TdWJqKFNjaHJlaWJtYXNjaGluZW50ZXh0KS9TdWJ0eXBlL0ZyZWVUZXh0L1QoWFRSRU1F KS9UeXBlL0Fubm90Pj4NZW5kb2JqDTQ4IDAgb2JqDTw8L0FQPDwvTiA4NiAwIFI+Pi9CUyA1OCAw IFIvQ3JlYXRpb25EYXRlKEQ6MjAwOTA0MjYxOTA1NTArMDInMDAnKS9EQSgxMi4yNSBUTCAvQ291 ciA5IFRmKS9EUyhmb250OiBDb3VyaWVyIDkuMHB0OyB0ZXh0LWFsaWduOmxlZnQ7IGNvbG9yOiMw MDAwMDAgKS9GIDQvSVQvRnJlZVRleHRUeXBld3JpdGVyL00oRDoyMDA5MDUwODE1NDcyMiswMicw MCcpL05NKDVlN2I4ODY4LTljYWYtNDY3ZS05MWYzLWI3ZTZhYTFhNWQwMikvUCAxMSAwIFIvUkRb MC41IDAuNSAwLjUgMC41XS9SZWN0WzI4OC45MDcgNy42ODQ1NyAzMDQuMzA3IDIwLjY4NDZdL1N1 YmooU2NocmVpYm1hc2NoaW5lbnRleHQpL1N1YnR5cGUvRnJlZVRleHQvVChYVFJFTUUpL1R5cGUv QW5ub3Q+Pg1lbmRvYmoNNDkgMCBvYmoNPDwvQVA8PC9OIDg1IDAgUj4+L0JTIDU2IDAgUi9Db250 ZW50cygwNS8wOCkvQ3JlYXRpb25EYXRlKEQ6MjAwOTA0MjYxOTA2MjArMDInMDAnKS9EQSgwIEcg MCBnIDAgVGMgMCBUdyAxMDAgVHogMTYuMyBUTCAwIFRzIDAgVHIgL0NvdXIgOCBUZikvRFMoZm9u dDogQ291ciA4LjBwdDtmb250LXN0cmV0Y2g6Tm9ybWFsOyB0ZXh0LWFsaWduOmxlZnQ7IGNvbG9y OiMwMDAwMDAgKS9GIDQvSVQvRnJlZVRleHRUeXBld3JpdGVyL00oRDoyMDA5MDUwODE1NDc0MSsw MicwMCcpL05NKDEzNmEzYTcwLTAyYWUtNDA5YS1hNWIzLTBlY2IxZDg0MDljNCkvUCAxMSAwIFIv UkMoPD94bWwgdmVyc2lvbj0iMS4wIj8+PGJvZHkgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5 OTkveGh0bWwiIHhtbG5zOnhmYT0iaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8x LjAvIiB4ZmE6QVBJVmVyc2lvbj0iQWNyb2JhdDo5LjEuMCIgeGZhOnNwZWM9IjIuMC4yIiAgc3R5 bGU9ImZvbnQtc2l6ZTo4LjBwdDt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6IzAwMDAwMDtmb250LXdl aWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWw7XA1mb250LWZhbWlseTpDb3VyO2ZvbnQtc3Ry ZXRjaDpub3JtYWwiPjxwIGRpcj0ibHRyIj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6MTYuM3B0 O2ZvbnQtZmFtaWx5OkNvdXJpZXIiPjA1LzA4PC9zcGFuPjwvcD48L2JvZHk+KS9SRFswLjUgMC41 IDAuNSAwLjVdL1JlY3RbMjg3LjYwNyAwLjc1MjY3IDMxMi42MTcgMTMuNzUyN10vU3ViaihTY2hy ZWlibWFzY2hpbmVudGV4dCkvU3VidHlwZS9GcmVlVGV4dC9UKFhUUkVNRSkvVHlwZS9Bbm5vdD4+ DWVuZG9iag01MCAwIG9iag08PC9BUDw8L04gODQgMCBSPj4vQlMgNTQgMCBSL0NyZWF0aW9uRGF0 ZShEOjIwMDkwNDI2MTkwNjU1KzAyJzAwJykvREEoMTEgVEwgL0NvdXIgOCBUZikvRFMoZm9udDog Q291cmllciA4LjBwdDsgdGV4dC1hbGlnbjpsZWZ0OyBjb2xvcjojMDAwMDAwICkvRiA0L0lUL0Zy ZWVUZXh0VHlwZXdyaXRlci9NKEQ6MjAwOTA1MDgxNTQ3MDIrMDInMDAnKS9OTSgzY2ViMzA3Mi0y Zjk2LTRkM2ItOWNhYS03NzRlNmY5NzRlNzcpL1AgMTEgMCBSL1JEWzAuNSAwLjUgMC41IDAuNV0v UmVjdFsyOTkuNzA2IDIuMDUyNCAzMTMuMzcxIDE4LjAwOTldL1N1YmooU2NocmVpYm1hc2NoaW5l bnRleHQpL1N1YnR5cGUvRnJlZVRleHQvVChYVFJFTUUpL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNODEg MCBvYmoNPDwvQVA8PC9OIDgzIDAgUj4+L0JTIDgyIDAgUi9DcmVhdGlvbkRhdGUoRDoyMDA5MDUw ODE1NDcwNyswMicwMCcpL0RBKDkuNzUgVEwgL0NvdXIgNyBUZikvRFMoZm9udDogQ291cmllciA3 LjBwdDsgdGV4dC1hbGlnbjpsZWZ0OyBjb2xvcjojMDAwMDAwICkvRiA0L0lUL0ZyZWVUZXh0VHlw ZXdyaXRlci9NKEQ6MjAwOTA1MDgxNTQ3MDgrMDInMDAnKS9OTShkNGI4NjdmZC04ZGNjLTQ5YTct OWVjMy1hMWQ5ZGNiODg2Y2QpL1AgMTEgMCBSL1JEWzAuNSAwLjUgMC41IDAuNV0vUmVjdFsyODAu MDA1IC00LjYwMDg4IDI5NS40MDUgOC4zOTkxMl0vU3ViaihTY2hyZWlibWFzY2hpbmVudGV4dCkv U3VidHlwZS9GcmVlVGV4dC9UKFhUUkVNRSkvVHlwZS9Bbm5vdD4+DWVuZG9iag04MiAwIG9iag08 PC9XIDAuMD4+DWVuZG9iag04MyAwIG9iag08PC9CQm94WzI4MC4wMDUgLTQuNjAwODggMjk1LjQw NSA4LjM5OTEyXS9Gb3JtVHlwZSAxL0xlbmd0aCA1NC9NYXRyaXhbMS4wIDAuMCAwLjAgMS4wIC0y ODAuMDA1IDQuNjAwODhdL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERl0+Pi9TdWJ0eXBlL0Zvcm0v VHlwZS9YT2JqZWN0Pj5zdHJlYW0NCnEKMSAwIDAgMSAwIDAgY20KMjgwLjUwNSAtNC4xMDA5IDE0 LjQgMTIgcmUKVwpuCjAgZwpRCg0KZW5kc3RyZWFtDWVuZG9iag04NCAwIG9iag08PC9CQm94WzI5 OS43MDYgMi4wNTI0IDMxMy4zNzEgMTguMDA5OV0vRm9ybVR5cGUgMS9MZW5ndGggNjAvTWF0cml4 WzEuMCAwLjAgMC4wIDEuMCAtMjk5LjcwNiAtMi4wNTI0XS9SZXNvdXJjZXM8PC9Qcm9jU2V0Wy9Q REZdPj4vU3VidHlwZS9Gb3JtL1R5cGUvWE9iamVjdD4+c3RyZWFtDQpxCjEgMCAwIDEgMCAwIGNt CjMwMC4yMDYgMi41NTI0IDEyLjY2NSAxNC45NTc1IHJlClcKbgowIGcKUQoNCmVuZHN0cmVhbQ1l bmRvYmoNODUgMCBvYmoNPDwvQkJveFsyODcuNjA3IDAuNzUyNjcgMzEyLjYxNyAxMy43NTI3XS9G b3JtVHlwZSAxL0xlbmd0aCAxMDMvTWF0cml4WzEuMCAwLjAgMC4wIDEuMCAtMjg3LjYwNyAtMC43 NTI2N10vUmVzb3VyY2VzPDwvRm9udDw8L0NvdXIgNDAgMCBSPj4vUHJvY1NldFsvUERGL1RleHRd Pj4vU3VidHlwZS9Gb3JtL1R5cGUvWE9iamVjdD4+c3RyZWFtDQpxCjEgMCAwIDEgMCAwIGNtCjI4 OC4xMDcgMS4yNTI3IDI0LjAxIDEyIHJlClcKbgowIGcKQlQKL0NvdXIgOCBUZgowIGcKMjg4LjEw NyA3LjY0NSBUZAooMDUvMDgpIFRqCkVUClEKDQplbmRzdHJlYW0NZW5kb2JqDTg2IDAgb2JqDTw8 L0JCb3hbMjg4LjkwNyA3LjY4NDU3IDMwNC4zMDcgMjAuNjg0Nl0vRm9ybVR5cGUgMS9MZW5ndGgg NTMvTWF0cml4WzEuMCAwLjAgMC4wIDEuMCAtMjg4LjkwNyAtNy42ODQ1N10vUmVzb3VyY2VzPDwv UHJvY1NldFsvUERGXT4+L1N1YnR5cGUvRm9ybS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KcQoxIDAg MCAxIDAgMCBjbQoyODkuNDA3IDguMTg0NiAxNC40IDEyIHJlClcKbgowIGcKUQoNCmVuZHN0cmVh bQ1lbmRvYmoNODcgMCBvYmoNPDwvQkJveFsyOTEuOTQgNS4wNTM1OSAzMzYuMTUgMTguOTUxNl0v Rm9ybVR5cGUgMS9MZW5ndGggNTcvTWF0cml4WzEuMCAwLjAgMC4wIDEuMCAtMjkxLjk0IC01LjA1 MzU5XS9SZXNvdXJjZXM8PC9Qcm9jU2V0Wy9QREZdPj4vU3VidHlwZS9Gb3JtL1R5cGUvWE9iamVj dD4+c3RyZWFtDQpxCjEgMCAwIDEgMCAwIGNtCjI5Mi40NCA1LjU1MzYgNDMuMjEgMTIuODk4IHJl ClcKbgowIGcKUQoNCmVuZHN0cmVhbQ1lbmRvYmoNeHJlZg0KMCAxDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjYgMg0KMDAwMDA4NjM3NSAwMDAwMCBuDQowMDAwMDg5NTY2IDAwMDAwIG4NCjQxIDENCjAw MDAwODk2NTcgMDAwMDAgbg0KNDMgMQ0KMDAwMDA4OTc1MiAwMDAwMCBuDQo0OCAzDQowMDAwMDkw MTM5IDAwMDAwIG4NCjAwMDAwOTA1MzEgMDAwMDAgbg0KMDAwMDA5MTM3OSAwMDAwMCBuDQo4MSA3 DQowMDAwMDkxNzY3IDAwMDAwIG4NCjAwMDAwOTIxNTkgMDAwMDAgbg0KMDAwMDA5MjE4NiAwMDAw MCBuDQowMDAwMDkyNDM1IDAwMDAwIG4NCjAwMDAwOTI2ODggMDAwMDAgbg0KMDAwMDA5MzAxMyAw MDAwMCBuDQowMDAwMDkzMjYxIDAwMDAwIG4NCnRyYWlsZXINCjw8L1NpemUgODgvUm9vdCA5IDAg Ui9JbmZvIDcgMCBSL0lEWzw1MzY3Q0REMDE5ODQ0MThGQTlEQTY5RUREOEE4OEYwRT48RUJEM0Uy OTBCNDdBRUM0ODkwOTJDRjczRDgzMUY4QUY+XS9QcmV2IDg2MDUzPj4NCnN0YXJ0eHJlZg0KOTM1 MTANCiUlRU9GDQo2IDAgb2JqDTw8L0xlbmd0aCAzMTE0L1N1YnR5cGUvWE1ML1R5cGUvTWV0YWRh dGE+PnN0cmVhbQ0KPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRj emtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRv YmUgWE1QIENvcmUgNC4yLjEtYzA0MyA1Mi4zNzI3MjgsIDIwMDkvMDEvMTgtMTU6MDg6MDQgICAg ICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8y Mi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAg ICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAg ICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDA5LTA1LTA5VDEzOjUxOjU4KzAyOjAwPC94bXA6TW9kaWZ5 RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMDktMDQtMjFUMTA6MTM6NDQrMDM6MDA8 L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDA5LTA1LTA5VDEz OjUxOjU4KzAyOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4K ICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9 Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5h cHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAg IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJo dHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIj4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50 SUQ+dXVpZDpjYmMwOGMxNi1lZjRiLWI4NGYtYTc2NC0wNmMzNmVmZTBjODA8L3htcE1NOkRvY3Vt ZW50SUQ+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnV1aWQ6ZTA1ZDk3ODQtZjEyZi00MTJi LTg2NzYtMWZhYWVmNjMyZjYxPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICA8L3JkZjpEZXNjcmlw dGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAg 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 CiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+DQplbmRzdHJl YW0NZW5kb2JqDTcgMCBvYmoNPDwvQ3JlYXRpb25EYXRlKEQ6MjAwOTA0MjExMDEzNDQrMDMnMDAn KS9Nb2REYXRlKEQ6MjAwOTA1MDkxMzUxNTgrMDInMDAnKT4+DWVuZG9iag00OSAwIG9iag08PC9B UDw8L04gODggMCBSPj4vQlMgNTYgMCBSL0NvbnRlbnRzKDA1LzA5KS9DcmVhdGlvbkRhdGUoRDoy MDA5MDQyNjE5MDYyMCswMicwMCcpL0RBKDAgRyAwIGcgMCBUYyAwIFR3IDEwMCBUeiAxNi4zIFRM IDAgVHMgMCBUciAvQ291ciA4IFRmKS9EUyhmb250OiBDb3VyIDguMHB0O2ZvbnQtc3RyZXRjaDpO b3JtYWw7IHRleHQtYWxpZ246bGVmdDsgY29sb3I6IzAwMDAwMCApL0YgNC9JVC9GcmVlVGV4dFR5 cGV3cml0ZXIvTShEOjIwMDkwNTA5MTM1MTU4KzAyJzAwJykvTk0oMTM2YTNhNzAtMDJhZS00MDlh LWE1YjMtMGVjYjFkODQwOWM0KS9QIDExIDAgUi9SQyg8P3htbCB2ZXJzaW9uPSIxLjAiPz48Ym9k eSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6eGZhPSJodHRwOi8v d3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLzEuMC8iIHhmYTpBUElWZXJzaW9uPSJBY3JvYmF0 OjkuMS4wIiB4ZmE6c3BlYz0iMi4wLjIiICBzdHlsZT0iZm9udC1zaXplOjguMHB0O3RleHQtYWxp Z246bGVmdDtjb2xvcjojMDAwMDAwO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1h bDtcDWZvbnQtZmFtaWx5OkNvdXI7Zm9udC1zdHJldGNoOm5vcm1hbCI+PHAgZGlyPSJsdHIiPjxz cGFuIHN0eWxlPSJsaW5lLWhlaWdodDoxNi4zcHQ7Zm9udC1mYW1pbHk6Q291cmllciI+MDUvMDk8 L3NwYW4+PC9wPjwvYm9keT4pL1JEWzAuNSAwLjUgMC41IDAuNV0vUmVjdFsyODcuNjA3IDAuNzUy NjcgMzEyLjYxNyAxMy43NTI3XS9TdWJqKFNjaHJlaWJtYXNjaGluZW50ZXh0KS9TdWJ0eXBlL0Zy ZWVUZXh0L1QoWFRSRU1FKS9UeXBlL0Fubm90Pj4NZW5kb2JqDTg4IDAgb2JqDTw8L0JCb3hbMjg3 LjYwNyAwLjc1MjY3IDMxMi42MTcgMTMuNzUyN10vRm9ybVR5cGUgMS9MZW5ndGggMTAzL01hdHJp eFsxLjAgMC4wIDAuMCAxLjAgLTI4Ny42MDcgLTAuNzUyNjddL1Jlc291cmNlczw8L0ZvbnQ8PC9D b3VyIDQwIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XT4+L1N1YnR5cGUvRm9ybS9UeXBlL1hPYmpl Y3Q+PnN0cmVhbQ0KcQoxIDAgMCAxIDAgMCBjbQoyODguMTA3IDEuMjUyNyAyNC4wMSAxMiByZQpX Cm4KMCBnCkJUCi9Db3VyIDggVGYKMCBnCjI4OC4xMDcgNy42NDUgVGQKKDA1LzA5KSBUagpFVApR Cg0KZW5kc3RyZWFtDWVuZG9iag14cmVmDQowIDENCjAwMDAwMDAwMDAgNjU1MzUgZg0KNiAyDQow MDAwMDk0MDA0IDAwMDAwIG4NCjAwMDAwOTcxOTUgMDAwMDAgbg0KNDkgMQ0KMDAwMDA5NzI4NiAw MDAwMCBuDQo4OCAxDQowMDAwMDk4MTM0IDAwMDAwIG4NCnRyYWlsZXINCjw8L1NpemUgODkvUm9v dCA5IDAgUi9JbmZvIDcgMCBSL0lEWzw1MzY3Q0REMDE5ODQ0MThGQTlEQTY5RUREOEE4OEYwRT48 NDVEMDEzNkI4N0UyNzY0NUJFMUI3OUQ0RDNBMTE5Mjk+XS9QcmV2IDkzNTEwPj4NCnN0YXJ0eHJl Zg0KOTg0NTkNCiUlRU9GDQo2IDAgb2JqDTw8L0xlbmd0aCAzMTE0L1N1YnR5cGUvWE1ML1R5cGUv TWV0YWRhdGE+PnN0cmVhbQ0KPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpy ZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0 az0iQWRvYmUgWE1QIENvcmUgNC4yLjEtYzA0MyA1Mi4zNzI3MjgsIDIwMDkvMDEvMTgtMTU6MDg6 MDQgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5 OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0 PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+ CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDA5LTA1LTEwVDE2OjU3OjU4KzAyOjAwPC94bXA6 TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMDktMDQtMjFUMTA6MTM6NDQr MDM6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDA5LTA1 LTEwVDE2OjU3OjU4KzAyOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICA8L3JkZjpEZXNjcmlw dGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1s bnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZv cm1hdD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+ CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnht cE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIj4KICAgICAgICAgPHhtcE1NOkRv Y3VtZW50SUQ+dXVpZDpjYmMwOGMxNi1lZjRiLWI4NGYtYTc2NC0wNmMzNmVmZTBjODA8L3htcE1N OkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnV1aWQ6OWY2MTQxNWUtNzZi OC00ZGY3LTg5YjctODU3YjBlYjBhMGQ5PC94bXBNTTpJbnN0YW5jZUlEPgogICAgICA8L3JkZjpE ZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAg 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 ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+DQpl bmRzdHJlYW0NZW5kb2JqDTcgMCBvYmoNPDwvQ3JlYXRpb25EYXRlKEQ6MjAwOTA0MjExMDEzNDQr MDMnMDAnKS9Nb2REYXRlKEQ6MjAwOTA1MTAxNjU3NTgrMDInMDAnKT4+DWVuZG9iag00OSAwIG9i ag08PC9BUDw8L04gODkgMCBSPj4vQlMgNTYgMCBSL0NvbnRlbnRzKDA1LzEwKS9DcmVhdGlvbkRh dGUoRDoyMDA5MDQyNjE5MDYyMCswMicwMCcpL0RBKDAgRyAwIGcgMCBUYyAwIFR3IDEwMCBUeiAx Ni4zIFRMIDAgVHMgMCBUciAvQ291ciA4IFRmKS9EUyhmb250OiBDb3VyIDguMHB0O2ZvbnQtc3Ry ZXRjaDpOb3JtYWw7IHRleHQtYWxpZ246bGVmdDsgY29sb3I6IzAwMDAwMCApL0YgNC9JVC9GcmVl VGV4dFR5cGV3cml0ZXIvTShEOjIwMDkwNTEwMTY1NzU4KzAyJzAwJykvTk0oMTM2YTNhNzAtMDJh ZS00MDlhLWE1YjMtMGVjYjFkODQwOWM0KS9QIDExIDAgUi9SQyg8P3htbCB2ZXJzaW9uPSIxLjAi Pz48Ym9keSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6eGZhPSJo dHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLzEuMC8iIHhmYTpBUElWZXJzaW9uPSJB Y3JvYmF0OjkuMS4wIiB4ZmE6c3BlYz0iMi4wLjIiICBzdHlsZT0iZm9udC1zaXplOjguMHB0O3Rl eHQtYWxpZ246bGVmdDtjb2xvcjojMDAwMDAwO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxl Om5vcm1hbDtcDWZvbnQtZmFtaWx5OkNvdXI7Zm9udC1zdHJldGNoOm5vcm1hbCI+PHAgZGlyPSJs dHIiPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDoxNi4zcHQ7Zm9udC1mYW1pbHk6Q291cmllciI+ MDUvMTA8L3NwYW4+PC9wPjwvYm9keT4pL1JEWzAuNSAwLjUgMC41IDAuNV0vUmVjdFsyODcuNjA3 IDAuNzUyNjcgMzEyLjYxNyAxMy43NTI3XS9TdWJqKFNjaHJlaWJtYXNjaGluZW50ZXh0KS9TdWJ0 eXBlL0ZyZWVUZXh0L1QoWFRSRU1FKS9UeXBlL0Fubm90Pj4NZW5kb2JqDTg5IDAgb2JqDTw8L0JC b3hbMjg3LjYwNyAwLjc1MjY3IDMxMi42MTcgMTMuNzUyN10vRm9ybVR5cGUgMS9MZW5ndGggMTAz L01hdHJpeFsxLjAgMC4wIDAuMCAxLjAgLTI4Ny42MDcgLTAuNzUyNjddL1Jlc291cmNlczw8L0Zv bnQ8PC9Db3VyIDQwIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XT4+L1N1YnR5cGUvRm9ybS9UeXBl L1hPYmplY3Q+PnN0cmVhbQ0KcQoxIDAgMCAxIDAgMCBjbQoyODguMTA3IDEuMjUyNyAyNC4wMSAx MiByZQpXCm4KMCBnCkJUCi9Db3VyIDggVGYKMCBnCjI4OC4xMDcgNy42NDUgVGQKKDA1LzEwKSBU agpFVApRCg0KZW5kc3RyZWFtDWVuZG9iag14cmVmDQowIDENCjAwMDAwMDAwMDAgNjU1MzUgZg0K NiAyDQowMDAwMDk4NzQxIDAwMDAwIG4NCjAwMDAxMDE5MzIgMDAwMDAgbg0KNDkgMQ0KMDAwMDEw MjAyMyAwMDAwMCBuDQo4OSAxDQowMDAwMTAyODcxIDAwMDAwIG4NCnRyYWlsZXINCjw8L1NpemUg OTAvUm9vdCA5IDAgUi9JbmZvIDcgMCBSL0lEWzw1MzY3Q0REMDE5ODQ0MThGQTlEQTY5RUREOEE4 OEYwRT48QkM4QzU2MjdCRjkxNjQ0NjlBQTk1Qjg1RTIwNkM2MzE+XS9QcmV2IDk4NDU5Pj4NCnN0 YXJ0eHJlZg0KMTAzMTk2DQolJUVPRg0KNiAwIG9iag08PC9MZW5ndGggMzExNC9TdWJ0eXBlL1hN TC9UeXBlL01ldGFkYXRhPj5zdHJlYW0NCjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1w Q2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8i IHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMi4xLWMwNDMgNTIuMzcyNzI4LCAyMDA5LzAxLzE4 LTE1OjA4OjA0ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMu b3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJk ZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFw LzEuMC8iPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAwOS0wNS0xMVQxNDoyMjo0MSswMjow MDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDA5LTA0LTIxVDEw OjEzOjQ0KzAzOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+ MjAwOS0wNS0xMVQxNDoyMjo0MSswMjowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgPC9yZGY6 RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAg ICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAgICAg IDxkYzpmb3JtYXQ+YXBwbGljYXRpb24vcGRmPC9kYzpmb3JtYXQ+CiAgICAgIDwvcmRmOkRlc2Ny aXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4 bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyI+CiAgICAgICAgIDx4 bXBNTTpEb2N1bWVudElEPnV1aWQ6Y2JjMDhjMTYtZWY0Yi1iODRmLWE3NjQtMDZjMzZlZmUwYzgw PC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD51dWlkOmMxY2Y3 ZWY4LWRiMGMtNDg2Ny1hZWE0LTU0ZjNkNTZhMjBlZjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAg PC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAg 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 ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0i dyI/Pg0KZW5kc3RyZWFtDWVuZG9iag03IDAgb2JqDTw8L0NyZWF0aW9uRGF0ZShEOjIwMDkwNDIx MTAxMzQ0KzAzJzAwJykvTW9kRGF0ZShEOjIwMDkwNTExMTQyMjQxKzAyJzAwJyk+Pg1lbmRvYmoN NDkgMCBvYmoNPDwvQVA8PC9OIDkwIDAgUj4+L0JTIDU2IDAgUi9Db250ZW50cygwNS8xMSkvQ3Jl YXRpb25EYXRlKEQ6MjAwOTA0MjYxOTA2MjArMDInMDAnKS9EQSgwIEcgMCBnIDAgVGMgMCBUdyAx MDAgVHogMTYuMyBUTCAwIFRzIDAgVHIgL0NvdXIgOCBUZikvRFMoZm9udDogQ291ciA4LjBwdDtm b250LXN0cmV0Y2g6Tm9ybWFsOyB0ZXh0LWFsaWduOmxlZnQ7IGNvbG9yOiMwMDAwMDAgKS9GIDQv SVQvRnJlZVRleHRUeXBld3JpdGVyL00oRDoyMDA5MDUxMTE0MjI0MSswMicwMCcpL05NKDEzNmEz YTcwLTAyYWUtNDA5YS1hNWIzLTBlY2IxZDg0MDljNCkvUCAxMSAwIFIvUkMoPD94bWwgdmVyc2lv bj0iMS4wIj8+PGJvZHkgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbG5z OnhmYT0iaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8xLjAvIiB4ZmE6QVBJVmVy c2lvbj0iQWNyb2JhdDo5LjEuMCIgeGZhOnNwZWM9IjIuMC4yIiAgc3R5bGU9ImZvbnQtc2l6ZTo4 LjBwdDt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6IzAwMDAwMDtmb250LXdlaWdodDpub3JtYWw7Zm9u dC1zdHlsZTpub3JtYWw7XA1mb250LWZhbWlseTpDb3VyO2ZvbnQtc3RyZXRjaDpub3JtYWwiPjxw IGRpcj0ibHRyIj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6MTYuM3B0O2ZvbnQtZmFtaWx5OkNv dXJpZXIiPjA1LzExPC9zcGFuPjwvcD48L2JvZHk+KS9SRFswLjUgMC41IDAuNSAwLjVdL1JlY3Rb Mjg3LjYwNyAwLjc1MjY3IDMxMi42MTcgMTMuNzUyN10vU3ViaihTY2hyZWlibWFzY2hpbmVudGV4 dCkvU3VidHlwZS9GcmVlVGV4dC9UKFhUUkVNRSkvVHlwZS9Bbm5vdD4+DWVuZG9iag05MCAwIG9i ag08PC9CQm94WzI4Ny42MDcgMC43NTI2NyAzMTIuNjE3IDEzLjc1MjddL0Zvcm1UeXBlIDEvTGVu Z3RoIDEwMy9NYXRyaXhbMS4wIDAuMCAwLjAgMS4wIC0yODcuNjA3IC0wLjc1MjY3XS9SZXNvdXJj ZXM8PC9Gb250PDwvQ291ciA0MCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0+Pi9TdWJ0eXBlL0Zv cm0vVHlwZS9YT2JqZWN0Pj5zdHJlYW0NCnEKMSAwIDAgMSAwIDAgY20KMjg4LjEwNyAxLjI1Mjcg MjQuMDEgMTIgcmUKVwpuCjAgZwpCVAovQ291ciA4IFRmCjAgZwoyODguMTA3IDcuNjQ1IFRkCigw NS8xMSkgVGoKRVQKUQoNCmVuZHN0cmVhbQ1lbmRvYmoNeHJlZg0KMCAxDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjYgMg0KMDAwMDEwMzQ3OSAwMDAwMCBuDQowMDAwMTA2NjcwIDAwMDAwIG4NCjQ5IDEN CjAwMDAxMDY3NjEgMDAwMDAgbg0KOTAgMQ0KMDAwMDEwNzYwOSAwMDAwMCBuDQp0cmFpbGVyDQo8 PC9TaXplIDkxL1Jvb3QgOSAwIFIvSW5mbyA3IDAgUi9JRFs8NTM2N0NERDAxOTg0NDE4RkE5REE2 OUVERDhBODhGMEU+PEEyQzBBRkVEQUU3OEM3NDBCRjlCNzE4OEU4QUY4ODQxPl0vUHJldiAxMDMx OTY+Pg0Kc3RhcnR4cmVmDQoxMDc5MzQNCiUlRU9GDQo= --b1_c19a8585fdb263aac981d2a7c266c7ea-- From Milind.Dumbare@asterdata.com Tue May 12 05:42:57 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CAgur6063093 for ; Tue, 12 May 2009 05:42:57 -0500 X-ASG-Debug-ID: 1242124982-3e6a005d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pandora.asterdata.local (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 353B41D28082 for ; Tue, 12 May 2009 03:43:02 -0700 (PDT) Received: from pandora.asterdata.local (71-6-94-85.static-ip.telepacific.net [71.6.94.85]) by cuda.sgi.com with ESMTP id GxGJuUBIw1cWWCYn for ; Tue, 12 May 2009 03:43:02 -0700 (PDT) Received: from [10.2.1.112] (10.2.1.112) by Pandora.AsterData.local (10.1.1.14) with Microsoft SMTP Server id 8.1.358.0; Tue, 12 May 2009 03:43:00 -0700 X-ASG-Orig-Subj: configure issue. Subject: configure issue. From: Milind Dumbare To: Content-Type: text/plain Organization: Asterdata Date: Tue, 12 May 2009 16:12:55 +0530 Message-ID: <1242124975.3608.11.camel@alhena> MIME-Version: 1.0 X-Mailer: Evolution 2.26.1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 71-6-94-85.static-ip.telepacific.net[71.6.94.85] X-Barracuda-Start-Time: 1242124983 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4287 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= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25575 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I came across this problem when I was doing ./configure of xfsprogs. I had to install gettext from sources (as xfsprogs needed it) which resided in my toolchain and while doing configure xfsprogs's configure couldn't fine msgfmt, msgmerge and xgettext even if I do PATH=:$PATH. if I manually set MSGFMT, MSGMERGE to their binary paths this works. Is this not expected? When I looked at the sources if I change configure:12316 as follows - as_dummy="/usr/bin:/usr/local/bin:/usr/freeware/bin" + as_dummy="/usr/bin:/usr/local/bin:/usr/freeware/bin:$PATH" this works for MSGFMT -Miline From corpuscontrol@gmail.com Tue May 12 06:09:31 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_50 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CB9U95064956 for ; Tue, 12 May 2009 06:09:31 -0500 X-ASG-Debug-ID: 1242126849-4dbe02ae0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp-out.mobistar.be (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9933AF93810 for ; Tue, 12 May 2009 04:14:10 -0700 (PDT) Received: from smtp-out.mobistar.be (smtp-out.mobistar.be [80.12.204.214]) by cuda.sgi.com with ESMTP id HRCOHOrxC5x3yCH7 for ; Tue, 12 May 2009 04:14:10 -0700 (PDT) Received: from meplus.info (localhost [127.0.0.1]) by mwinf8113.mobistar.be (SMTP Server) with ESMTP id D57251D000A19 for ; Tue, 12 May 2009 13:09:34 +0200 (CEST) Received: from Christophe (unknown [91.86.93.175]) by mwinf8113.mobistar.be (SMTP Server) with ESMTP id B56491D000680 for ; Tue, 12 May 2009 13:09:34 +0200 (CEST) X-ME-UUID: 20090512110934743.B56491D000680@mwinf8113.mobistar.be X-ME-bounce-domain: mobistarmail.be From: "corpuscontrol@gmail.com" X-ASG-Orig-Subj: Soulager vos douleurs en un instant ? Subject: Soulager vos douleurs en un instant ? To: xfs@oss.sgi.com Content-Type: text/plain;charset=iso-8859-15 Reply-To: corpuscontrol@gmail.com Date: Tue, 12 May 2009 13:09:39 +0000 Message-Id: <20090512110934.B56491D000680@mwinf8113.mobistar.be> X-Barracuda-Connect: smtp-out.mobistar.be[80.12.204.214] X-Barracuda-Start-Time: 1242126851 X-Barracuda-Bayes: INNOCENT GLOBAL 0.7192 1.0000 1.5183 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.25577 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Soulager vos douleurs en un instant ? C'est possible grâce à une technologie révolutionnaire accessible à tous . EFFET IMMEDIAT GARANTI. De plus, possibilité de développer un complément de revenu substantiel. Temps plein ou temps partiel. Plan de rémunération extraordinaire. VOUS ETES OBLIGE DE REUSSIR ! Intéressé par l'un de ces deux points? Répondez à ce message UNIQUE pour plus d'infos. Désinscription: Ce message est un envoi unique; Saisissez votre chance d'améliorer votre quotidien MAINTENANT !!! From milind@gslab.com Tue May 12 06:56:36 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CBuZZC067991 for ; Tue, 12 May 2009 06:56:36 -0500 X-ASG-Debug-ID: 1242129400-445201de0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from padma.gslab.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 6DD4327CAFA for ; Tue, 12 May 2009 04:56:41 -0700 (PDT) Received: from padma.gslab.com (padma.gslab.com [59.163.66.102]) by cuda.sgi.com with SMTP id Tj4p5uxZ7dpBwIKM for ; Tue, 12 May 2009 04:56:41 -0700 (PDT) Received: from [172.20.25.198] (unknown [172.20.25.198]) (Authenticated sender: milind) by padma.gslab.com (Postfix) with ESMTP id 88E2E17701C0 for ; Tue, 12 May 2009 17:26:38 +0530 (IST) X-ASG-Orig-Subj: configure issue Subject: configure issue From: Milind To: "xfs@oss.sgi.com" Content-Type: text/plain Date: Tue, 12 May 2009 17:20:03 +0530 Message-Id: <1242129003.3608.12.camel@alhena> Mime-Version: 1.0 X-Mailer: Evolution 2.26.1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: padma.gslab.com[59.163.66.102] X-Barracuda-Start-Time: 1242129402 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5300 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.75 X-Barracuda-Spam-Status: No, SCORE=0.75 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25580 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I came across this problem when I was doing ./configure of xfsprogs. I had to install gettext from sources (as xfsprogs needed it) which resided in my toolchain and while doing configure xfsprogs's configure couldn't fine msgfmt, msgmerge and xgettext even if I do PATH=:$PATH. if I manually set MSGFMT, MSGMERGE to their binary paths this works. Is this not expected? When I looked at the sources if I change configure:12316 as follows - as_dummy="/usr/bin:/usr/local/bin:/usr/freeware/bin" + as_dummy="/usr/bin:/usr/local/bin:/usr/freeware/bin:$PATH" this works for MSGFMT -Miline From SEMA-CR-1-4AVGCT@ptcmarketing.com Tue May 12 07:29:29 2009 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_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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CCTS61069964 for ; Tue, 12 May 2009 07:29:29 -0500 X-ASG-Debug-ID: 1242131374-2361008e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from crmmaxx.ptc.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 742951D28263 for ; Tue, 12 May 2009 05:29:35 -0700 (PDT) Received: from crmmaxx.ptc.com (crmmaxx.ptc.com [12.11.148.125]) by cuda.sgi.com with ESMTP id a10qugdTc8oJTveW for ; Tue, 12 May 2009 05:29:35 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation X-IronPort-AV: E=Sophos;i="4.41,182,1241409600"; d="scan'208,217";a="299292336" Received: from hqcrmint1.ptcnet.ptc.com ([132.253.202.83]) by crmmaxx.ptc.com with ESMTP; 12 May 2009 07:58:25 -0400 To: MIME-Version: 1.0 Reply-To: noreply@ptc.com From: "PTC Communications" X-ASG-Orig-Subj: Extended opportunity to save on registration fees for PTC/USER World Event 2009 Subject: Extended opportunity to save on registration fees for PTC/USER World Event 2009 Sender: "PTC Communications" Message-ID: Content-Type: multipart/alternative; boundary=BF_1242125746442_19057230 X-Barracuda-Connect: crmmaxx.ptc.com[12.11.148.125] X-Barracuda-Start-Time: 1242131375 Date: Tue, 12 May 2009 05:29:35 -0700 (PDT) X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --BF_1242125746442_19057230 Content-Type: text/plain; charset=UTF-8 EXTENDED OPPORTUNITY TO SAVE ON REGISTRATION FEES The early-bird deadline for registration savings has been extended. Register for PTC/USER World Event 2009 and take advantage of the early-bird discount. REGISTER NOW (http://www.ptc.com/read?&u=1-5LWLN-2077&c=1-3P40RP&o=1-49UTT7&w=2354034&t=http%3A%2F%2Fwww.ptcuser.org%2F2009%2Fregistration.html) If you've attended this event in the past, you know what to expect - new skills, new solutions, renewed energy and the chance to extend your network of peers. We realize that budgets are tight and employees are stretched thin. Can your boss honestly afford to send you to a conference right now? They can't afford not to. In a tough economy, the companies that survive are those who stay ahead of the pack - those who streamline their processes, implement solutions before their competitors do, and keep their customers satisfied. The PTC/USER World Event will give you the tools you need to help your company do just that. Where else can you have access to more than 300 technical sessions across all PTC solutions, 200 hours of free hands-on training, 100 PTC and Partner exhibits, visionary keynotes & multiple networking events all under one roof? View the complete agenda. (http://www.ptc.com/read?&u=1-5LWLN-2077&c=1-3P40RP&o=1-49UTT7&w=2354034&t=http%3A%2F%2Fwww.ptcuser.org%2F2009%2Fagenda.html) On Twitter? For those of you planning to attend and tweet about the event, make sure to tag your tweets #PTCUSER09. And if you are unable to join us in Orlando, follow some of the action through live blogs and tweets on PTC.com. Stay tuned for more details. =============================================================================== contact PTC http://www.ptc.com/company/contacts/index.htm privacy policy http://www.ptc.com/company/policies/index.htm unsubscribe http://www.ptc.com/appserver/mkt/mail/preferences.jsp?&offd=1-49UTT7&campd=1-3P40RP&conud=1-5LWLN-2077&mailkey=2354034&email=xfs@oss.sgi.com change email preferences http://www.ptc.com/appserver/mkt/mail/preferences.jsp?&offd=1-49UTT7&campd=1-3P40RP&conud=1-5LWLN-2077&mailkey=2354034&email=xfs@oss.sgi.com edit profile http://www.ptc.com/read?&w=2354034&t=/common/account/index.htm ------------------------------------------------------------------------------- This email was sent to: xfs@oss.sgi.com PTC, 140 Kendrick Street, Needham, MA 02494 USA If you wish to unsubscribe from all PTC Emails, please send a blank email to unsubscribe@ptc.com. --BF_1242125746442_19057230 Content-Type: text/html; charset=UTF-8 Final Registration reminder Email FY09Q3 PTCUSER World Event
PTC.com

EXTENDED OPPORTUNITY TO SAVE ON REGISTRATION FEES

The early-bird deadline for registration savings has been extended. Register for PTC/USER World Event 2009 and take advantage of the early-bird discount.

REGISTER NOW  

If you've attended this event in the past, you know what to expect – new skills, new solutions, renewed energy and the chance to extend your network of peers.

We realize that budgets are tight and employees are stretched thin. Can your boss honestly afford to send you to a conference right now?  They can't afford not to.

In a tough economy, the companies that survive are those who stay ahead of the pack – those who streamline their processes, implement solutions before their competitors do, and keep their customers satisfied. The PTC/USER World Event will give you the tools you need to help your company do just that. 

Where else can you have access to more than 300 technical sessions across all PTC solutions, 200 hours of free hands-on training, 100 PTC and Partner exhibits, visionary keynotes & multiple networking events all under one roof?  View the complete agenda .

On Twitter? For those of you planning to attend and tweet about the event, make sure to tag your tweets #PTCUSER09. And if you are unable to join us in Orlando, follow some of the action through live blogs and tweets on PTC.com. Stay tuned for more details.


contact PTC | privacy policy | unsubscribe | change email preferences | edit profile
This email was sent to: xfs@oss.sgi.com     PTC, 140 Kendrick Street, Needham, MA 02494 USA
If you wish to unsubscribe from all PTC Emails, please send a blank email to unsubscribe@ptc.com.
--BF_1242125746442_19057230-- From madrabbit@gmail.com Tue May 12 10:37:59 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_26 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CFbwS5081185 for ; Tue, 12 May 2009 10:37:58 -0500 X-ASG-Debug-ID: 1242142683-58e101a70000-NocioJ 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 2C31C27D3F2 for ; Tue, 12 May 2009 08:38:03 -0700 (PDT) Received: from yw-out-1718.google.com (yw-out-1718.google.com [74.125.46.153]) by cuda.sgi.com with ESMTP id BMAicL1NJSBnP7ij for ; Tue, 12 May 2009 08:38:03 -0700 (PDT) Received: by yw-out-1718.google.com with SMTP id 5so23934ywm.32 for ; Tue, 12 May 2009 08:38:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:received:in-reply-to :references:from:date:x-google-sender-auth:message-id:subject:to:cc :content-type:content-transfer-encoding; bh=6vm6iWE8h6Aj9E9l0DF0/VkDA4eyr1Ac5P3hELuSNMQ=; b=R5D/jljm9F+T7VsKRZiO2YCZ4PaHnstUmlEdZl99XBwYGaSvOEFSc6Lm03bG6mwvBy UOYWEvttfkqTom9G2ziqB4QjLacHl9Q+u2EcFdKaunAn+VskTmAMqsEK+XYE+20z7EFM Z87kcThxFKqp4tamzxpBBpZDhgplCahvCqE9E= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:from:date :x-google-sender-auth:message-id:subject:to:cc:content-type :content-transfer-encoding; b=OL8Cdd++tcjuW69uK7cr/6XzOtMyNPeEfVqwzD1rhHQ3opZcj6z+ket9u1OaVs407F ssrheN/TSLZ4hl7+Ib+oTCjpMKqjIMXiiiYnJX46fTXMRvXGWSK0F6Z0AkbM0a78Iyp6 WQcDHu+AGjm/ea9KcavAHkVtd1Ys+hSWnr4zc= MIME-Version: 1.0 Sender: madrabbit@gmail.com Received: by 10.151.134.11 with SMTP id l11mr15921082ybn.111.1242142683062; Tue, 12 May 2009 08:38:03 -0700 (PDT) In-Reply-To: <87ljp2v6vt.fsf@tac.ki.iif.hu> References: <874ovws94s.fsf@tac.ki.iif.hu> <87ljp2v6vt.fsf@tac.ki.iif.hu> From: Ray Lee Date: Tue, 12 May 2009 08:37:43 -0700 X-Google-Sender-Auth: ec4c982b364e7599 Message-ID: <2c0942db0905120837g702b457bm52a412293925021a@mail.gmail.com> X-ASG-Orig-Subj: Re: mmap vs mtime in 2.6.26 and up Subject: Re: mmap vs mtime in 2.6.26 and up To: Ferenc Wagner , Christoph Hellwig , Andrew Morton , xfs@oss.sgi.com Cc: linux-kernel@vger.kernel.org Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: yw-out-1718.google.com[74.125.46.153] X-Barracuda-Start-Time: 1242142684 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25594 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean (Adding Christoph Hellwig, xfs list, Andrew Morton to cc:) On Tue, May 12, 2009 at 5:32 AM, Ferenc Wagner wrote: > Hi, > > I've noticed that the last modification times of our RRD files got > stuck after upgrading from 2.6.24 to 2.6.26 (Debian Etch -> Lenny; I > also tested with 2.6.30-rc5, they are still stuck). =C2=A0It has some > literature, most notably kernel bug #2645, but that's closed long ago > and the resulting patch http://lkml.org/lkml/2008/1/22/370 is present > in my kernels. =C2=A0Still, the test program (version 3 from the bug repo= rt) > gives failures: > > $ ./mmap_test junk > Modifying junk... > Flushing data using sync()... > Failure: time not changed. > Not modifying junk... > Flushing data using msync()... > Success: time not changed. > Not modifying junk... > Flushing data using fsync()... > Success: time not changed. > Modifying junk... > Flushing data using msync()... > Failure: time not changed. > Modifying junk... > Flushing data using fsync()... > Failure: time not changed. > > Is this as expected? =C2=A0I reckon the bug wasn't solved fully, but it > seems to be worse that that. I don't think that's expected. Further, the test program (v3) from that bugzilla http://bugzilla.kernel.org/show_bug.cgi?id=3D2645 works for me under ext3, so perhaps this is an xfs-specific issue. > > I don't know if it's related or not, but another anomaly appeared > after the upgrade: minutes-long remount times. =C2=A0The machine always w= as > under a fair load (10), but mount /usr -oremount,rw never took > noticeable time. =C2=A0The IO load pushes two other filesystems. =C2=A0No= w > strace -tt shows: > > [...] > 01:24:08.463813 stat64("/sbin/mount.xfs", 0xbfa40eb0) =3D -1 ENOENT (No s= uch file or directory) > 01:24:08.463904 mount("/dev/mapper/noc7-usr", "/usr", 0x894a2c8, MS_MGC_V= AL|MS_NODEV|MS_REMOUNT, NULL) =3D 0 > 01:26:58.705387 readlink("/dev", 0xbfa3ef3b, 4096) =3D -1 EINVAL (Invalid= argument) > [...] > > After this, remount ro and rw again are quick for some time. > (I couldn't test this part with 2.6.30-rc5, but again, this may be > totally unrelated.) > > This bug is quite serious in our environment, as it thwarts the backup > software. =C2=A0The file system is xfs; rw,nosuid,nodev,nobarrier,noquota= . > -- > Regards, > Feri. From BATV+3ee5e63fb532671fcb88+2088+infradead.org+hch@bombadil.srs.infradead.org Tue May 12 10:53:01 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CFr14A081964 for ; Tue, 12 May 2009 10:53:01 -0500 X-ASG-Debug-ID: 1242143587-20a401ed0000-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 2352B1D292E3 for ; Tue, 12 May 2009 08:53:08 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id E9FSCXTjALiE6b0S for ; Tue, 12 May 2009 08:53:08 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3uHt-0007DQ-4i; Tue, 12 May 2009 15:53:01 +0000 Date: Tue, 12 May 2009 11:53:01 -0400 From: Christoph Hellwig To: Ray Lee Cc: Ferenc Wagner , Christoph Hellwig , Andrew Morton , xfs@oss.sgi.com, linux-kernel@vger.kernel.org, Anton Salikhmetov X-ASG-Orig-Subj: Re: mmap vs mtime in 2.6.26 and up Subject: Re: mmap vs mtime in 2.6.26 and up Message-ID: <20090512155301.GA23160@infradead.org> References: <874ovws94s.fsf@tac.ki.iif.hu> <87ljp2v6vt.fsf@tac.ki.iif.hu> <2c0942db0905120837g702b457bm52a412293925021a@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <2c0942db0905120837g702b457bm52a412293925021a@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: 1242143588 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, May 12, 2009 at 08:37:43AM -0700, Ray Lee wrote: > > I've noticed that the last modification times of our RRD files got > > stuck after upgrading from 2.6.24 to 2.6.26 (Debian Etch -> Lenny; I > > also tested with 2.6.30-rc5, they are still stuck). ??It has some > > literature, most notably kernel bug #2645, but that's closed long ago > > and the resulting patch http://lkml.org/lkml/2008/1/22/370 is present > > in my kernels. ??Still, the test program (version 3 from the bug report) > > gives failures: The problem is pretty simple. do_wp_page and __do_fault use file_update_time to update ctime and mtime. But this function is only a helper for simply filesystems that have a binary inode dirty/non dirty state and keep the m/ctime purely in the Linux inode. It must not be called from generic code as more complex filesystems need a notification through ->setattr to update the timestamps. This will also affect other filesystems like ubifs. I'm not entirely sure why it ever worked before, we must have picked up those c/mtime updates by accident somehow. From BATV+3ee5e63fb532671fcb88+2088+infradead.org+hch@bombadil.srs.infradead.org Tue May 12 10:56:47 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CFulV7082151 for ; Tue, 12 May 2009 10:56:47 -0500 X-ASG-Debug-ID: 1242143813-590502310000-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 1249427DA01 for ; Tue, 12 May 2009 08:56:53 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id oZA5BfvD0jjIfv5C for ; Tue, 12 May 2009 08:56:53 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3uLd-00089B-GW; Tue, 12 May 2009 15:56:53 +0000 Date: Tue, 12 May 2009 11:56:53 -0400 From: Christoph Hellwig To: Andrew Daviel Cc: xfs@oss.sgi.com, linux-iscsi-users@lists.sourceforge.net X-ASG-Orig-Subj: Re: Problems with XFS on iSCSI in RHEL4 Subject: Re: Problems with XFS on iSCSI in RHEL4 Message-ID: <20090512155653.GA28714@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: 1242143814 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, May 06, 2009 at 12:32:25PM -0700, Andrew Daviel wrote: > When I create an ext3 volume on the Sun, things are OK. > When I create an XFS volume, after doing mkdir, I get e.g. > kernel: Bad page state at free_hot_cold_page (in process 'iscsi-rx', > page c1069a20) > kernel: Trying to fix it up, but a reboot is needed > kernel: Bad page state at free_hot_cold_page (in process 'syslogd', > page c1069a20) That looks like the old disagreement on whether we could send non-refcountable pages to the block layer. XFS used to do this and iscsi didn't like it. Until today it's still not specified if it is allowed or not and most drivers don't care but XFS stopped doing that. From BATV+3ee5e63fb532671fcb88+2088+infradead.org+hch@bombadil.srs.infradead.org Tue May 12 11:03:57 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CG3upY082459 for ; Tue, 12 May 2009 11:03:57 -0500 X-ASG-Debug-ID: 1242144243-209d02270000-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 CB5791D296BF for ; Tue, 12 May 2009 09:04:03 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id u0VroArNUoC8pgJE for ; Tue, 12 May 2009 09:04:03 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3uSZ-0005j5-Et; Tue, 12 May 2009 16:04:03 +0000 Date: Tue, 12 May 2009 12:04:03 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: migration to selinux + xfs_fsr oddity.... Subject: Re: migration to selinux + xfs_fsr oddity.... Message-ID: <20090512160403.GB28714@infradead.org> References: <49FF9B8E.7040607@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49FF9B8E.7040607@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: 1242144243 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, May 04, 2009 at 08:51:10PM -0500, Eric Sandeen wrote: > This came up in RH Bugzilla #498860, "xfs_fsr fails to complete" > > The reporter had an existing xfs filesystem from another Linux OS, and > was using it under Fedora now. He had some files for which xfs_fsr > bails out with EINVAL: > > XFS_IOC_SWAPEXT failed: fragfile: Invalid argument As analyzed in the bugzilla this is a problem when selinux attributes are created underneath due to selinux. Either we relax the attribute fork check an allow the new inode to have an attribute fork despite the old one not having one, or we need to create a fake xattr on the file to be defragmented. From BATV+3ee5e63fb532671fcb88+2088+infradead.org+hch@bombadil.srs.infradead.org Tue May 12 15:40:23 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CKeLLU097494 for ; Tue, 12 May 2009 15:40:22 -0500 X-ASG-Debug-ID: 1242160828-340700d30000-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 7867827F233 for ; Tue, 12 May 2009 13:40:28 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Ilvi6Knp7RV8sJ0m for ; Tue, 12 May 2009 13:40:28 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3ym4-0000oF-02; Tue, 12 May 2009 20:40:28 +0000 Date: Tue, 12 May 2009 16:40:27 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com, linux-kernel@vger.kernel.org X-ASG-Orig-Subj: XFS status update for April 2009 Subject: XFS status update for April 2009 Message-ID: <20090512204027.GA2973@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: 1242160828 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean In April development for Linux 2.6.30 was in full motion. A patchset to correct flushing of delayed allocations with near full filesystems has been committed in early April, as well as various smaller fixes. A patch series to improve the behavior of sys_sync has been posted but is waiting for VFS changes queued for Linux 2.6.31. On the userspace side xfsprogs and xfsdump 3.0.1 have managed to split their release dates into May again after a lot of last-minute build system updates. From BATV+3ee5e63fb532671fcb88+2088+infradead.org+hch@bombadil.srs.infradead.org Tue May 12 16:18:56 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CLIu2n098745 for ; Tue, 12 May 2009 16:18:56 -0500 X-ASG-Debug-ID: 1242163143-24db02bc0000-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 415BD27F6D8 for ; Tue, 12 May 2009 14:19:03 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 7fCku3lG58xQOsxE for ; Tue, 12 May 2009 14:19:03 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3zNO-0002l6-PI; Tue, 12 May 2009 21:19:02 +0000 Message-Id: <20090512211902.592264000@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 12 May 2009 17:16:09 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Dave Chinner X-ASG-Orig-Subj: [PATCH 2/7] xfs: improve xfs_inobt_get_rec prototype Subject: [PATCH 2/7] xfs: improve xfs_inobt_get_rec prototype References: <20090512211607.197071000@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-better-xfs_inobt_get_rec-prototype 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: 1242163143 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Most callers of xfs_inobt_get_rec need to fill a xfs_inobt_rec_incore_t, and those who don't yet are fine with a xfs_inobt_rec_incore_t, instead of the three individual variables, too. So just change xfs_inobt_get_rec to write the output into a xfs_inobt_rec_incore_t directly. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_ialloc.c =================================================================== --- xfs.orig/fs/xfs/xfs_ialloc.c 2009-05-12 22:42:28.693659122 +0200 +++ xfs/fs/xfs/xfs_ialloc.c 2009-05-12 22:45:59.518658886 +0200 @@ -135,9 +135,7 @@ xfs_inobt_update( int /* error */ xfs_inobt_get_rec( struct xfs_btree_cur *cur, /* btree cursor */ - xfs_agino_t *ino, /* output: starting inode of chunk */ - __int32_t *fcnt, /* output: number of free inodes */ - xfs_inofree_t *free, /* output: free inode mask */ + xfs_inobt_rec_incore_t *irec, /* btree record */ int *stat) /* output: success/failure */ { union xfs_btree_rec *rec; @@ -145,9 +143,9 @@ xfs_inobt_get_rec( error = xfs_btree_get_rec(cur, &rec, stat); if (!error && *stat == 1) { - *ino = be32_to_cpu(rec->inobt.ir_startino); - *fcnt = be32_to_cpu(rec->inobt.ir_freecount); - *free = be64_to_cpu(rec->inobt.ir_free); + irec->ir_startino = be32_to_cpu(rec->inobt.ir_startino); + irec->ir_freecount = be32_to_cpu(rec->inobt.ir_freecount); + irec->ir_free = be64_to_cpu(rec->inobt.ir_free); } return error; } @@ -746,8 +744,8 @@ nextag: goto error0; XFS_WANT_CORRUPTED_GOTO(i == 1, error0); do { - if ((error = xfs_inobt_get_rec(cur, &rec.ir_startino, - &rec.ir_freecount, &rec.ir_free, &i))) + error = xfs_inobt_get_rec(cur, &rec, &i); + if (error) goto error0; XFS_WANT_CORRUPTED_GOTO(i == 1, error0); freecount += rec.ir_freecount; @@ -766,8 +764,7 @@ nextag: if ((error = xfs_inobt_lookup_le(cur, pagino, 0, 0, &i))) goto error0; if (i != 0 && - (error = xfs_inobt_get_rec(cur, &rec.ir_startino, - &rec.ir_freecount, &rec.ir_free, &j)) == 0 && + (error = xfs_inobt_get_rec(cur, &rec, &j)) == 0 && j == 1 && rec.ir_freecount > 0) { /* @@ -799,10 +796,8 @@ nextag: goto error1; doneleft = !i; if (!doneleft) { - if ((error = xfs_inobt_get_rec(tcur, - &trec.ir_startino, - &trec.ir_freecount, - &trec.ir_free, &i))) + error = xfs_inobt_get_rec(tcur, &trec, &i); + if (error) goto error1; XFS_WANT_CORRUPTED_GOTO(i == 1, error1); } @@ -813,10 +808,8 @@ nextag: goto error1; doneright = !i; if (!doneright) { - if ((error = xfs_inobt_get_rec(cur, - &rec.ir_startino, - &rec.ir_freecount, - &rec.ir_free, &i))) + error = xfs_inobt_get_rec(cur, &rec, &i); + if (error) goto error1; XFS_WANT_CORRUPTED_GOTO(i == 1, error1); } @@ -876,11 +869,9 @@ nextag: goto error1; doneleft = !i; if (!doneleft) { - if ((error = xfs_inobt_get_rec( - tcur, - &trec.ir_startino, - &trec.ir_freecount, - &trec.ir_free, &i))) + error = xfs_inobt_get_rec( + tcur, &trec, &i); + if (error) goto error1; XFS_WANT_CORRUPTED_GOTO(i == 1, error1); @@ -896,11 +887,9 @@ nextag: goto error1; doneright = !i; if (!doneright) { - if ((error = xfs_inobt_get_rec( - cur, - &rec.ir_startino, - &rec.ir_freecount, - &rec.ir_free, &i))) + error = xfs_inobt_get_rec( + cur, &rec, &i); + if (error) goto error1; XFS_WANT_CORRUPTED_GOTO(i == 1, error1); @@ -919,8 +908,7 @@ nextag: be32_to_cpu(agi->agi_newino), 0, 0, &i))) goto error0; if (i == 1 && - (error = xfs_inobt_get_rec(cur, &rec.ir_startino, - &rec.ir_freecount, &rec.ir_free, &j)) == 0 && + (error = xfs_inobt_get_rec(cur, &rec, &j)) == 0 && j == 1 && rec.ir_freecount > 0) { /* @@ -938,10 +926,8 @@ nextag: goto error0; ASSERT(i == 1); for (;;) { - if ((error = xfs_inobt_get_rec(cur, - &rec.ir_startino, - &rec.ir_freecount, &rec.ir_free, - &i))) + error = xfs_inobt_get_rec(cur, &rec, &i); + if (error) goto error0; XFS_WANT_CORRUPTED_GOTO(i == 1, error0); if (rec.ir_freecount > 0) @@ -975,8 +961,8 @@ nextag: if ((error = xfs_inobt_lookup_ge(cur, 0, 0, 0, &i))) goto error0; do { - if ((error = xfs_inobt_get_rec(cur, &rec.ir_startino, - &rec.ir_freecount, &rec.ir_free, &i))) + error = xfs_inobt_get_rec(cur, &rec, &i); + if (error) goto error0; XFS_WANT_CORRUPTED_GOTO(i == 1, error0); freecount += rec.ir_freecount; @@ -1084,8 +1070,8 @@ xfs_difree( if ((error = xfs_inobt_lookup_ge(cur, 0, 0, 0, &i))) goto error0; do { - if ((error = xfs_inobt_get_rec(cur, &rec.ir_startino, - &rec.ir_freecount, &rec.ir_free, &i))) + error = xfs_inobt_get_rec(cur, &rec, &i); + if (error) goto error0; if (i) { freecount += rec.ir_freecount; @@ -1107,8 +1093,8 @@ xfs_difree( goto error0; } XFS_WANT_CORRUPTED_GOTO(i == 1, error0); - if ((error = xfs_inobt_get_rec(cur, &rec.ir_startino, &rec.ir_freecount, - &rec.ir_free, &i))) { + error = xfs_inobt_get_rec(cur, &rec, &i); + if (error) { cmn_err(CE_WARN, "xfs_difree: xfs_inobt_get_rec() returned an error %d on %s. Returning error.", error, mp->m_fsname); @@ -1187,10 +1173,8 @@ xfs_difree( if ((error = xfs_inobt_lookup_ge(cur, 0, 0, 0, &i))) goto error0; do { - if ((error = xfs_inobt_get_rec(cur, - &rec.ir_startino, - &rec.ir_freecount, - &rec.ir_free, &i))) + error = xfs_inobt_get_rec(cur, &rec, &i); + if (error) goto error0; if (i) { freecount += rec.ir_freecount; @@ -1312,9 +1296,7 @@ xfs_imap( 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_inobt_rec_incore_t chunk_rec; xfs_buf_t *agbp; /* agi buffer */ int i; /* temp state */ @@ -1337,8 +1319,7 @@ xfs_imap( goto error0; } - error = xfs_inobt_get_rec(cur, &chunk_agino, &chunk_cnt, - &chunk_free, &i); + error = xfs_inobt_get_rec(cur, &chunk_rec, &i); if (error) { xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " "xfs_inobt_get_rec() failed"); @@ -1356,7 +1337,7 @@ xfs_imap( xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); if (error) return error; - chunk_agbno = XFS_AGINO_TO_AGBNO(mp, chunk_agino); + chunk_agbno = XFS_AGINO_TO_AGBNO(mp, chunk_rec.ir_startino); offset_agbno = agbno - chunk_agbno; } Index: xfs/fs/xfs/xfs_ialloc.h =================================================================== --- xfs.orig/fs/xfs/xfs_ialloc.h 2009-05-12 22:42:25.220812390 +0200 +++ xfs/fs/xfs/xfs_ialloc.h 2009-05-12 22:45:59.518658886 +0200 @@ -166,7 +166,7 @@ int xfs_inobt_lookup_le(struct xfs_btree /* * Get the data from the pointed-to record. */ -extern int xfs_inobt_get_rec(struct xfs_btree_cur *cur, xfs_agino_t *ino, - __int32_t *fcnt, xfs_inofree_t *free, int *stat); +extern int xfs_inobt_get_rec(struct xfs_btree_cur *cur, + xfs_inobt_rec_incore_t *rec, int *stat); #endif /* __XFS_IALLOC_H__ */ Index: xfs/fs/xfs/xfs_itable.c =================================================================== --- xfs.orig/fs/xfs/xfs_itable.c 2009-05-12 22:42:25.233785061 +0200 +++ xfs/fs/xfs/xfs_itable.c 2009-05-12 22:45:59.519658874 +0200 @@ -353,9 +353,6 @@ xfs_bulkstat( int end_of_ag; /* set if we've seen the ag end */ int error; /* error code */ int fmterror;/* bulkstat formatter result */ - __int32_t gcnt; /* current btree rec's count */ - xfs_inofree_t gfree; /* current btree rec's free mask */ - xfs_agino_t gino; /* current btree rec's start inode */ int i; /* loop index */ int icount; /* count of inodes good in irbuf */ size_t irbsize; /* size of irec buffer in bytes */ @@ -442,6 +439,8 @@ xfs_bulkstat( * we need to get the remainder of the chunk we're in. */ if (agino > 0) { + xfs_inobt_rec_incore_t r; + /* * Lookup the inode chunk that this inode lives in. */ @@ -449,33 +448,33 @@ xfs_bulkstat( if (!error && /* no I/O error */ tmp && /* lookup succeeded */ /* got the record, should always work */ - !(error = xfs_inobt_get_rec(cur, &gino, &gcnt, - &gfree, &i)) && + !(error = xfs_inobt_get_rec(cur, &r, &i)) && i == 1 && /* this is the right chunk */ - agino < gino + XFS_INODES_PER_CHUNK && + agino < r.ir_startino + XFS_INODES_PER_CHUNK && /* lastino was not last in chunk */ - (chunkidx = agino - gino + 1) < + (chunkidx = agino - r.ir_startino + 1) < XFS_INODES_PER_CHUNK && /* there are some left allocated */ xfs_inobt_maskn(chunkidx, - XFS_INODES_PER_CHUNK - chunkidx) & ~gfree) { + XFS_INODES_PER_CHUNK - chunkidx) & + ~r.ir_free) { /* * Grab the chunk record. Mark all the * uninteresting inodes (because they're * before our start point) free. */ for (i = 0; i < chunkidx; i++) { - if (XFS_INOBT_MASK(i) & ~gfree) - gcnt++; + if (XFS_INOBT_MASK(i) & ~r.ir_free) + r.ir_freecount++; } - gfree |= xfs_inobt_maskn(0, chunkidx); - irbp->ir_startino = gino; - irbp->ir_freecount = gcnt; - irbp->ir_free = gfree; + r.ir_free |= xfs_inobt_maskn(0, chunkidx); + irbp->ir_startino = r.ir_startino; + irbp->ir_freecount = r.ir_freecount; + irbp->ir_free = r.ir_free; irbp++; - agino = gino + XFS_INODES_PER_CHUNK; - icount = XFS_INODES_PER_CHUNK - gcnt; + agino = r.ir_startino + XFS_INODES_PER_CHUNK; + icount = XFS_INODES_PER_CHUNK - r.ir_freecount; } else { /* * If any of those tests failed, bump the @@ -501,6 +500,8 @@ xfs_bulkstat( * until we run out of inodes or space in the buffer. */ while (irbp < irbufend && icount < ubcount) { + xfs_inobt_rec_incore_t r; + /* * Loop as long as we're unable to read the * inode btree. @@ -518,43 +519,47 @@ xfs_bulkstat( * If ran off the end of the ag either with an error, * or the normal way, set end and stop collecting. */ - if (error || - (error = xfs_inobt_get_rec(cur, &gino, &gcnt, - &gfree, &i)) || - i == 0) { + if (error) { + end_of_ag = 1; + break; + } + + error = xfs_inobt_get_rec(cur, &r, &i); + if (error || i == 0) { end_of_ag = 1; break; } + /* * If this chunk has any allocated inodes, save it. * Also start read-ahead now for this chunk. */ - if (gcnt < XFS_INODES_PER_CHUNK) { + if (r.ir_freecount < XFS_INODES_PER_CHUNK) { /* * Loop over all clusters in the next chunk. * Do a readahead if there are any allocated * inodes in that cluster. */ - for (agbno = XFS_AGINO_TO_AGBNO(mp, gino), - chunkidx = 0; + agbno = XFS_AGINO_TO_AGBNO(mp, r.ir_startino); + for (chunkidx = 0; chunkidx < XFS_INODES_PER_CHUNK; chunkidx += nicluster, agbno += nbcluster) { - if (xfs_inobt_maskn(chunkidx, - nicluster) & ~gfree) + if (xfs_inobt_maskn(chunkidx, nicluster) + & ~r.ir_free) xfs_btree_reada_bufs(mp, agno, agbno, nbcluster); } - irbp->ir_startino = gino; - irbp->ir_freecount = gcnt; - irbp->ir_free = gfree; + irbp->ir_startino = r.ir_startino; + irbp->ir_freecount = r.ir_freecount; + irbp->ir_free = r.ir_free; irbp++; - icount += XFS_INODES_PER_CHUNK - gcnt; + icount += XFS_INODES_PER_CHUNK - r.ir_freecount; } /* * Set agino to after this chunk and bump the cursor. */ - agino = gino + XFS_INODES_PER_CHUNK; + agino = r.ir_startino + XFS_INODES_PER_CHUNK; error = xfs_btree_increment(cur, 0, &tmp); cond_resched(); } @@ -820,9 +825,7 @@ xfs_inumbers( int bufidx; xfs_btree_cur_t *cur; int error; - __int32_t gcnt; - xfs_inofree_t gfree; - xfs_agino_t gino; + xfs_inobt_rec_incore_t r; int i; xfs_ino_t ino; int left; @@ -870,9 +873,8 @@ xfs_inumbers( continue; } } - if ((error = xfs_inobt_get_rec(cur, &gino, &gcnt, &gfree, - &i)) || - i == 0) { + error = xfs_inobt_get_rec(cur, &r, &i); + if (error || i == 0) { xfs_buf_relse(agbp); agbp = NULL; xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); @@ -881,10 +883,12 @@ xfs_inumbers( agino = 0; continue; } - agino = gino + XFS_INODES_PER_CHUNK - 1; - buffer[bufidx].xi_startino = XFS_AGINO_TO_INO(mp, agno, gino); - buffer[bufidx].xi_alloccount = XFS_INODES_PER_CHUNK - gcnt; - buffer[bufidx].xi_allocmask = ~gfree; + agino = r.ir_startino + XFS_INODES_PER_CHUNK - 1; + buffer[bufidx].xi_startino = + XFS_AGINO_TO_INO(mp, agno, r.ir_startino); + buffer[bufidx].xi_alloccount = + XFS_INODES_PER_CHUNK - r.ir_freecount; + buffer[bufidx].xi_allocmask = ~r.ir_free; bufidx++; left--; if (bufidx == bcount) { From BATV+3ee5e63fb532671fcb88+2088+infradead.org+hch@bombadil.srs.infradead.org Tue May 12 16:18:56 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CLIt9o098739 for ; Tue, 12 May 2009 16:18:55 -0500 X-ASG-Debug-ID: 1242163142-342701940000-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 BF07627F6D8 for ; Tue, 12 May 2009 14:19:02 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id KXxBGQiyTGqEdQaX for ; Tue, 12 May 2009 14:19:02 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3zNO-0002jh-5c; Tue, 12 May 2009 21:19:02 +0000 Message-Id: <20090512211607.197071000@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 12 May 2009 17:16:07 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Dave Chinner X-ASG-Orig-Subj: [PATCH 0/7] inode allocation cleanups Subject: [PATCH 0/7] inode allocation cleanups 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: 1242163142 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This series contains various cleanups and refactorings to xfs_ialloc.c, some of them are my own and some are from Dave Chinner. The last patch is also from Dave and speeds up the search for free inodes in allocation groups with lots of inodes. I ported it ontop of all the previous patches, which made it a lot cleaner. From BATV+3ee5e63fb532671fcb88+2088+infradead.org+hch@bombadil.srs.infradead.org Tue May 12 16:18:58 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_61, J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CLIvaL098767 for ; Tue, 12 May 2009 16:18:57 -0500 X-ASG-Debug-ID: 1242163420-7ca7001d0000-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 E1115F9E14E for ; Tue, 12 May 2009 14:23:40 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id U5IugP2awbOZHv3I for ; Tue, 12 May 2009 14:23:40 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3zNP-0002mu-MC; Tue, 12 May 2009 21:19:03 +0000 Message-Id: <20090512211903.546209000@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 12 May 2009 17:16:12 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Dave Chinner X-ASG-Orig-Subj: [PATCH 5/7] xfs: untangle xfs_dialloc Subject: [PATCH 5/7] xfs: untangle xfs_dialloc References: <20090512211607.197071000@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-dialloc-untangle 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: 1242163420 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Clarify the control flow in xfs_dialloc. Factor out a helper to go to the next node from the current one and improve the control flow by expanding composite if statements and using gotos. The xfs_ialloc_next_rec helpers is borrowed from Dave Chinners dynamic allocation policy patches. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_ialloc.c =================================================================== --- xfs.orig/fs/xfs/xfs_ialloc.c 2009-02-25 18:39:54.179498785 +0100 +++ xfs/fs/xfs/xfs_ialloc.c 2009-02-25 20:16:04.395799709 +0100 @@ -589,6 +589,37 @@ nextag: } } +/* + * Try to retrieve the next record to the left/right from the current one. + */ +STATIC int +xfs_ialloc_next_rec( + struct xfs_btree_cur *cur, + xfs_inobt_rec_incore_t *rec, + int *done, + int left) +{ + int error; + int i; + + if (left) + error = xfs_btree_decrement(cur, 0, &i); + else + error = xfs_btree_increment(cur, 0, &i); + + if (error) + return error; + *done = !i; + if (i) { + error = xfs_inobt_get_rec(cur, rec, &i); + if (error) + return error; + XFS_WANT_CORRUPTED_RETURN(i == 1); + } + + return 0; +} + /* * Visible inode allocation functions. @@ -644,8 +675,8 @@ xfs_dialloc( int j; /* result code */ xfs_mount_t *mp; /* file system mount structure */ int offset; /* index of inode in chunk */ - xfs_agino_t pagino; /* parent's a.g. relative inode # */ - xfs_agnumber_t pagno; /* parent's allocation group number */ + xfs_agino_t pagino; /* parent's AG relative inode # */ + xfs_agnumber_t pagno; /* parent's AG number */ xfs_inobt_rec_incore_t rec; /* inode allocation record */ xfs_agnumber_t tagno; /* testing allocation group number */ xfs_btree_cur_t *tcur; /* temp cursor */ @@ -781,186 +812,138 @@ nextag: goto error0; /* - * If in the same a.g. as the parent, try to get near the parent. + * If in the same AG as the parent, try to get near the parent. */ if (pagno == agno) { - if ((error = xfs_inobt_lookup_le(cur, pagino, 0, 0, &i))) + int doneleft; /* done, to the left */ + int doneright; /* done, to the right */ + + error = xfs_inobt_lookup_le(cur, pagino, 0, 0, &i); + if (error) + goto error0; + XFS_WANT_CORRUPTED_RETURN(i == 1); + + error = xfs_inobt_get_rec(cur, &rec, &j); + if (error) goto error0; - if (i != 0 && - (error = xfs_inobt_get_rec(cur, &rec, &j)) == 0 && - j == 1 && - rec.ir_freecount > 0) { + XFS_WANT_CORRUPTED_RETURN(j == 1); + + if (rec.ir_freecount > 0) { /* * Found a free inode in the same chunk - * as parent, done. + * as the parent, done. */ + goto alloc_inode; } + + /* - * In the same a.g. as parent, but parent's chunk is full. + * In the same AG as parent, but parent's chunk is full. */ - else { - int doneleft; /* done, to the left */ - int doneright; /* done, to the right */ - if (error) - goto error0; - ASSERT(i == 1); - ASSERT(j == 1); - /* - * Duplicate the cursor, search left & right - * simultaneously. - */ - if ((error = xfs_btree_dup_cursor(cur, &tcur))) - goto error0; - /* - * Search left with tcur, back up 1 record. - */ - if ((error = xfs_btree_decrement(tcur, 0, &i))) - goto error1; - doneleft = !i; - if (!doneleft) { - error = xfs_inobt_get_rec(tcur, &trec, &i); - if (error) - goto error1; - XFS_WANT_CORRUPTED_GOTO(i == 1, error1); + /* duplicate the cursor, search left & right simultaneously */ + error = xfs_btree_dup_cursor(cur, &tcur); + if (error) + goto error0; + + /* search left with tcur, back up 1 record */ + error = xfs_ialloc_next_rec(tcur, &trec, &doneleft, 1); + if (error) + goto error1; + + /* search right with cur, go forward 1 record. */ + error = xfs_ialloc_next_rec(cur, &rec, &doneright, 0); + if (error) + goto error1; + + /* + * Loop until we find an inode chunk with a free inode. + */ + while (!doneleft || !doneright) { + int useleft; /* using left inode chunk this time */ + + /* figure out the closer block if both are valid. */ + if (!doneleft && !doneright) { + useleft = pagino - + (trec.ir_startino + XFS_INODES_PER_CHUNK - 1) < + rec.ir_startino - pagino; + } else { + useleft = !doneleft; } - /* - * Search right with cur, go forward 1 record. - */ - if ((error = xfs_btree_increment(cur, 0, &i))) - goto error1; - doneright = !i; - if (!doneright) { - error = xfs_inobt_get_rec(cur, &rec, &i); - if (error) - goto error1; - XFS_WANT_CORRUPTED_GOTO(i == 1, error1); + + /* free inodes to the left? */ + if (useleft && trec.ir_freecount) { + rec = trec; + xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); + cur = tcur; + goto alloc_inode; } - /* - * Loop until we find the closest inode chunk - * with a free one. - */ - while (!doneleft || !doneright) { - int useleft; /* using left inode - chunk this time */ - /* - * Figure out which block is closer, - * if both are valid. - */ - if (!doneleft && !doneright) - useleft = - pagino - - (trec.ir_startino + - XFS_INODES_PER_CHUNK - 1) < - rec.ir_startino - pagino; - else - useleft = !doneleft; - /* - * If checking the left, does it have - * free inodes? - */ - if (useleft && trec.ir_freecount) { - /* - * Yes, set it up as the chunk to use. - */ - rec = trec; - xfs_btree_del_cursor(cur, - XFS_BTREE_NOERROR); - cur = tcur; - break; - } - /* - * If checking the right, does it have - * free inodes? - */ - if (!useleft && rec.ir_freecount) { - /* - * Yes, it's already set up. - */ - xfs_btree_del_cursor(tcur, - XFS_BTREE_NOERROR); - break; - } - /* - * If used the left, get another one - * further left. - */ - if (useleft) { - if ((error = xfs_btree_decrement(tcur, 0, - &i))) - goto error1; - doneleft = !i; - if (!doneleft) { - error = xfs_inobt_get_rec( - tcur, &trec, &i); - if (error) - goto error1; - XFS_WANT_CORRUPTED_GOTO(i == 1, - error1); - } - } - /* - * If used the right, get another one - * further right. - */ - else { - if ((error = xfs_btree_increment(cur, 0, - &i))) - goto error1; - doneright = !i; - if (!doneright) { - error = xfs_inobt_get_rec( - cur, &rec, &i); - if (error) - goto error1; - XFS_WANT_CORRUPTED_GOTO(i == 1, - error1); - } - } + /* free inodes to the right? */ + if (!useleft && rec.ir_freecount) { + xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR); + goto alloc_inode; + } + + /* get next record to check */ + if (useleft) { + error = xfs_ialloc_next_rec(tcur, &trec, + &doneleft, 1); + } else { + error = xfs_ialloc_next_rec(cur, &rec, + &doneright, 0); } - ASSERT(!doneleft || !doneright); } + ASSERT(!doneleft || !doneright); } + /* - * In a different a.g. from the parent. + * In a different AG from the parent. * See if the most recently allocated block has any free. */ else if (be32_to_cpu(agi->agi_newino) != NULLAGINO) { - if ((error = xfs_inobt_lookup_eq(cur, - be32_to_cpu(agi->agi_newino), 0, 0, &i))) + error = xfs_inobt_lookup_eq(cur, be32_to_cpu(agi->agi_newino), + 0, 0, &i); + if (error) goto error0; - if (i == 1 && - (error = xfs_inobt_get_rec(cur, &rec, &j)) == 0 && - j == 1 && - rec.ir_freecount > 0) { - /* - * The last chunk allocated in the group still has - * a free inode. - */ + + if (i == 1) { + error = xfs_inobt_get_rec(cur, &rec, &j); + if (error) + goto error0; + + if (j == 1 && rec.ir_freecount > 0) { + /* + * The last chunk allocated in the group + * still has a free inode. + */ + goto alloc_inode; + } } + /* - * None left in the last group, search the whole a.g. + * None left in the last group, search the whole AG */ - else { + error = xfs_inobt_lookup_ge(cur, 0, 0, 0, &i); + if (error) + goto error0; + XFS_WANT_CORRUPTED_GOTO(i == 1, error0); + + for (;;) { + error = xfs_inobt_get_rec(cur, &rec, &i); if (error) goto error0; - if ((error = xfs_inobt_lookup_ge(cur, 0, 0, 0, &i))) + XFS_WANT_CORRUPTED_GOTO(i == 1, error0); + if (rec.ir_freecount > 0) + break; + error = xfs_btree_increment(cur, 0, &i); + if (error) goto error0; - ASSERT(i == 1); - for (;;) { - error = xfs_inobt_get_rec(cur, &rec, &i); - if (error) - goto error0; - XFS_WANT_CORRUPTED_GOTO(i == 1, error0); - if (rec.ir_freecount > 0) - break; - if ((error = xfs_btree_increment(cur, 0, &i))) - goto error0; - XFS_WANT_CORRUPTED_GOTO(i == 1, error0); - } + XFS_WANT_CORRUPTED_GOTO(i == 1, error0); } } + +alloc_inode: offset = xfs_ialloc_find_free(&rec.ir_free); ASSERT(offset >= 0); ASSERT(offset < XFS_INODES_PER_CHUNK); From BATV+3ee5e63fb532671fcb88+2088+infradead.org+hch@bombadil.srs.infradead.org Tue May 12 16:18:58 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CLIvDV098768 for ; Tue, 12 May 2009 16:18:58 -0500 X-ASG-Debug-ID: 1242163144-235a01900000-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 81AE91D2B1B0 for ; Tue, 12 May 2009 14:19:04 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 1uczDXSHdCoiDujQ for ; Tue, 12 May 2009 14:19:04 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3zNQ-0002o1-1e; Tue, 12 May 2009 21:19:04 +0000 Message-Id: <20090512211903.947685000@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 12 May 2009 17:16:14 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Dave Chinner , Dave Chinner X-ASG-Orig-Subj: [PATCH 7/7] xfs: speed up free inode search Subject: [PATCH 7/7] xfs: speed up free inode search References: <20090512211607.197071000@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-inode-search 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: 1242163144 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner Don't search too far - abort if it is outside a certain radius and simply do a linear search for the first free inode. In AGs with a million inodes this can speed up allocation speed by 3-4x. [hch: ported to the xfs_ialloc.c world order] Signed-off-by: Dave Chinner Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_ialloc.c =================================================================== --- xfs.orig/fs/xfs/xfs_ialloc.c 2009-05-12 23:09:37.446784120 +0200 +++ xfs/fs/xfs/xfs_ialloc.c 2009-05-12 23:11:53.140784530 +0200 @@ -587,6 +587,30 @@ xfs_ialloc_next_rec( return 0; } +STATIC int +xfs_ialloc_get_rec( + struct xfs_btree_cur *cur, + xfs_agino_t agino, + xfs_inobt_rec_incore_t *rec, + int *done, + int left) +{ + int error; + int i; + + error = xfs_inobt_lookup(cur, agino, XFS_LOOKUP_EQ, &i); + if (error) + return error; + *done = !i; + if (i) { + error = xfs_inobt_get_rec(cur, rec, &i); + if (error) + return error; + XFS_WANT_CORRUPTED_RETURN(i == 1); + } + + return 0; +} /* * Visible inode allocation functions. @@ -766,6 +790,8 @@ nextag: */ agno = tagno; *IO_agbp = NULL; + + restart_pagno: cur = xfs_inobt_init_cursor(mp, tp, agbp, be32_to_cpu(agi->agi_seqno)); /* * If pagino is 0 (this is the root inode allocation) use newino. @@ -782,8 +808,10 @@ nextag: * If in the same AG as the parent, try to get near the parent. */ if (pagno == agno) { + xfs_perag_t *pag = &mp->m_perag[agno]; int doneleft; /* done, to the left */ int doneright; /* done, to the right */ + int searchdistance = 10; error = xfs_inobt_lookup(cur, pagino, XFS_LOOKUP_LE, &i); if (error) @@ -813,15 +841,33 @@ nextag: if (error) goto error0; - /* search left with tcur, back up 1 record */ - error = xfs_ialloc_next_rec(tcur, &trec, &doneleft, 1); - if (error) - goto error1; + /* + * Skip to last blocks looked up if same parent inode. + */ + if (pagino != NULLAGINO && + pag->pagl_pagino == pagino && + pag->pagl_leftrec != NULLAGINO && + pag->pagl_rightrec != NULLAGINO) { + error = xfs_ialloc_get_rec(tcur, pag->pagl_leftrec, + &trec, &doneleft, 1); + if (error) + goto error1; - /* search right with cur, go forward 1 record. */ - error = xfs_ialloc_next_rec(cur, &rec, &doneright, 0); - if (error) - goto error1; + error = xfs_ialloc_get_rec(cur, pag->pagl_rightrec, + &rec, &doneright, 0); + if (error) + goto error1; + } else { + /* search left with tcur, back up 1 record */ + error = xfs_ialloc_next_rec(tcur, &trec, &doneleft, 1); + if (error) + goto error1; + + /* search right with cur, go forward 1 record. */ + error = xfs_ialloc_next_rec(cur, &rec, &doneright, 0); + if (error) + goto error1; + } /* * Loop until we find an inode chunk with a free inode. @@ -829,6 +875,17 @@ nextag: while (!doneleft || !doneright) { int useleft; /* using left inode chunk this time */ + if (!--searchdistance) { + /* + * Not in range - save last search + * location and allocate a new inode + */ + pag->pagl_leftrec = trec.ir_startino; + pag->pagl_rightrec = rec.ir_startino; + pag->pagl_pagino = pagino; + goto newino; + } + /* figure out the closer block if both are valid. */ if (!doneleft && !doneright) { useleft = pagino - @@ -843,12 +900,20 @@ nextag: rec = trec; xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); cur = tcur; + + pag->pagl_leftrec = trec.ir_startino; + pag->pagl_rightrec = rec.ir_startino; + pag->pagl_pagino = pagino; goto alloc_inode; } /* free inodes to the right? */ if (!useleft && rec.ir_freecount) { xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR); + + pag->pagl_leftrec = trec.ir_startino; + pag->pagl_rightrec = rec.ir_startino; + pag->pagl_pagino = pagino; goto alloc_inode; } @@ -861,14 +926,28 @@ nextag: &doneright, 0); } } - ASSERT(!doneleft || !doneright); + + /* + * We've reached the end of the btree. because + * we are only searching a small chunk of the + * btree each search, there is obviously free + * inodes closer to the parent inode than we + * are now. restart the search again. + */ + pag->pagl_pagino = NULLAGINO; + pag->pagl_leftrec = NULLAGINO; + pag->pagl_rightrec = NULLAGINO; + xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR); + xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); + goto restart_pagno; } /* * In a different AG from the parent. * See if the most recently allocated block has any free. */ - else if (be32_to_cpu(agi->agi_newino) != NULLAGINO) { +newino: + if (be32_to_cpu(agi->agi_newino) != NULLAGINO) { error = xfs_inobt_lookup(cur, be32_to_cpu(agi->agi_newino), XFS_LOOKUP_EQ, &i); if (error) @@ -887,27 +966,27 @@ nextag: goto alloc_inode; } } + } - /* - * None left in the last group, search the whole AG - */ - error = xfs_inobt_lookup(cur, 0, XFS_LOOKUP_GE, &i); + /* + * None left in the last group, search the whole AG + */ + error = xfs_inobt_lookup(cur, 0, XFS_LOOKUP_GE, &i); + if (error) + goto error0; + XFS_WANT_CORRUPTED_GOTO(i == 1, error0); + + for (;;) { + error = xfs_inobt_get_rec(cur, &rec, &i); + if (error) + goto error0; + XFS_WANT_CORRUPTED_GOTO(i == 1, error0); + if (rec.ir_freecount > 0) + break; + error = xfs_btree_increment(cur, 0, &i); if (error) goto error0; XFS_WANT_CORRUPTED_GOTO(i == 1, error0); - - for (;;) { - error = xfs_inobt_get_rec(cur, &rec, &i); - if (error) - goto error0; - XFS_WANT_CORRUPTED_GOTO(i == 1, error0); - if (rec.ir_freecount > 0) - break; - error = xfs_btree_increment(cur, 0, &i); - if (error) - goto error0; - XFS_WANT_CORRUPTED_GOTO(i == 1, error0); - } } alloc_inode: Index: xfs/fs/xfs/xfs_ag.h =================================================================== --- xfs.orig/fs/xfs/xfs_ag.h 2009-05-12 23:11:45.736784323 +0200 +++ xfs/fs/xfs/xfs_ag.h 2009-05-12 23:11:53.139784193 +0200 @@ -198,6 +198,15 @@ typedef struct xfs_perag xfs_agino_t pagi_count; /* number of allocated inodes */ int pagb_count; /* pagb slots in use */ xfs_perag_busy_t *pagb_list; /* unstable blocks */ + + /* + * Inode allocation search lookup optimisation. + * If the pagino matches, the search for new inodes + * doesn't need to search the near ones again straight away + */ + xfs_agino_t pagl_pagino; + xfs_agino_t pagl_leftrec; + xfs_agino_t pagl_rightrec; #ifdef __KERNEL__ spinlock_t pagb_lock; /* lock for pagb_list */ From BATV+3ee5e63fb532671fcb88+2088+infradead.org+hch@bombadil.srs.infradead.org Tue May 12 16:18:57 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_42, J_CHICKENPOX_43,J_CHICKENPOX_44,J_CHICKENPOX_45,J_CHICKENPOX_46, J_CHICKENPOX_48,J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CLIvIp098760 for ; Tue, 12 May 2009 16:18:57 -0500 X-ASG-Debug-ID: 1242163419-7c6900290000-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 6BFD2F9E141 for ; Tue, 12 May 2009 14:23:39 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id H7jU2Cu94HJTFEnH for ; Tue, 12 May 2009 14:23:39 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3zNO-0002kR-Fm; Tue, 12 May 2009 21:19:02 +0000 Message-Id: <20090512211902.288290000@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 12 May 2009 17:16:08 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Dave Chinner X-ASG-Orig-Subj: [PATCH 1/7] xfs: factor out inode initialisation Subject: [PATCH 1/7] xfs: factor out inode initialisation References: <20090512211607.197071000@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-icreate-factor-inode-stamping 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: 1242163420 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner Factor out code to initialize new inode clusters into a function of it's own. This keeps xfs_ialloc_ag_alloc smaller and better structured and enables a future inode cluster initialization transaction. Also initialize the agno variable earlier in xfs_ialloc_ag_alloc to avoid repeated byte swaps. [hch: The original patch is from Dave from his unpublished inode create transaction patch series, with some modifcation by to apply stand-alone] Signed-off-by: Dave Chinner Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_ialloc.c =================================================================== --- xfs.orig/fs/xfs/xfs_ialloc.c 2009-05-12 17:11:12.107658861 +0200 +++ xfs/fs/xfs/xfs_ialloc.c 2009-05-12 17:14:55.411784530 +0200 @@ -153,6 +153,87 @@ xfs_inobt_get_rec( } /* + * Initialise a new set of inodes. + */ +STATIC void +xfs_ialloc_inode_init( + struct xfs_mount *mp, + struct xfs_trans *tp, + xfs_agnumber_t agno, + xfs_agblock_t agbno, + xfs_agblock_t length, + unsigned int gen) +{ + struct xfs_buf *fbuf; + struct xfs_dinode *free; + int blks_per_cluster, nbufs, ninodes; + int version; + int i, j; + xfs_daddr_t d; + + /* + * Loop over the new block(s), filling in the inodes. + * For small block sizes, manipulate the inodes in buffers + * which are multiples of the blocks size. + */ + if (mp->m_sb.sb_blocksize >= XFS_INODE_CLUSTER_SIZE(mp)) { + blks_per_cluster = 1; + nbufs = length; + ninodes = mp->m_sb.sb_inopblock; + } else { + blks_per_cluster = XFS_INODE_CLUSTER_SIZE(mp) / + mp->m_sb.sb_blocksize; + nbufs = length / blks_per_cluster; + ninodes = blks_per_cluster * mp->m_sb.sb_inopblock; + } + + /* + * Figure out what version number to use in the inodes we create. + * If the superblock version has caught up to the one that supports + * the new inode format, then use the new inode version. Otherwise + * use the old version so that old kernels will continue to be + * able to use the file system. + */ + if (xfs_sb_version_hasnlink(&mp->m_sb)) + version = 2; + else + version = 1; + + for (j = 0; j < nbufs; j++) { + /* + * Get the block. + */ + d = XFS_AGB_TO_DADDR(mp, agno, agbno + (j * blks_per_cluster)); + fbuf = xfs_trans_get_buf(tp, mp->m_ddev_targp, d, + mp->m_bsize * blks_per_cluster, + XFS_BUF_LOCK); + ASSERT(fbuf); + ASSERT(!XFS_BUF_GETERROR(fbuf)); + + /* + * 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 + * individual transactions causing a lot of log traffic. + */ + xfs_biozero(fbuf, 0, ninodes << mp->m_sb.sb_inodelog); + for (i = 0; i < ninodes; i++) { + int ioffset = i << mp->m_sb.sb_inodelog; + uint isize = sizeof(struct xfs_dinode); + + free = xfs_make_iptr(mp, fbuf, i); + 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_trans_log_buf(tp, fbuf, ioffset, ioffset + isize - 1); + } + xfs_trans_inode_alloc_buf(tp, fbuf); + } +} + +/* * Allocate new inodes in the allocation group specified by agbp. * Return 0 for success, else error code. */ @@ -164,24 +245,15 @@ xfs_ialloc_ag_alloc( { xfs_agi_t *agi; /* allocation group header */ xfs_alloc_arg_t args; /* allocation argument structure */ - int blks_per_cluster; /* fs blocks per inode cluster */ xfs_btree_cur_t *cur; /* inode btree cursor */ - xfs_daddr_t d; /* disk addr of buffer */ xfs_agnumber_t agno; int error; - xfs_buf_t *fbuf; /* new free inodes' buffer */ - xfs_dinode_t *free; /* new free inode structure */ - int i; /* inode counter */ - int j; /* block counter */ - int nbufs; /* num bufs of new inodes */ + int i; xfs_agino_t newino; /* new first inode's number */ xfs_agino_t newlen; /* new number of inodes */ - int ninodes; /* num inodes per buf */ xfs_agino_t thisino; /* current inode number, for loop */ - int version; /* inode version number to use */ int isaligned = 0; /* inode allocation at stripe unit */ /* boundary */ - unsigned int gen; args.tp = tp; args.mp = tp->t_mountp; @@ -202,12 +274,12 @@ xfs_ialloc_ag_alloc( */ agi = XFS_BUF_TO_AGI(agbp); newino = be32_to_cpu(agi->agi_newino); + agno = be32_to_cpu(agi->agi_seqno); args.agbno = XFS_AGINO_TO_AGBNO(args.mp, newino) + XFS_IALLOC_BLOCKS(args.mp); if (likely(newino != NULLAGINO && (args.agbno < be32_to_cpu(agi->agi_length)))) { - args.fsbno = XFS_AGB_TO_FSB(args.mp, - be32_to_cpu(agi->agi_seqno), args.agbno); + args.fsbno = XFS_AGB_TO_FSB(args.mp, agno, args.agbno); args.type = XFS_ALLOCTYPE_THIS_BNO; args.mod = args.total = args.wasdel = args.isfl = args.userdata = args.minalignslop = 0; @@ -258,8 +330,7 @@ xfs_ialloc_ag_alloc( * For now, just allocate blocks up front. */ args.agbno = be32_to_cpu(agi->agi_root); - args.fsbno = XFS_AGB_TO_FSB(args.mp, - be32_to_cpu(agi->agi_seqno), args.agbno); + args.fsbno = XFS_AGB_TO_FSB(args.mp, agno, args.agbno); /* * Allocate a fixed-size extent of inodes. */ @@ -282,8 +353,7 @@ xfs_ialloc_ag_alloc( if (isaligned && args.fsbno == NULLFSBLOCK) { args.type = XFS_ALLOCTYPE_NEAR_BNO; args.agbno = be32_to_cpu(agi->agi_root); - args.fsbno = XFS_AGB_TO_FSB(args.mp, - be32_to_cpu(agi->agi_seqno), args.agbno); + args.fsbno = XFS_AGB_TO_FSB(args.mp, agno, args.agbno); args.alignment = xfs_ialloc_cluster_alignment(&args); if ((error = xfs_alloc_vextent(&args))) return error; @@ -294,85 +364,30 @@ xfs_ialloc_ag_alloc( return 0; } ASSERT(args.len == args.minlen); - /* - * Convert the results. - */ - newino = XFS_OFFBNO_TO_AGINO(args.mp, args.agbno, 0); - /* - * Loop over the new block(s), filling in the inodes. - * For small block sizes, manipulate the inodes in buffers - * which are multiples of the blocks size. - */ - if (args.mp->m_sb.sb_blocksize >= XFS_INODE_CLUSTER_SIZE(args.mp)) { - blks_per_cluster = 1; - nbufs = (int)args.len; - ninodes = args.mp->m_sb.sb_inopblock; - } else { - blks_per_cluster = XFS_INODE_CLUSTER_SIZE(args.mp) / - args.mp->m_sb.sb_blocksize; - nbufs = (int)args.len / blks_per_cluster; - ninodes = blks_per_cluster * args.mp->m_sb.sb_inopblock; - } - /* - * Figure out what version number to use in the inodes we create. - * If the superblock version has caught up to the one that supports - * the new inode format, then use the new inode version. Otherwise - * use the old version so that old kernels will continue to be - * able to use the file system. - */ - if (xfs_sb_version_hasnlink(&args.mp->m_sb)) - version = 2; - else - version = 1; /* + * Stamp and write the inode buffers. + * * Seed the new inode cluster with a random generation number. This * prevents short-term reuse of generation numbers if a chunk is * freed and then immediately reallocated. We use random numbers * rather than a linear progression to prevent the next generation * number from being easily guessable. */ - gen = random32(); - for (j = 0; j < nbufs; j++) { - /* - * Get the block. - */ - d = XFS_AGB_TO_DADDR(args.mp, be32_to_cpu(agi->agi_seqno), - args.agbno + (j * blks_per_cluster)); - fbuf = xfs_trans_get_buf(tp, args.mp->m_ddev_targp, d, - args.mp->m_bsize * blks_per_cluster, - XFS_BUF_LOCK); - ASSERT(fbuf); - ASSERT(!XFS_BUF_GETERROR(fbuf)); + xfs_ialloc_inode_init(args.mp, tp, agno, args.agbno, args.len, + random32()); - /* - * 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 individual - * 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_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_trans_log_buf(tp, fbuf, ioffset, ioffset + isize - 1); - } - xfs_trans_inode_alloc_buf(tp, fbuf); - } + /* + * Convert the results. + */ + newino = XFS_OFFBNO_TO_AGINO(args.mp, args.agbno, 0); be32_add_cpu(&agi->agi_count, newlen); be32_add_cpu(&agi->agi_freecount, newlen); - agno = be32_to_cpu(agi->agi_seqno); down_read(&args.mp->m_peraglock); args.mp->m_perag[agno].pagi_freecount += newlen; up_read(&args.mp->m_peraglock); agi->agi_newino = cpu_to_be32(newino); + /* * Insert records describing the new inode chunk into the btree. */ From BATV+3ee5e63fb532671fcb88+2088+infradead.org+hch@bombadil.srs.infradead.org Tue May 12 16:18:58 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CLIv1N098763 for ; Tue, 12 May 2009 16:18:57 -0500 X-ASG-Debug-ID: 1242163144-1c2a01f70000-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 3E18F1D2B1AD for ; Tue, 12 May 2009 14:19:04 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 9RsTPC3x4FDCmeCw for ; Tue, 12 May 2009 14:19:04 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3zNP-0002nT-Ss; Tue, 12 May 2009 21:19:03 +0000 Message-Id: <20090512211903.765192000@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 12 May 2009 17:16:13 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Dave Chinner X-ASG-Orig-Subj: [PATCH 6/7] xfs: rationalize xfs_inobt_lookup* Subject: [PATCH 6/7] xfs: rationalize xfs_inobt_lookup* References: <20090512211607.197071000@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-cleanup-inobt-lookup 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: 1242163144 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Currenly we have a xfs_inobt_lookup* variant for each comparism direction, and all these get all three fields of the inobt records passed, while the common case is just looking for the inode number and we have only marginally more callers than xfs_inobt_lookup* variants. So opencode a direct call to xfs_btree_lookup for the single case where we need all fields, and replace xfs_inobt_lookup* with a xfs_inobt_looku that just takes the inode number and the direction for all other callers. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_ialloc.c =================================================================== --- xfs.orig/fs/xfs/xfs_ialloc.c 2009-02-25 20:16:04.395799709 +0100 +++ xfs/fs/xfs/xfs_ialloc.c 2009-02-25 20:16:10.253670750 +0100 @@ -57,56 +57,19 @@ xfs_ialloc_cluster_alignment( } /* - * Lookup the record equal to ino in the btree given by cur. + * Lookup a record by ino in the btree given by cur. */ STATIC int /* error */ -xfs_inobt_lookup_eq( +xfs_inobt_lookup( struct xfs_btree_cur *cur, /* btree cursor */ xfs_agino_t ino, /* starting inode of chunk */ - __int32_t fcnt, /* free inode count */ - xfs_inofree_t free, /* free inode mask */ + xfs_lookup_t dir, /* <=, >=, == */ int *stat) /* success/failure */ { cur->bc_rec.i.ir_startino = ino; - cur->bc_rec.i.ir_freecount = fcnt; - cur->bc_rec.i.ir_free = free; - return xfs_btree_lookup(cur, XFS_LOOKUP_EQ, stat); -} - -/* - * Lookup the first record greater than or equal to ino - * in the btree given by cur. - */ -int /* error */ -xfs_inobt_lookup_ge( - struct xfs_btree_cur *cur, /* btree cursor */ - xfs_agino_t ino, /* starting inode of chunk */ - __int32_t fcnt, /* free inode count */ - xfs_inofree_t free, /* free inode mask */ - int *stat) /* success/failure */ -{ - cur->bc_rec.i.ir_startino = ino; - cur->bc_rec.i.ir_freecount = fcnt; - cur->bc_rec.i.ir_free = free; - return xfs_btree_lookup(cur, XFS_LOOKUP_GE, stat); -} - -/* - * Lookup the first record less than or equal to ino - * in the btree given by cur. - */ -int /* error */ -xfs_inobt_lookup_le( - struct xfs_btree_cur *cur, /* btree cursor */ - xfs_agino_t ino, /* starting inode of chunk */ - __int32_t fcnt, /* free inode count */ - xfs_inofree_t free, /* free inode mask */ - int *stat) /* success/failure */ -{ - cur->bc_rec.i.ir_startino = ino; - cur->bc_rec.i.ir_freecount = fcnt; - cur->bc_rec.i.ir_free = free; - return xfs_btree_lookup(cur, XFS_LOOKUP_LE, stat); + cur->bc_rec.i.ir_freecount = 0; + cur->bc_rec.i.ir_free = 0; + return xfs_btree_lookup(cur, dir, stat); } /* @@ -162,7 +125,7 @@ xfs_check_agi_freecount( int error; int i; - error = xfs_inobt_lookup_ge(cur, 0, 0, 0, &i); + error = xfs_inobt_lookup(cur, 0, XFS_LOOKUP_GE, &i); if (error) return error; @@ -431,13 +394,17 @@ xfs_ialloc_ag_alloc( for (thisino = newino; thisino < newino + newlen; thisino += XFS_INODES_PER_CHUNK) { - if ((error = xfs_inobt_lookup_eq(cur, thisino, - XFS_INODES_PER_CHUNK, XFS_INOBT_ALL_FREE, &i))) { + cur->bc_rec.i.ir_startino = thisino; + cur->bc_rec.i.ir_freecount = XFS_INODES_PER_CHUNK; + cur->bc_rec.i.ir_free = XFS_INOBT_ALL_FREE; + error = xfs_btree_lookup(cur, XFS_LOOKUP_EQ, &i); + if (error) { xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); return error; } ASSERT(i == 0); - if ((error = xfs_btree_insert(cur, &i))) { + error = xfs_btree_insert(cur, &i); + if (error) { xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); return error; } @@ -818,7 +785,7 @@ nextag: int doneleft; /* done, to the left */ int doneright; /* done, to the right */ - error = xfs_inobt_lookup_le(cur, pagino, 0, 0, &i); + error = xfs_inobt_lookup(cur, pagino, XFS_LOOKUP_LE, &i); if (error) goto error0; XFS_WANT_CORRUPTED_RETURN(i == 1); @@ -902,8 +869,8 @@ nextag: * See if the most recently allocated block has any free. */ else if (be32_to_cpu(agi->agi_newino) != NULLAGINO) { - error = xfs_inobt_lookup_eq(cur, be32_to_cpu(agi->agi_newino), - 0, 0, &i); + error = xfs_inobt_lookup(cur, be32_to_cpu(agi->agi_newino), + XFS_LOOKUP_EQ, &i); if (error) goto error0; @@ -924,7 +891,7 @@ nextag: /* * None left in the last group, search the whole AG */ - error = xfs_inobt_lookup_ge(cur, 0, 0, 0, &i); + error = xfs_inobt_lookup(cur, 0, XFS_LOOKUP_GE, &i); if (error) goto error0; XFS_WANT_CORRUPTED_GOTO(i == 1, error0); @@ -1063,9 +1030,9 @@ xfs_difree( /* * Look for the entry describing this inode. */ - if ((error = xfs_inobt_lookup_le(cur, agino, 0, 0, &i))) { + if ((error = xfs_inobt_lookup(cur, agino, XFS_LOOKUP_LE, &i))) { cmn_err(CE_WARN, - "xfs_difree: xfs_inobt_lookup_le returned() an error %d on %s. Returning error.", + "xfs_difree: xfs_inobt_lookup returned() an error %d on %s. Returning error.", error, mp->m_fsname); goto error0; } @@ -1275,10 +1242,10 @@ xfs_imap( } cur = xfs_inobt_init_cursor(mp, tp, agbp, agno); - error = xfs_inobt_lookup_le(cur, agino, 0, 0, &i); + error = xfs_inobt_lookup(cur, agino, XFS_LOOKUP_LE, &i); if (error) { xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " - "xfs_inobt_lookup_le() failed"); + "xfs_inobt_lookup() failed"); goto error0; } Index: xfs/fs/xfs/xfs_ialloc.h =================================================================== --- xfs.orig/fs/xfs/xfs_ialloc.h 2009-02-25 20:11:57.475795139 +0100 +++ xfs/fs/xfs/xfs_ialloc.h 2009-02-25 20:16:10.253670750 +0100 @@ -150,18 +150,10 @@ xfs_ialloc_pagi_init( xfs_agnumber_t agno); /* allocation group number */ /* - * Lookup the first record greater than or equal to ino - * in the btree given by cur. + * Lookup a record by ino in the btree given by cur. */ -int xfs_inobt_lookup_ge(struct xfs_btree_cur *cur, xfs_agino_t ino, - __int32_t fcnt, xfs_inofree_t free, int *stat); - -/* - * Lookup the first record less than or equal to ino - * in the btree given by cur. - */ -int xfs_inobt_lookup_le(struct xfs_btree_cur *cur, xfs_agino_t ino, - __int32_t fcnt, xfs_inofree_t free, int *stat); +int xfs_inobt_lookup(struct xfs_btree_cur *cur, xfs_agino_t ino, + xfs_lookup_t dir, int *stat); /* * Get the data from the pointed-to record. Index: xfs/fs/xfs/xfs_itable.c =================================================================== --- xfs.orig/fs/xfs/xfs_itable.c 2009-02-25 20:11:57.484695574 +0100 +++ xfs/fs/xfs/xfs_itable.c 2009-02-25 20:16:10.254670179 +0100 @@ -444,7 +444,8 @@ xfs_bulkstat( /* * Lookup the inode chunk that this inode lives in. */ - error = xfs_inobt_lookup_le(cur, agino, 0, 0, &tmp); + error = xfs_inobt_lookup(cur, agino, XFS_LOOKUP_LE, + &tmp); if (!error && /* no I/O error */ tmp && /* lookup succeeded */ /* got the record, should always work */ @@ -492,7 +493,7 @@ xfs_bulkstat( /* * Start of ag. Lookup the first inode chunk. */ - error = xfs_inobt_lookup_ge(cur, 0, 0, 0, &tmp); + error = xfs_inobt_lookup(cur, 0, XFS_LOOKUP_GE, &tmp); icount = 0; } /* @@ -511,8 +512,8 @@ xfs_bulkstat( if (XFS_AGINO_TO_AGBNO(mp, agino) >= be32_to_cpu(agi->agi_length)) break; - error = xfs_inobt_lookup_ge(cur, agino, 0, 0, - &tmp); + error = xfs_inobt_lookup(cur, agino, + XFS_LOOKUP_GE, &tmp); cond_resched(); } /* @@ -858,7 +859,8 @@ xfs_inumbers( continue; } cur = xfs_inobt_init_cursor(mp, NULL, agbp, agno); - error = xfs_inobt_lookup_ge(cur, agino, 0, 0, &tmp); + error = xfs_inobt_lookup(cur, agino, XFS_LOOKUP_GE, + &tmp); if (error) { xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); cur = NULL; From BATV+3ee5e63fb532671fcb88+2088+infradead.org+hch@bombadil.srs.infradead.org Tue May 12 16:18:58 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CLIvST098764 for ; Tue, 12 May 2009 16:18:57 -0500 X-ASG-Debug-ID: 1242163419-5c9101f40000-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 C4639F9E141 for ; Tue, 12 May 2009 14:23:40 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id kUIHEdSj3wOz5ZZA for ; Tue, 12 May 2009 14:23:40 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3zNP-0002li-4p; Tue, 12 May 2009 21:19:03 +0000 Message-Id: <20090512211902.905185000@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 12 May 2009 17:16:10 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Dave Chinner X-ASG-Orig-Subj: [PATCH 3/7] xfs: improve xfs_inobt_update prototype Subject: [PATCH 3/7] xfs: improve xfs_inobt_update prototype References: <20090512211607.197071000@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-better-xfs_inobt_update-prototype 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: 1242163420 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Both callers of xfs_inobt_update have the record in form of a xfs_inobt_rec_incore_t, so just pass a pointer to it instead of the individual variables. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_ialloc.c =================================================================== --- xfs.orig/fs/xfs/xfs_ialloc.c 2009-02-25 15:39:43.062918771 +0100 +++ xfs/fs/xfs/xfs_ialloc.c 2009-02-25 15:42:10.898919328 +0100 @@ -110,22 +110,19 @@ xfs_inobt_lookup_le( } /* - * Update the record referred to by cur to the value given - * by [ino, fcnt, free]. + * Update the record referred to by cur to the value given. * This either works (return 0) or gets an EFSCORRUPTED error. */ STATIC int /* error */ xfs_inobt_update( struct xfs_btree_cur *cur, /* btree cursor */ - xfs_agino_t ino, /* starting inode of chunk */ - __int32_t fcnt, /* free inode count */ - xfs_inofree_t free) /* free inode mask */ + xfs_inobt_rec_incore_t *irec) /* btree record */ { union xfs_btree_rec rec; - rec.inobt.ir_startino = cpu_to_be32(ino); - rec.inobt.ir_freecount = cpu_to_be32(fcnt); - rec.inobt.ir_free = cpu_to_be64(free); + rec.inobt.ir_startino = cpu_to_be32(irec->ir_startino); + rec.inobt.ir_freecount = cpu_to_be32(irec->ir_freecount); + rec.inobt.ir_free = cpu_to_be64(irec->ir_free); return xfs_btree_update(cur, &rec); } @@ -946,8 +943,8 @@ nextag: ino = XFS_AGINO_TO_INO(mp, agno, rec.ir_startino + offset); rec.ir_free &= ~XFS_INOBT_MASK(offset); rec.ir_freecount--; - if ((error = xfs_inobt_update(cur, rec.ir_startino, rec.ir_freecount, - rec.ir_free))) + error = xfs_inobt_update(cur, &rec); + if (error) goto error0; be32_add_cpu(&agi->agi_freecount, -1); xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT); @@ -1149,12 +1146,14 @@ xfs_difree( } else { *delete = 0; - if ((error = xfs_inobt_update(cur, rec.ir_startino, rec.ir_freecount, rec.ir_free))) { + error = xfs_inobt_update(cur, &rec); + if (error) { cmn_err(CE_WARN, - "xfs_difree: xfs_inobt_update() returned an error %d on %s. Returning error.", + "xfs_difree: xfs_inobt_update returned an error %d on %s.", error, mp->m_fsname); goto error0; } + /* * Change the inode free counts and log the ag/sb changes. */ From BATV+3ee5e63fb532671fcb88+2088+infradead.org+hch@bombadil.srs.infradead.org Tue May 12 16:18:58 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CLIvJ3098762 for ; Tue, 12 May 2009 16:18:57 -0500 X-ASG-Debug-ID: 1242163420-7c8a003c0000-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 96146F9E145 for ; Tue, 12 May 2009 14:23:40 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id qx4UhhlU8JcGpguv for ; Tue, 12 May 2009 14:23:40 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M3zNP-0002mJ-EE; Tue, 12 May 2009 21:19:03 +0000 Message-Id: <20090512211903.247953000@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 12 May 2009 17:16:11 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Dave Chinner X-ASG-Orig-Subj: [PATCH 4/7] xfs: factor out debug checks from xfs_dialloc and xfs_difree Subject: [PATCH 4/7] xfs: factor out debug checks from xfs_dialloc and xfs_difree References: <20090512211607.197071000@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-factor-freecount-checks 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: 1242163420 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner Factor out a common helper from repeated debug checks in xfs_dialloc and xfs_difree. [hch: split out from Dave's dynamic allocation policy patches] Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_ialloc.c =================================================================== --- xfs.orig/fs/xfs/xfs_ialloc.c 2009-02-25 15:42:10.898919328 +0100 +++ xfs/fs/xfs/xfs_ialloc.c 2009-02-25 15:44:27.680921419 +0100 @@ -148,6 +148,47 @@ xfs_inobt_get_rec( } /* + * Verify that the number of free inodes in the AGI is correct. + */ +#ifdef DEBUG +STATIC int +xfs_check_agi_freecount( + struct xfs_btree_cur *cur, + struct xfs_agi *agi) +{ + if (cur->bc_nlevels == 1) { + xfs_inobt_rec_incore_t rec; + int freecount = 0; + int error; + int i; + + error = xfs_inobt_lookup_ge(cur, 0, 0, 0, &i); + if (error) + return error; + + do { + error = xfs_inobt_get_rec(cur, &rec, &i); + if (error) + return error; + + if (i) { + freecount += rec.ir_freecount; + error = xfs_btree_increment(cur, 0, &i); + if (error) + return error; + } + } while (i == 1); + + if (!XFS_FORCED_SHUTDOWN(cur->bc_mp)) + ASSERT(freecount == be32_to_cpu(agi->agi_freecount)); + } + return 0; +} +#else +#define xfs_check_agi_freecount(cur, agi) 0 +#endif + +/* * Initialise a new set of inodes. */ STATIC void @@ -548,6 +589,7 @@ nextag: } } + /* * Visible inode allocation functions. */ @@ -733,27 +775,11 @@ nextag: */ if (!pagino) pagino = be32_to_cpu(agi->agi_newino); -#ifdef DEBUG - if (cur->bc_nlevels == 1) { - int freecount = 0; - if ((error = xfs_inobt_lookup_ge(cur, 0, 0, 0, &i))) - goto error0; - XFS_WANT_CORRUPTED_GOTO(i == 1, error0); - do { - error = xfs_inobt_get_rec(cur, &rec, &i); - if (error) - goto error0; - XFS_WANT_CORRUPTED_GOTO(i == 1, error0); - freecount += rec.ir_freecount; - if ((error = xfs_btree_increment(cur, 0, &i))) - goto error0; - } while (i == 1); + error = xfs_check_agi_freecount(cur, agi); + if (error) + goto error0; - ASSERT(freecount == be32_to_cpu(agi->agi_freecount) || - XFS_FORCED_SHUTDOWN(mp)); - } -#endif /* * If in the same a.g. as the parent, try to get near the parent. */ @@ -951,25 +977,11 @@ nextag: down_read(&mp->m_peraglock); mp->m_perag[tagno].pagi_freecount--; up_read(&mp->m_peraglock); -#ifdef DEBUG - if (cur->bc_nlevels == 1) { - int freecount = 0; - if ((error = xfs_inobt_lookup_ge(cur, 0, 0, 0, &i))) - goto error0; - do { - error = xfs_inobt_get_rec(cur, &rec, &i); - if (error) - goto error0; - XFS_WANT_CORRUPTED_GOTO(i == 1, error0); - freecount += rec.ir_freecount; - if ((error = xfs_btree_increment(cur, 0, &i))) - goto error0; - } while (i == 1); - ASSERT(freecount == be32_to_cpu(agi->agi_freecount) || - XFS_FORCED_SHUTDOWN(mp)); - } -#endif + error = xfs_check_agi_freecount(cur, agi); + if (error) + goto error0; + xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); xfs_trans_mod_sb(tp, XFS_TRANS_SB_IFREE, -1); *inop = ino; @@ -1060,26 +1072,11 @@ xfs_difree( * Initialize the cursor. */ cur = xfs_inobt_init_cursor(mp, tp, agbp, agno); -#ifdef DEBUG - if (cur->bc_nlevels == 1) { - int freecount = 0; - if ((error = xfs_inobt_lookup_ge(cur, 0, 0, 0, &i))) - goto error0; - do { - error = xfs_inobt_get_rec(cur, &rec, &i); - if (error) - goto error0; - if (i) { - freecount += rec.ir_freecount; - if ((error = xfs_btree_increment(cur, 0, &i))) - goto error0; - } - } while (i == 1); - ASSERT(freecount == be32_to_cpu(agi->agi_freecount) || - XFS_FORCED_SHUTDOWN(mp)); - } -#endif + error = xfs_check_agi_freecount(cur, agi); + if (error) + goto error0; + /* * Look for the entry describing this inode. */ @@ -1165,26 +1162,10 @@ xfs_difree( xfs_trans_mod_sb(tp, XFS_TRANS_SB_IFREE, 1); } -#ifdef DEBUG - if (cur->bc_nlevels == 1) { - int freecount = 0; + error = xfs_check_agi_freecount(cur, agi); + if (error) + goto error0; - if ((error = xfs_inobt_lookup_ge(cur, 0, 0, 0, &i))) - goto error0; - do { - error = xfs_inobt_get_rec(cur, &rec, &i); - if (error) - goto error0; - if (i) { - freecount += rec.ir_freecount; - if ((error = xfs_btree_increment(cur, 0, &i))) - goto error0; - } - } while (i == 1); - ASSERT(freecount == be32_to_cpu(agi->agi_freecount) || - XFS_FORCED_SHUTDOWN(mp)); - } -#endif xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); return 0; From pvlogin@yahoo.com Tue May 12 18:02:02 2009 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,J_CHICKENPOX_44 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4CN21EK102243 for ; Tue, 12 May 2009 18:02:02 -0500 X-ASG-Debug-ID: 1242169604-79ce03d60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web65608.mail.ac4.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 6211AF9FBEA for ; Tue, 12 May 2009 16:06:44 -0700 (PDT) Received: from web65608.mail.ac4.yahoo.com (web65608.mail.ac4.yahoo.com [76.13.9.76]) by cuda.sgi.com with SMTP id y8QkJy2CXB7Hlvyr for ; Tue, 12 May 2009 16:06:44 -0700 (PDT) Received: (qmail 29525 invoked by uid 60001); 12 May 2009 23:02:07 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1242169327; bh=ynPKTz4omuETJ3zc7/foU7HXmqam/wbpwzVnI5FXBNk=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type; b=Rcd0sQZjzWiX5faCAYVUihr7f3AuKzqWMbhpBlnS6zahERg6pGrzVSFXDUGTUFngxMX3gD6wkjVzway+msKRkfvLfuwNZ9aYRtORpVrYWhZBcqheYX+it6MgtZx4cR8Gk+4j21iFKeK1H7nBL4hbgJraGcSVS0JGrtlIlFrW2QU= DomainKey-Signature:a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type; b=K+GehVPfD4erNV6YWOIgs/xZKbgpxfmh1pUtSpDkxBds8gNfuwaKX5LkKbSsQ4wInPmPfVPVWcXMRst96SZJphr/XbMiEJtaS4oN1H7DckEW+gthsO/qrTzW13M1c5s//VrYRIOx6/+vtLPu2ubW03kGyvBag8NRnCisz5+LDhg=; Message-ID: <283244.29270.qm@web65608.mail.ac4.yahoo.com> X-YMail-OSG: .j0oMYcVM1moe9TxxopCQQT7G5F.ayLqWLUBwwIqJ7TNtfQc3zSMcmmVrZsa6v4Itk_V5gVfk11h1qC8fARa0IH04PSCTyyzdYXJpmpsY_sayr91U3a_8bVrIOwoSX4GXqgFXsS1kwjuX0sm27f1XyF4OcViRaf7qYsx95wjYF_AN5z11PuSpFO1ENW4VSN.BYBd3CJS8q8WsOzS841r4zPrdJnECFHV0H9qz6vQlpD7D_JKsUEzXhW.mbG8HdNDwFtBXApF3LG3Hqn0BdHr0Ts2Kkgb.GEp3u6wEvWsxQ_j5a227y0- Received: from [204.15.21.171] by web65608.mail.ac4.yahoo.com via HTTP; Tue, 12 May 2009 16:02:05 PDT X-Mailer: YahooMailRC/1277.43 YahooMailWebService/0.7.289.1 Date: Tue, 12 May 2009 16:02:05 -0700 (PDT) From: p v X-ASG-Orig-Subj: file preallocation without unwritten flag being set Subject: file preallocation without unwritten flag being set To: xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: web65608.mail.ac4.yahoo.com[76.13.9.76] X-Barracuda-Start-Time: 1242169605 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25621 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello, I need to create large files fast without initializing them - in the past I used these steps - mkfs -t xfs -f -d unwritten=0 /dev/sda1 mount -t xfs -o noatime /dev/sda1 /hay touch /hay/foo xfs_io /hay/foo xfs_io> resvsp 0 1024g xfs_io> quit ls -i /hay/foo 131 /hay/foo umount /hay xfs_db -x /dev/sda1 xfs_db> inode 131 xfs_db> write core.size 1099511627776 core.size = 1099511627776 xfs_db> q But unwritten=0 is failing as unrecognized option now (was it deprecated????) so I tried to clear the unwritten extent flag directly - xfs_db> a u.bmbt.ptrs[1] xfs_db> write recs[1].extentflag 0 recs[1].extentflag = 1 xfs_db> It just won't change to 0 - any way to do this? Or is there any straightforward way to preallocate a large file and set it's file size without the unwritten flags being turned on? Thanks Peter Vajgel From sandeen@sandeen.net Tue May 12 19:04:02 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4D042Gl104106 for ; Tue, 12 May 2009 19:04:02 -0500 X-ASG-Debug-ID: 1242173047-0947014f0000-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 D63B01D11AA8 for ; Tue, 12 May 2009 17:04:08 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id Z45FbIhCPhz9KbVq for ; Tue, 12 May 2009 17:04:08 -0700 (PDT) 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 04B42A9ABD3; Tue, 12 May 2009 19:04:09 -0500 (CDT) Message-ID: <4A0A0E76.6000701@sandeen.net> Date: Tue, 12 May 2009 19:04:06 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: p v CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: file preallocation without unwritten flag being set Subject: Re: file preallocation without unwritten flag being set References: <283244.29270.qm@web65608.mail.ac4.yahoo.com> In-Reply-To: <283244.29270.qm@web65608.mail.ac4.yahoo.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: 1242173048 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25624 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean p v wrote: > > Hello, > > I need to create large files fast without initializing them - in the > past I used these steps - > > mkfs -t xfs -f -d unwritten=0 /dev/sda1 mount -t xfs -o noatime > /dev/sda1 /hay touch /hay/foo xfs_io /hay/foo xfs_io> resvsp 0 1024g > xfs_io> quit ls -i /hay/foo 131 /hay/foo umount /hay xfs_db -x > /dev/sda1 xfs_db> inode 131 xfs_db> write core.size 1099511627776 > core.size = 1099511627776 xfs_db> q Is there a reason that you don't want the unwritten flag set? (You know that not using the unwritten extents feature exposes garbage from the disk in this case?) There may well be a legit reason but I just want to make sure you're doing what you think you're doing :) Thanks, -Eric > But unwritten=0 is failing as unrecognized option now (was it > deprecated????) so I tried to clear the unwritten extent flag > directly - > > xfs_db> a u.bmbt.ptrs[1] xfs_db> write recs[1].extentflag 0 > recs[1].extentflag = 1 xfs_db> > > It just won't change to 0 - any way to do this? Or is there any > straightforward way to preallocate a large file and set it's file > size without the unwritten flags being turned on? > > Thanks > > Peter Vajgel > > > > > > _______________________________________________ xfs mailing list > xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs > From myhostweb@myjaring.net Tue May 12 20:27:59 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.1 required=5.0 tests=BAYES_50,HTML_FONT_SIZE_HUGE, HTML_MESSAGE autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4D1RwQh106743 for ; Tue, 12 May 2009 20:27:59 -0500 X-ASG-Debug-ID: 1242178358-355001c30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from vsmtp6.jaring.my (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7019BFA1518 for ; Tue, 12 May 2009 18:32:39 -0700 (PDT) Received: from vsmtp6.jaring.my (vsmtp6.jaring.my [192.228.250.86]) by cuda.sgi.com with ESMTP id b5nG07YYFaD5bPui for ; Tue, 12 May 2009 18:32:39 -0700 (PDT) Received: from localhost (localhost.jaring.my [127.0.0.1]) by vsmtp6.jaring.my (8.14.3/8.14.3) with ESMTP id n4D1PRou022784; Wed, 13 May 2009 09:25:27 +0800 (MYT) (envelope-from myhostweb@myjaring.net) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: by JARING Malware Filters (jaring.my) Received: from vsmtp6.jaring.my ([127.0.0.1]) by localhost (vsmtp6.jaring.my [127.0.0.1]) (amavisd-new, port 10024) with LMTP id Gq7RGl-h-8ha; Wed, 13 May 2009 09:25:26 +0800 (MYT) Received: from Director (j464.bkj71.jaring.my [61.6.177.238]) by vsmtp6.jaring.my (8.14.3/8.14.3) with ESMTP id n4D1LwsD022004; Wed, 13 May 2009 09:22:17 +0800 (MYT) (envelope-from myhostweb@myjaring.net) Message-Id: <200905130122.n4D1LwsD022004@vsmtp6.jaring.my> From: "Sean Wong" Reply-To: sales@channel2.com.my X-ASG-Orig-Subj: 2009 New Web Design from only RM750 Subject: 2009 New Web Design from only RM750 To: users09@asianrefer.org Date: Wed, 13 May 2009 08:55:57 +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: vsmtp6.jaring.my[192.228.250.86] X-Barracuda-Start-Time: 1242178362 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0217 1.0000 -1.8802 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.49 X-Barracuda-Spam-Status: No, SCORE=-1.49 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.25629 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 X-Virus-Status: Clean 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! 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=2E You may also order or renew your web/email hosting = at only RM200/year (unlimited email accounts): Domain Name =2Ecom RM50 =2Ecom=2Emy 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=2E You'll be amazed how easy and affordable to have your fresh website online now! Feel free to contact me for more information=2E Thanks!   Regards, Sean WongMarketing Executive Tel: 03-58822355, 58821580 Details check: http://www=2Echannel2=2Ecom=2Emy To unsubscribe pls reply: nolist@channel2=2Ecom=2Emy R R R R R ------=_NextPart_001_0080_01BDF6C7.FABAC1B0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Greetings!

Now you may have a new w= eb 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 maintenanc= e at reasonable rate=2E You may also order or renew your web/email= hosting at only RM200/year (unlimited email accounts)
:


Domain = Name
=2Ecom RM50
=2Ecom=2Emy RM100
Web Hosting
Unlimited Emails
1Gig RM200
<= /div>

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 st= rategy=2E You'll be amazed how easy and affordable to have your fresh website online now!

Feel free to contact me = for more information=2E Thanks!
 

Regards,

= Sean Wong
Marketing Execu= tive

Tel: 03-58822355, 58821580


Details check: http://www=2Echannel2=2Ecom=2Emy
=

To unsubscribe pls = reply:
nolist@channel2=2Ecom=2Emy

R R R R R
------=_NextPart_001_0080_01BDF6C7.FABAC1B0-- ------=_NextPart_000_007F_01BDF6C7.FABAC1B0 Content-Type: application/octet-stream; name="new_web_design.jpg" Content-Transfer-Encoding: base64 Content-Description: new_web_design.jpg Content-ID: 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 ------=_NextPart_000_007F_01BDF6C7.FABAC1B0-- From pvlogin@yahoo.com Tue May 12 23:34:54 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4D4Yr2r113709 for ; Tue, 12 May 2009 23:34:53 -0500 X-ASG-Debug-ID: 1242189298-1af203350000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web65601.mail.ac4.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id D71642803A2 for ; Tue, 12 May 2009 21:34:59 -0700 (PDT) Received: from web65601.mail.ac4.yahoo.com (web65601.mail.ac4.yahoo.com [76.13.9.69]) by cuda.sgi.com with SMTP id tIER1aqZuc9FADa5 for ; Tue, 12 May 2009 21:34:59 -0700 (PDT) Received: (qmail 93317 invoked by uid 60001); 13 May 2009 04:34:58 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1242189298; bh=pJR40PdEzcgRI2/7ukKtkn7abiUhkGLO4/SeLCxEAO0=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type; b=hntdSouE8HJbpi3Z+kk1pp1FQYSyq7d9U2Rd1SxMuEdFac7ByTcc7x6l1WsklbucAd2Of/8jDImeGAp4/OjF0G4TpIB3mgFiqLssgVA10IqNTh+wdu7iCcXvzdhcDt6POxfk5ZFhoM295HrU+z56raq+21zsHTwaxH8dDN740l8= DomainKey-Signature:a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type; b=CFkQwi5ySkX3jZRYAKCrZ5622c5hCUDhZWWu94DMQRlRGAkK9yETCu9hIVK3maRCbwQO5r6dEJBF8fKgDnTds3TD2YUxGdnpadkNOWH2PeKfUS47RGudmm4mnO3anpo0JxSBwMOHe2HXw93SZJ1ad/epsennddTuIQA0wrIbRPo=; Message-ID: <618437.93111.qm@web65601.mail.ac4.yahoo.com> X-YMail-OSG: dqH8i54VM1kNeWR.WDWetMGsbE7hSVxPnjPejwZTSYKPzGYyNCu76xWH2XagsUWm.WA4zrLt1Q5wJ7S2hMss2fT5k3EMdMn1doyveewHMkioK0riS7nAJrLXusQCsf6gueBEOLGGxuruQVlsIQerVZLWQXOX_eXTHA6rdyDnYiaxalblpbraxSIXMetPYCxI.BZ9Yn5F4gaRXg__h6hYR31dfnAFkhJYX7e_Q8n2UBuY6FVqZwVLKuYBuNGBCDVYxYJHL54OMKk4.w95LQbeO60fLM6eoYTSrr6wFipLWZJLb_AX3Su9.hA92tZp0Qd0xt6oCDqCiQjtgJofxQ-- Received: from [98.207.158.53] by web65601.mail.ac4.yahoo.com via HTTP; Tue, 12 May 2009 21:34:57 PDT X-Mailer: YahooMailRC/1277.43 YahooMailWebService/0.7.289.1 References: <283244.29270.qm@web65608.mail.ac4.yahoo.com> <4A0A0E76.6000701@sandeen.net> Date: Tue, 12 May 2009 21:34:57 -0700 (PDT) From: p v X-ASG-Orig-Subj: Re: file preallocation without unwritten flag being set Subject: Re: file preallocation without unwritten flag being set To: Eric Sandeen Cc: xfs@oss.sgi.com In-Reply-To: <4A0A0E76.6000701@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: web65601.mail.ac4.yahoo.com[76.13.9.69] X-Barracuda-Start-Time: 1242189299 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25642 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I want to avoid any metadata modifications while doing O_DIRECT reads (the fs is mounted with noatime). Right now I am doing it mostly for testing - I am seeing a performance degradation going from raw to xfs on a 10TB filesystem - probably due to my application but I am trying to narrow it down so I am starting with running randomio benchmark on raw - then 10TB file, then 10 1TB files, then 100 100GB files, ... But in general certain applications can definitely take care of the preallocated space (db, FB haystack, ...). What they require is minimal fragmentation so they would prefer to preallocate the space (fill the whole fs with contigous files) and then maintain in-files app specific metadata (such as valid offsets of initialized data, ...). What I would really like is to have vxfs equivalent of setext options - setext -r -f chggsize And on top of that I would really love to have is vxfs equivalent of "nomtime" mount option. Then with O_DIRECT I have raw-like performance. With the unwritten mkfs option I could get the setext semantics. So what's the trick (before I dive into the xfs layout)? I am guessing that there is no equivalent for nomtime option? Thanks Peter Vajgel ----- Original Message ---- From: Eric Sandeen To: p v Cc: xfs@oss.sgi.com Sent: Tuesday, May 12, 2009 5:04:06 PM Subject: Re: file preallocation without unwritten flag being set p v wrote: > > Hello, > > I need to create large files fast without initializing them - in the > past I used these steps - > > mkfs -t xfs -f -d unwritten=0 /dev/sda1 mount -t xfs -o noatime > /dev/sda1 /hay touch /hay/foo xfs_io /hay/foo xfs_io> resvsp 0 1024g > xfs_io> quit ls -i /hay/foo 131 /hay/foo umount /hay xfs_db -x > /dev/sda1 xfs_db> inode 131 xfs_db> write core.size 1099511627776 > core.size = 1099511627776 xfs_db> q Is there a reason that you don't want the unwritten flag set? (You know that not using the unwritten extents feature exposes garbage from the disk in this case?) There may well be a legit reason but I just want to make sure you're doing what you think you're doing :) Thanks, -Eric > But unwritten=0 is failing as unrecognized option now (was it > deprecated????) so I tried to clear the unwritten extent flag > directly - > > xfs_db> a u.bmbt.ptrs[1] xfs_db> write recs[1].extentflag 0 > recs[1].extentflag = 1 xfs_db> > > It just won't change to 0 - any way to do this? Or is there any > straightforward way to preallocate a large file and set it's file > size without the unwritten flags being turned on? > > Thanks > > Peter Vajgel > > > > > > _______________________________________________ xfs mailing list > xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Wed May 13 00:08:52 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4D58qtY117602 for ; Wed, 13 May 2009 00:08:52 -0500 X-ASG-Debug-ID: 1242191330-29aa004f0000-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 D831C1D2C3DE for ; Tue, 12 May 2009 22:08:50 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 5617PpTVrA51AIXD for ; Tue, 12 May 2009 22:08:50 -0700 (PDT) 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 49B4FA9B0B3; Wed, 13 May 2009 00:08:51 -0500 (CDT) Message-ID: <4A0A55E0.4010202@sandeen.net> Date: Wed, 13 May 2009 00:08:48 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: p v CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: file preallocation without unwritten flag being set Subject: Re: file preallocation without unwritten flag being set References: <283244.29270.qm@web65608.mail.ac4.yahoo.com> <4A0A0E76.6000701@sandeen.net> <618437.93111.qm@web65601.mail.ac4.yahoo.com> In-Reply-To: <618437.93111.qm@web65601.mail.ac4.yahoo.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: 1242191337 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25644 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean p v wrote: > > > I want to avoid any metadata modifications while doing O_DIRECT reads > (the fs is mounted with noatime). Right now I am doing it mostly for > testing - I am seeing a performance degradation going from raw to xfs > on a 10TB filesystem - probably due to my application but I am trying > to narrow it down so I am starting with running randomio benchmark on > raw - then 10TB file, then 10 1TB files, then 100 100GB files, ... you may want to try the inode64 mount option so the allocator is free to roam your whole 10T ... > But in general certain applications can definitely take care of the > preallocated space (db, FB haystack, ...). Ok, so it sounds like you do understand the implications and you want to be able to write into prealloc space without any metadata updates as they are converted to initialized extents... :) > What they require is > minimal fragmentation so they would prefer to preallocate the space > (fill the whole fs with contigous files) and then maintain in-files > app specific metadata (such as valid offsets of initialized data, > ...). What I would really like is to have vxfs equivalent of setext > options - > > setext -r -f chggsize > > And on top of that I would really love to have is vxfs equivalent of > "nomtime" mount option. Then with O_DIRECT I have raw-like > performance. > > With the unwritten mkfs option I could get the setext semantics. So > what's the trick (before I dive into the xfs layout)? I am guessing > that there is no equivalent for nomtime option? well, the unwritten=0 option did get removed: http://git.kernel.org/?p=fs/xfs/xfsprogs-dev.git;a=commitdiff;h=8d537733f52a642d471f6781f32f306241dd4308 TBH I'm not entirely sure why. The unwritten flag is per-filesystem not per-file; you can still clear that feature bit: #define XFS_SB_VERSION_EXTFLGBIT 0x1000 by using xfs_db in -x expert mode to rewrite every superblock's "versionnum" without that bit set. The xfs_db "version" command will give you a more textual representation of what is actually set before & after. You could script the sb rewrites... For what it's worth, your xfs_db tricks below to preallocate seem a bit ... tricky. This should suffice: xfs_io -f /hay/foo xfs_io> resvsp 0 1024g xfs_io> truncate 1024g xfs_io> quit Oh and you're right, there's no "nomtime" option AFAIK. -Eric > Thanks > > Peter Vajgel From vitaly.v.ch@gmail.com Wed May 13 02:10:25 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4D7AMrI124602 for ; Wed, 13 May 2009 02:10:23 -0500 X-ASG-Debug-ID: 1242198615-7c6000d50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f177.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D054A1D2C7A3 for ; Wed, 13 May 2009 00:10:15 -0700 (PDT) Received: from mail-fx0-f177.google.com (mail-fx0-f177.google.com [209.85.220.177]) by cuda.sgi.com with ESMTP id gxJTCEkUaW6CkvrB for ; Wed, 13 May 2009 00:10:15 -0700 (PDT) Received: by fxm25 with SMTP id 25so445406fxm.20 for ; Wed, 13 May 2009 00:10:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=ERYMsPSjRu4vvt5p/WBzXQDOdVft/2eIA59xmZ9K6vo=; b=sqk6iibQEMD6tNkF++Qzzpxln4rKy+4KwVxLKD1Oq9jg24pDzzeVY4kog0rupAo+Gu dYJNbRtgoMbWtUk8oH090Jvp+QyQQ2YDSQRx/7T3V+aphRun4uUJecFABrzsuMM5KZ02 zofHUfa1dWdpgzaNs7+sS/V78NT45SsEAgEH4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=SQ9gfEzetLoZz+Qv6tRl/Uo086wIpDcfBJd3cZE+0P8sabwnIsxXVf/asaBJcDvSwy 9UAsFdhAL2lfS42r1FfDtGMgTnKenR4Ciu+VqissTQ18E06X3lb7vH5RDuq9P1iO8X2n rCX00d9PM29eyeaFi7geH//V1XPkVliGzCq5A= MIME-Version: 1.0 Received: by 10.204.58.130 with SMTP id g2mr614567bkh.45.1242198614379; Wed, 13 May 2009 00:10:14 -0700 (PDT) Date: Wed, 13 May 2009 10:10:13 +0300 Message-ID: <6efe08af0905130010g5e21f4d1w9efb4ed200b5b152@mail.gmail.com> X-ASG-Orig-Subj: xfs_repair after reboot refuse repair my filesystem Subject: xfs_repair after reboot refuse repair my filesystem From: "Vitaly V. Ch" To: xfs@oss.sgi.com Content-Type: multipart/mixed; boundary=001636c5b8482691980469c5e7ba X-Barracuda-Connect: mail-fx0-f177.google.com[209.85.220.177] X-Barracuda-Start-Time: 1242198617 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0198 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25652 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --001636c5b8482691980469c5e7ba Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit I try few version of xfs_repair, including 3.0.1 and 2.10.2, but always receive something like: xfs_repair: dir2.c:2133: process_dir2: Assertion `(ino !=mp->m_sb.sb_rootino && ino != *parent) || (ino == mp->m_sb.sb_rootino && (ino == *parent || need_root_dotdot == 1))' failed. How I can repair my data? compressed metadump attached. there was no hardware failure. \\wbr Vitaly --001636c5b8482691980469c5e7ba Content-Type: application/x-bzip2; name="xfs.dump.bz2" Content-Disposition: attachment; filename="xfs.dump.bz2" Content-Transfer-Encoding: base64 X-Attachment-Id: f_funowobw0 QlpoOTFBWSZTWZhi5eQFQpr/////////////////////////////////////////////4fB97zAa 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 STAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAAkmAAAAAAAAABJMAAA AAAAAACSYAAAAAAAAAEkwAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAA AJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAA AAAAAAAAkmAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAABJMAAAAAAA AACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkw AAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAJJgAAAAAAAAASTAAAAAA AAAAkmAAAAAAAAABJMAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAACS YAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAA AAAAAJJgAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJMAAAAAAAAAC SYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAA AAAAAAJJgAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAASTAAAAAAAAA AkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAA AAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAACSYAAAAAAAAAEkwAAAAAAA AAJJgAAAAAAAAASTAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAAkmA AAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAA AAACSYAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAAEkwAAAAAAAAAJJ gAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAA AAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAAC SYAAAAAAAAAEkwAAAAAAAMzMzMzMzMzIAAAAAAAAAMzIAAAAAAAAAMzIAAAAAAAAAMzIAAAAAAAD 1/X9f1/X9f1/X9f1wAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAACSY AAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAA AAAAJJgAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAASTAAAAAAAAAAk mAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAA AAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAA JJgAAAAAAAAASTAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAAkmAAA AAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAA ACSYAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAAEkwAAAAAAAAAJJgA AAAAAAAASTAAAAAAAAAAkmAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAA AABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASYAAAAAAAAAEkwAAAAAAAAAJJg AAAAAAAAASTAAAAAAAAAAkmAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAA AAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACS YAAAAAAAAAEkwAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAJJgAAAA AAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAA kmAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAABJMAAAAAAAAACSYAAA AAAAAAEkwAAAAAAAAAJJgAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAA ASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAA AAAAAAABJMAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAACSYAAAAAAA AAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJg AAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJMAAAAAAAAACSYAAAAAA AAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJ gAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAASTAAAAAAAAAAkmAAAAA AAAABJMAAAAAAAAACSYAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAAE kwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAA AAAAAASTAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAAkmAAAAAAAAA BJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAA AAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAA AASTAAAAAAAAAAkmAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAABJMA AAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAA AAAEkwAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEmAAAAAAAAABJM AAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAA AAAAEkwAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAJJgAAAAAAAAAS TAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAA AAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAA EkwAAAAAAAAAJJgAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAASTAAA AAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAA ABJMAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAACSYAAAAAAAAAEkwA AAAAAAAAJJgAAAAAAAAASTAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAA AAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJM AAAAAAAAACSYAAAAABmZmZmZmZmZmZmZmZkAAAAAAAAAGZkAAAAAAAAAGZkAAAAAAAAAGZkAAAAA AAAAGZmZmZmZmZmZmZmZmZmZgAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAA BJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAA AAAAAAAEkwAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAJJgAAAAAAA AASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmA AAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAABJMAAAAAAAAACSYAAAAAA AAAEkwAAAAAAAAAJJgAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAST AAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAA AAAABJMAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAACSYAAAAAAAAAE kwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAA AAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJMAAAAAAAAACSYAAAAAAAAA EkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAA AAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAASTAAAAAAAAAAkmAAAAAAAA ABJMAAAAAAAAACSYAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAAEkwA AAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAA AAASTAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAAkmAAAAAAAAABJM AAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAA AAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAAS TAAAAAAAAAAkmAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAABJMAAAA AAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAA EkwAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEmAAAAAAAAABJMAAA AAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAA AEkwAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAJJgAAAAAAAAASTAA AAAAAAAAkmAAAAAAAAABJMAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAA AACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkw AAAAAAAAAJJgAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAASTAAAAAA AAAAkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJ MAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAACSYAAAAAAAAAEkwAAAA AAAAAJJgAAAAAAAAASTAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAAJJgAAAAAAAAA kmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAA AAAAAACSYAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAACTAAAAAAAAA AkmAAAAAAAAABJMAAAAAAAAACSYAAAAAAAAAEkwAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAA AAAAAAACSYAAAAAAAAAJJgAAAAAAAAASTAAAAAAAAAAkmAAAAAAAAABJMAAAAAAAAAEkwAH+/+V/ rf0HtvdfD/L5P6n8Ifvfvfvff7/f7/f7/f7/f7/f7/f7/f7/f7t3322K7h21ByAcP0fjo9RIJ8Em LWA6YlIF/wX/KkQ2PKyhYN7vd7vN5+FXe73e7fb7fb7fb7fbcO32+32+32+32+32+32+323tyJ3d T+l4vsyHweNAuoF068f9XueI6P4nE4nE4nE4nyfk+T5PkAAAAAB+sAAAAAAAAAAHRt/3YLyhKvrw Honr8e6AgEj/AHMpTSbxcEgSkJZFYgnn95ct5udzudzitzudys3O53O53O53O53O53O53O5cFzGT kgHNwcHkO+ZPmczmZaWlpaWlpa05jMQmYzGYzGYzGYzGYzGYtEYYAGMGv71Ljgo+akZqampqampq ampqagJqampqampqampqaapqacIvL+nPT08+n5+fn5+fn5Cfn5+fn56enp6enp6eo/Q9GB+qampq ampqamoqa4s1GTU1NTU1NTU1NTU1NTU1+P6Po+j6EaP1KOWlpaWlpaWyLac+GcnJzzPM8zzPM8zz KednZ2dnZ2dnZ2dnZ2dnPrmZmZmf4fw/hO7PZ7PZzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7u6PcT 3D4fD4c9PT09PT09PT09PT09PVU/Pz8/Pz8/P+hT1cn4n+vOjo6Ojo6OjqCgoKCfn5+fn5+Yn/1T 8/PzU1NNLS0tLS0tLCIjz4ZhDfMlMzMzMzMzMzMzMvMzMzMyxTMzMzMzMzMzn8q3mtImJiYmJiYm JiYmJiYl5eXl5eXl5eXl5eXl5eX4e4+ncwMtLS0tLS0tLS0tLS0tLS0tLS2QyGQyGQyGQyGQyHkx uNxs1x+PnY/I5HI23I5zJ559wwgMtoUAyJL4+nVl8Gc6ZUZmJLPREKrEQnCt5rej+TeOAuVzptdN dqkyVakqg0V90dhVlzzcs2Gj81/7ZUtJ/XOAuohwVFJERBUVBM1JMx4XyPxpNjbCDP6bAHR9/5fL yWhqFpMpRHNqZWSf93SZ2d0mpxbi7HTNavZOMeK2VwtpcUkkvfspQs9M1EXz455UCSvuAut94yeO OzLUcyLvyFOKtpbhJV5OiNUOqEvzEuLL+QssJUyFgFXdar4mv/cPqmNu9RJixN3cRTF0RDtmseLB 3G7bNNGsCvAui4t4QS0uouwxDV10DwV0tK+ZYL03VEatcZUhbzWxksjdH/zpHZ9u9Wp4SXx9E1gx dQcNzNnKLYWDuGpS+5t06ZEPhMRKkTttqVNbk1pViVSlRmlCRAwRKrq90heaS1taKgmEE6EA690z UxKaws5YfFNY+0fxlBKpeJKVV4AsySzOWmnmhNCxRBJ0oWRF1Vk7MVUrxVwteGKx2Kw2C4V9hl9l sJ/DnWLVwcTwFjBw8ZcFm1ubvdycn4oPxQdXB2yDusH4oN6g/FJ+KD8UH4oONg/FB/ODs4Ozg7OD s4Ozg6CDs4Ozg7ODuknZwdnB2cHDweag81B5qDtkHh4Oqg66Dw8HVQdVB1Uh1UHVQdVBz8HVQdVB 1UHJwdVB1UHVQdVB2yDqoOqk5qDqoOqg81B5qDs4Ozg7ODs4Ozg7ODs4PCwdnB2cHZyeMg6aDpoO zg6eD+cG3g28Hm4NvB5yDbweUg28G3g6OTwsG3g28H0YD1UHq4O9wdRB4SDv8HfYPJSHfpDycHrI PJwdjB6GDw0Hh4PEweJg8RB2MHYweog7GDsZOxg83B2MHqoOxg+lBt4NvBt4PPQbeDbwbeD00G3g 28m3g85Bt4NvBt4PWwdXB9uDbwevg28G3g28Hu4NvBt5NvB1cG3g28cbPCBwk5TxcrmYKdTIhzSm mhLESaUsUk4VJSerScR3FNpKoKCb35Q6b2SVREwqFKUpDkrrUn16lPj2phTvp1jZqQT75OtLPQRW AKFOTTOaaaUvknnkpzJJ0pMyhSJTKer13bYzwGur713y0Cg/RtPg5w8Q6A6AIBvCidYVCISjpqR7 59SD0QBwgQaWpgVQQ6AIQghG67NzKTJ/eLVuLQk/R/p9Pp0Gn6LbwrC9ylg1Wi2X+NZFSYAAItKB 2hQFYQ7iINFpW9IAADwE9sojStWsZXTmumMK321+r/h49Uu1HGx2M1ZXe1qqy+48OvYuLh3MJb+Q maglCSr20Z1NZcptP1rGt2mx1vtbmv4PjdctJQ0fX3kNoZ3cWGlecBhE4XGMYPbvV6VymPLM/a2S SaI1Ew/sWDtt2xy5lCfTeN1hNfVbO7d3tbNvWPVT1tdk616oLTm5HOTRk4trxr6J2GACW2Zq0oYX K4jcYeMEwDxIxeg2kflHNiDHuT3M2ebOM/21ILZnP4g5mWGOYitUOhj0EQgCScv1ZrI8nfw3I4F3 a2tx1WOzcq5750crbkxp5lqsDpyvJAC4EHBMm+5A4cFIQSK+BbOBEo8B+glF7uDamWpBp4fO5/T6 xOjdgTZshlA96sHCzYLMowBSkYYbMHSSqfQSW0W5dM0/HKbBidrv/0dc5hpDaGhi+WZ+SR+c/lAN rqMX8vDK2fy+TJ8qlSa7y3xmcrCXliTh506z/pZJeXSHecv4rX/06oNEXT/v+/7W8J+YBgtk0qwP pGhoRiiEEoTIEYiBGOM80Qf1vsrzuAphVRzEQiXXASfmYLLY0LKipWZUuVFOrR6/InM1a7Sqw1JD M5AiEax50pBGAnlJd69VkppOPDykpVemlKCk4UwuoFEwlcmydJwphkTi0WBVCklWnpRF/NZtad1J 7LAUlf1e1UXcdhDrQo9VQvTSXq7b4ZSiqs6mm7pkZkp0Cx+HVJZicm1B51TKkhaiqomqyu1oi2mv ucXfK+0RSQF3olHizKU2LkpTsgQgc0lJIQKUirJYUlONDpqTlSVGHlCg43AtIJQUKUlJgyONkoaA iRpSIYvXEYIhmAgiI3TESYMm0vAtKSp0p4V0bQREJSSvhFLW8pyuVLs+1U0kqLM4IW5QGJ1pHCwb gnCyi8MpeZgQxApGWGE1zzSpEShieaS8LN9juyv6lZr9E4VSpMqiNG6EqFRnN2MwOgZGrrtgiDyQ m9zFElRxvc012fM4wIuUraWBNgpORyQtQRrSSSopYiZe0c6kkqNopNc7n+boU1BQW7CgGw3AN7TP n2uQcFv2RjJDR1qhoGU9rjT2eNAt/DJc1R/dm+JxeNrpHhjdkHVIObM2Y15mW80rWpCQVECkYOFl eLpKaZwEAqTThjGV1OUom2m1MzFR6jaBoeU0M3vgA1NHQptdpbDIFd5jmdovffT+a7h23U0ijlHV wIgYVdxzZOt2jgQytgWwJyozGDGWAMoNmVRmwYhQN36HAbKXooPUcf9TI04U1i7Uwjr1WQR2ubDi A3SE1J3KR8p93C6cxDpQBoEIhkTRSOUro+hwmygN1/dhRXtPS4VdUtCDbQClJukut0cIGUj5/2PX ZAZ5UDRh3OB8x8rCohs9Xi+j53X6CKmoAECobCBCuy/T2GjmQDku59/08wKcXOIV0wBVv3z5aX5R D7aFDTh4eRD9/OclyXfPSdNvXgeX5zhtaKFKdBIKgqIbT13ofAfB99q9++L+PkNQ34ADGMAQMYxA lcY/2hohJGIhonaOcbu+LbJjPx2C3uT3tzuG73d0+fzg/n8675fr9Rbzz/n09NK9H52r5xfz1Fy+ fzr4QSpGAhL0cAwQIwIgAYyBAV8rFWGNzVQzRWwxchW9eIDHcrYEkhgobS5tahmmgxgYXAgbTW05 jC7l8yMBP1c/hUAaecACAR2Ic5EFVKxhEMoRKmCYIpUKiaRGiAIwDkAACBgDGMBLOWw/zfxMEt7E M+eW4NH1T3NoJsZULrL3a7Jng2uL725BsdboZAZwAkEBT3UAvgd81MlFQTc5RVE04QDs4BVE7vAq gm6yo60kBQTPLuGxwiPQfD63nMygIJ5/fDZmmBvW1W2uJMDG4uTk5txm9ucHFpbWMOSdOgdW5K3N kYlaZuVILViRcFjAoYXRlJaqUNYBjGMYwBjAAcC5ciiirt671q8pFYCArvaxdDOW5k3v2+DRytnz sdyt//lvUuDf/Ti1/+q6c78H15WfDNZWbGkWBsp/O6ut1saz3kaluGlg4e27EtVxEj++JT/3/ysw Rv+cNgRNzFUH9k/Li2P9Y2n/70KnH+//fYW8FZsZVXZf2Vtdbf42Tl3+95/XgbH+Ffi8eiq9H9eL Wcbycmy9f/pzr/52ufvqyp23g3v97rx0lHv/L3fxw/h67Llf+5XM9/Y6/v8P+0fY+Pip/v9fRUe+ y7Vd+LP09ip7/r7VTZfz5WNn7v1+rL4eXxWXx/f27n0/nf7329f18vw+Hk9v5/Of212xz/nRWw02 Otrpq6mwbLNbW1rW1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquO479PSRPQIC Bw/he75APsZE/mgvqVT1nfN2/DxWPSKqQASr3zs8jNH1zYe07T4jOrmO0YMWrq8EAGX2JzZsm5Nh O2AIAAAAAACTdk2ABZvFVVVWWRmMLGPbY/pjLtZ1mRkBtYeygVfoQK+wlBD0kiA87Ar7+UeZhT+6 U3qf1xsYQQHk6k8pKulAbaVfNwIdtg1IDvUP+t5CTxcBnn2cC/+QOpBiNZCW5d0A2f2SLPYoqoqK qqYIoiqIECEAXWEkrgb5fHEsJBNEhjIWByeFmo65qkmmnQM1AalTc5E1DpU2qAoGmnPJUp3NIY25 5NFKamRMiaJ3DigUwidwybEb5jdo03OcPPQrhWqyRiUz68etI0BNbHgI9JAm7Qpfxx0u94UPBR9y eFhECQcyAqEDvpGfHs9gfPapExjAJlD6woiAkMZIxe98s9a2JSLDOrEDPF6/93D6HbtA4vi+28D2 0h7XwO7boBjs85g01Rf3wom0hnrBNdsf4qaG8Xm/kNj9Lu0yVLe0yZMm+Ke7ZtNyV8EmSpVKlSzJ fymyWluG8nqxMlSpUqVKz8lobm5u6jU8PmJz2zu9l7cdrttw+Vd3193Nx/ej2u141H6nf1PEdl79 sI136WQlPrIQRtteV8z1/Il/V932tytNlfprL0kSe9Lp8LhMI6eFMlvXJoEiT6pVKlTOYj0pp+u8 CRJaktq0SdOnUKFCdKlStwSpUvUUSec/Xz2vHWrVgBjAz8T+RgBuCMGGAOT1+EOCnxN5/+G4ZAeR tS8r4vABv8+Ms8B6qNjCeOvaSnSa/CB4iB4aS1mf8GYevgTjYfny9LatpwnJT5adtIf+yctAfqtr AbKdlJvkmsjkYYlrOa/MJwYKFZwA16w5jdqJuUt4t38dBxldycsXlcr285ns9tcs05bJ5Z57mrwO BwLKysrK3+ld9V09kchES8vL5LJWa3Bw9qw+QmJKYWrVqVKlSpVCZOmut1ibvd7viMRb2RkgmXz4 jqbPyW7+uVzZ5f1r8+R75+tHb/TNTUPDw8PDw8PntnQYe+anU4jbTrg4cfC97bpUqXay+z2e1T7L WMe4ampqTbjcJlqxOnTqlSbmdrKZT1z3H6urvOrzf0cr9fv+k5OTk+LsthmdxqcRiMRa7Xa/b9tB EJUqXSpkyZKlSpfPo1E89M7MYAaIgByORt60jBQT3qROM91fHN9yMmtMygwGjBkaBA4fgTkZ8yvv rRMkOok12vwhpwK9+kWjZ+jwO8QcDCbpBodsw9tnXw77KffjWT6HtGDrPm452XrYdbyGNlJ6Dbf2 bqq7qd41M5ooIbCETWSIOlsrAhtpNbumDjtDBwtqSCacaoBlrTZgBDmVNbmwbvGU7KfDHSYAyjNv GHZb3p9YYVfeBtTQzknw5AV1ZQAq2eFxCaycWynNOiaO56B6/Vz/87hOlpEP98oHvZqO54ADGhn0 8wPv3VxgtyLPuODcvfYTTQhQDTdDifGmwyM4G0nTgMQoa+NzjrXzNo7kezDyuWobtg0kNSXxUnVk ZvRe6NLIzCC+u/Zl3I5gNA4jMaO9zS7hl/r4o0XPmIVPIkY9gHJAZxyMyAG+xr8nAuUBp3HZtl2q 47LOggRxQuzlbxWbv0pjLI04QDs9hAz28gHMPIrOrMpP/eYBxuQyHNDowNPJDNCRg1AVIVWqVBKr M7BEECSYk8wrvrElMozgoyUldBSwJo20jKDGY05yRAxLvOnmyiDmMbkxkjzJj+3+XAcLuaopIhXq 6SlCVUZYCkhArmsZdld1RdvjoZAXpBuu31uRvXH6ORrCQJkmQDfyDdYyY42VdxnNIrmZYgPKwYJQ 4QALeOGH4ngNsGbOJV0oeFFrxXTprDV2DUooQKm4wTaMG+QIoErjkHFJETv+Ezzy8BSAHJ5+1Zej jVTMTpG/4M3D7EzmzzOunbfW3+nJBzTtfs4AO5XE/zwntteYPLxyds49Hq4N/Kh44xjjMcFscwml 0RhTcIyJRDdzY4DNDtjUeOcJZI2DVHCqwgFhhVsXzq/KaFG1iVCuivgO9dmpWavzQlfJWvISsa0K rEISEQsOKjOYXVKSpKlIkKxuzkhOGnEQSa7BnMjAAGwjDGhODzOwyNtmcAcBPTXtoaOBj2kv7dZu GRsoXm70Ed2lF47xPJdBynJ40E+8SmrbrY4kwcbGwl2pKdJlS47ZxmBDg5RORXXAe2yTtu2MERrs YADfNXHbdUwZTBmCMJvkZAZYMErxV2MjmCT/2U2dxUihmCAFO4bMw5JSEOyjh5DtkC8PDnNU3wx4 nMpkSRdmmlUtHJLsvyxKUkqdKzokVCdXIpBnnFIW6Is6rml4+uzJYpTwxUkV8pY2ukpx18TyVxIl aZeeivKSI7bYCIIgjRP9SQzEmnBnzuMM603LBrM4GjoCYEIIiIIgjNz5GQmWBXADdrLRdK0p0Lak JMrNUKibdCXxI9GSVnSmomQphMIMowWHNsNlmcyL684DGRCCr2nd8sqCg3CQwJPryNZGnjdDODmE CC/CZtXT3/SyNCOA0uYKFtCZQng0rIEA9i+jTIDNArTaGZ4FMraXJgUM7CHFidUiAIxga8q+l0u4 07oRFGPk7pJY1TqaLETIUW14jaSabgLtRMtXnjNmzEKDNJZQJgdgOdOG0MKcMDIlHGCYzH129Zyo 13watsvkgL66MC4Yk5xgm7KMjFUnleB3TLgbOm5zjte6tYAFBUQ4XNgnTJI1xo67mDnDR4nV3Yyd 66w1uWVr8sCYyyyUEE/4LZBrcKjnlPXSJvvNQGM+kRlymWY3YjaEZT3nGRBzi+lzoh6KTuXBY1sF VxUhwseb09wjW26Z0XMf0mc9QbLOoGjxWDBGsgKBvwGA0Zf/KIz6IhRdChZRp9jtcleFdqqlYQWy aapgoI66lPzO23Jezz6IrpbWPN4MlET4kO5a4waBGfxWPGa7H/XgcAvDGVqapgmT07eK9bNSn1PR Y/A1MSU1fNswNWIUUXbdM/c1YqyGqMBaKcSKdKc9FONr2K82lE8QotRJKsVNVQr0ZuwVKwTUyXIl MjSoekDGADdCBa39MK2YKUcsgFiRrDbc08CRlpgYzOc6zrHbwpc6h1kk7ZqUlmedVJKIjg563ZTc KRsdRQ+QvKr1XpZG40qFaFKShJXIX/FYeLJ2Tt0LFnDVY18iXj5SzqCWIViqKEogVzWb5W4a1oaE kksQaGo/FVrYJWImTwp13NPJLbLSevIhQqFF14pOVWJ1KVk1MQU+pU6V1158X5rhfAirVVec7Y7V SWuM8Gj3PNlmT8+R3eXX7bo77BmADXSaS9HuWob3GYeLNYfO0kF1psMf1kaOswaXgsxrI/JyGi5a MF8AhRQEVDbWpcYbDl+Wf/b+s1y6OtZNk7HBmlTIgRHE/19aAKuFHnJVM5CoeDg1gGvwp4edGQ3m oNTuPNZHM3996jhjmskeBgUfBkLsiVfAQ9zhcxKL9glH2Mr6Y5rCj8khX48ia6UPZEiRAMQpEIRI H9hCnWkIfVlDmJOIlA7QSvt5H4hL8Mh10nIE+Njvsnlo05PqEHdyFQB5cg/8JE+0QnrSEf0EppyJ 3kgT4xK9tLwUvGQblxWD+3uOA5WHXx/tBqxQO0lXa9ZgNyhVXuxL/h3TAOulNZKO+8NgU7XrMWfG bYZ8jPI2fNmzGec0Zp6Up5xDhSIiK8UTSdEnSKBTzUUUJzqkpOelRKglPNJTzUhuTpNMShKcpFIK U80zEDpKVKeJ5CUxSKGxyciVJqaeeKTHSFSbkqTZSnakwonpT4nQM+fIzZaOfPY0caGe0TQwI+dn PComUImeYFMCFMRTKYU0woEqCgERQBQBQSKCgG6AFQhKcigChUmFBFAFCEqAIoKAoYUCoAoBCVBQ gKBBQUAigoECVCKAKAIoKJ3QAlQgIUigCKCgKGFBQ2xKhAUCoAoGUFAUJhFKhgyKRQCKCgJOgUUF ACoAnRQUECKAEqAKG6AKEUARllgHRkBxOjYnRz6GRnkQzznz5ZLoYz5KhoWhZZ8Jniz4LQ0Mss+H QkDEjoysSGeE5mTNKREJSIhSIUMU8mpCmmdISkSoY6VJzzziShOhqeZ0UnSISpCUApqVEpqKGSUQ p0KUnMRCkJTilPNKIRJzTNJkJOhxCkSJ5OEgCSEpkKYCgKTCglQwoIiiZ0ANFAFAFBQIEqKToAYI oKARQUCBKgQUFFIdAESKCiBKgQUBO6CgkgKAKCEFBQBQigBUFADocRQUAigoApAUCoAiYoKAFQBM qGFBFACVAFAqAKAKCgQUEMVBQTFACoRQBQicCFQUCCgCgoAoIoAikUATSdAFCKAFOUASFQA6HQBQ BmqQrIywaEOMsxkodvYREOt3PChkiwoetlAU2kvdZQAD4+l4XX+812no9q4nLJAXaX+JCABi8HOI R+fJ9fwODNIoHLQB4T+OHlbtkAHFe2wAruUv07qgA1AAwHa4ERxKGhD/h63B5mA+xBgj3RAdog6i Vzkay7lI/4yp4Ln/L5IK4IHWyhoyh6G/LLr41sDuEmvIATRlAeegxumABcShT/bbKBygRaRA7dCY hfSQ/4Q93IdgSLoQIlA6EIfQ7wBKDAwjATIU1FBhFPTQgaBAHHQIakKD0kBpQngpQNyhAeMgzSOJ fPSimhKnYZ8KJ7KRA8zKchLrUAWAUTfJHvBCm9Q6Ug5wleJg9dC6GYxEABroRWvF3jJRzEgHqpTV 4TjMjjJRUDgIFfHcpgMpE2sAB6yAOE4DCj46UHFukG6wh3GfIQu9TSm4yCCKiGJeogd1h/+k3zZ4 d1gEBOjlAfTwG1lTe3eeDy1cvAa/MBsbV57Z9Rn53QDVk1anNIOoyIVRVBSUnL2CSmkpRSlpCgKW goKQDaFiUCrBYClqIF2pjCCpvhBTiKoLTw5ZGBWqExDhgpaBYnNGIMpTZwGTUgEVCFINFUoFBFSU n8btMJkyrRUXviORgM0IJok7OVWld4kR1sUHOyAGtg9pCGaFHUkNKB46TKIkoaSqoB9vYgqlp1Ix IBRTQB2+AxJERCgO9K6TBAse85k/I3bNTbtPNst1zdOlb5s2WwivEoR7CSsCAgIqFImzFAoETtbz GDLes+Gih0LEbqevMAD0cqetlTeY1loW8Jy5KYjJzLquYEEyIygBV2kGjKocAQ8BC6UiULE+MkNP INZbvmysqLKhg1FR2UUNBQjMgNAYE4DY6OQGhjLJSugbr5SEEJBSbLxhZSEicaMG1FAlFxEkkGIA 3pVkTShM8oNKaUmhY1mDLPrMhUNbCAJmg2cLS6+E7ZDrYykqhBQdZw2AB2kCmrCuraOt1dbmVBNP cdiZABtAzBQamQ69JVX8BBmjakZ7KNwtKQ33SNpkZ4Q5qBX7MqG4SPzJQA1kK/ekE2Gnmy2BjVyE 2chi18GbVxrpFDEoovy4QQX5UI8XI7PV1cjULSgc+bCpp2t22FMpAM2ru2Y0s4AUulDriRB8T9/A J3mENGRVBRhyIUJWJq9e7wpNQkilRqCAsGlMicbG05QIr7iQyJEPJy6cGfTwAOsjEbTG2yM8q+gl PP/54dpC6euwImpAaUAIPuNhg/jLowOkQGhtTAaF+Sc0nm5VTEbHUw4KIgkcrE+xxhFA0+a5fJxw fu8k1mt6L0+fOYk1ttYFdSQNKNZ1OjkGj+bGpHEW6ScLIHxtbgDWzrJ+pAC5o7TvmANO050Ye8Tw +64zXWauP5xrZd+Le3Bqdn2vXmg6km9T+mDf9LAoebk1vS4FE366jrMOeQPiw6U37MO73I26bHi7 WZgA+LABrzkZgw8EEVp2wJBAzygW7eo+5oZ+BlWqxse75GIzJbnlqfUmv0k0KCECQRSsqNmqxSpb lvM1KacTGQqcNTSUmpKUJXVEKcJPUXqVJa0p6XXppbckJKpSaaIq1FMRIaFRNKYk5pKaVaZOcc84 QwRMMU230nCtJ0yU4RD3bgDGMDpEvH66IZFPtSrblwYzIcrZBy0sxwv1+//XFjYCFzuZwLxdXkOj yvj9jP0wvjIXdC+X6Xe52strLSjxTqi10zi0NXIqiS7xH87gwg2ndtPbcNnT6vr8b7a27rEXMSn8 4QD1UalSquFVPJFxVJ/biXTEtgEqYo9kjKCilScJa8sZ5ElsBkhXEiELW3eVWkpIWhbQCRO0yoQq xazCCZiRJPo0TTTKSpEzmhMIEApNBMSIGmhDNcRDkm5lJGPeoE+mFSRKChUSsMownELKcLt80TE9 ClJBCFrqdOmp4llVS51STgiIpG7bY4tSYUkUC568NUikRCS05FzNx7B4MXACp3t1KrSwGgcQkuJE rtSWuVqc8KIiqU6Rd5Jb+XnwHC3gp03EVLN/uRE89ylCuhHIwKK8zhGGIvG24Re43kDQQWFCSS0o uSErC8JpCMMQrY4UULUEkCFfhUSa1QSuNOZEpyWHcklMJoCTeYcVJ2jX6GWjZ4o0r+cP9kfQNLP6 /MnSw6yUWIsyUFGuuLjvdOUK4aZpW5UqXCSSiFbEiFcaWZkkt1puIpfZS5mZXQQKFcKKCSriFQLk RTTvw+na98S3USilSslfPVztLV/xucouuGcZoSul/aQqQnAkJAkIsHSnzcoWvtGTul23JMLlBwF6 glO7We+FBlyPHmvzYQ1JMEAaWA8izvMml6zrDHctPT1dEQTLP6KyRM0B4r4mhkayNytWBANXSwhi D2PCGlkmoGhg3GTKM1iQM1TuMlAYh73ZuR489Gchr+QA1NI04HfzuxhPH27+GwG+GnYdLXmHjZeI 3037K52Ngq5YCMTFyVR2YlCmRftQaXQ8Vu/NzVEJdGKqKLP8CvwMyhJLWBL4Nq1ipMot6ifpn4iU p+ZlEtE7uBdUJK0RFgd0JUIgkJQSX8nMa0F5eElQgn2w4ydINXIHry4cmdrwSxBYxnYtMdvWg/Fc ojbuClK88pdB8XHJP9oksL30vnVDpMnVQzh59rRYA1nejnETGnAu5GfBAxCAkL6ViKMxbpOtvpGp 0f5dDP+6RXn9LtOS6XgseAIDPn1dkhOjfb0NSPz99wOstHceQyd5l2lntXOI1heylVZxapcEgUJQ c3GljgadWDjBqE6lQsGVTYYho3ugUogwU0AAMATl8k5qU0ZV/5kH2fQ93Oh6THe9XZ6SGuum3bhj R9bnC9Y+w3i73vudQlTZGClf5LRii41zKloLRoU1g2gSiBIWyjcIdS8RfCvlGloZCa+QxtsdhrOd gyeBk75ZQ0GjAfb4TWchmHQul8dhXZyhwkuclKEUpFoFS08H7pUc+bB2/GADEADwkoJ5C4OdLdsI 7GEy0tLRza/o8eZjQnbS971mjlwBIu87pryyN6g77PMwbazFqkaUbgYgyMg8np4/55/BoWvk0Zdz 1mFNdoOfJNSNhjAOYvOQ+HtGD0BGfTwuLaypohW5XEKghOrmpKlJNRXkLFlretzwM2A11xexKREJ cqJqk1eBWdy/l3OZAISmEqtjZySmn5mW/CuCIsddxpTxsGmaG5+izZpNbA+/vm5sHdoPHQbWdyh2 0hQm5wacpm+JlluFucHid5wOstCFdUkOsuF4LHA+w7i8nk74q1+Vy6/f6yvVV2hUErhhWlE16tcH NUiGhSUlDFFhcuolfqSa4X4HQYGq4WA2Zz0OFeAFCoLxYNL4j6zazRdk17Fc8lZOFX2jEi3C1uFK nOuUeImu6J1OJRFzVJwvfEkoiId8WbzOuz0XJ1hY3kbOU5GyCUpKzEpAhV7jw6qtpr7cKULOc21O JKYXK8O4WUFora7UU7N3ijlCLSZ3Aik7oplOinSmMiQMAOkxoojFq9ymMEhAJIBngGPkJbZ+jhth SOLXCk5reyuuNx+GlfFVsi4CWyXSqLJVZ4uTUJobSsCMiSRCpzT06/C8fru01F0hWFVbXd3B1sM1 FIUZ8ytuNRbGeFZVH3BCiPQsLklXVp4tioUrBxgSI9kxVRqnwOtVMEvopdXqHRqUsa1WIp5U1OVy ErlnP+U7OfM2NEi5NCF32KcKLrYVFEoEAkHjW1dKrO+B1d0EnBU164yIo5/PBaitPFuCL2RmFKtR RxyS0JUdG6NyBgYyVoCxDjRJSLlnWEW+LTsq9xH7ahqirv/Tpr3nC1i2qa/NFLyWtqI1p9MeBTvC ADGodcUg73dIO/7Qfgt6aRGndly02mS5ZB+IjEQducgZJHI4Elfp4i/ysZktDOlMiJCgHX9V+MyX 4Yy/0ptc0OG22unriNiHWQbqaeM8lICgqIaE79HF2lBnnEGN05jnMR46rsH59hUqwBdnCweUw0le kUEZSmwU1n5F6o7Xdaap2ImWSFvfUqVOadKvlkplsfJcnK8YRhUuAmlFxvApUrgLhxTUnX0tf+1W dIX1NVaC347rZTwohJQpCnyDUMizsH09g4hHT7zjZ64w6209tvxk8/ts+XYRoRumbT08z5GfMyPE aGwMki/XVqFi0R5CPT7++S2kqcS15NTA3iunWQJCiQlze0K2kruXu1bRIg/hhP42fY83loFu04ik NtOp1GEQ2Wb1+SmR4f45aUTCy1r6krUhV5wZFoRoKjsiFZH+zU5RlpNQG58tn1uZcQgcBgDBEa2p EMbpgdKQ0LHL4S0FEhJakP2up9GZVSK1U679Va2FJViP/hWSk0u0E52l7vpTSMjyHA6P4tebDQBf kE7jcFFa+c8OIMVLGuTS1AtYmaisIqpshFx2KnPOseUCp1GpyKmXapyHiBcdoyy8zmwa7icYg1M1 jUlRTCRBUTSKCO2db5KJ1MPa+AVznnioKkMjuitVnpTBERAGz5qrcJ1tlk0IVcJYlVnCktWrk1IS Ex6uKK+RZUSrpmkTZCSpEKyoapVHCiGcluUpXC9tcmTVn3FfX9ypouBCkKvnammaEKBCEQCpivOf lfJmFbkpeqWqulfWmhcFPPgFMlEfUoiKzNeaZCSyLr5t/uFJdcJKrVr5Ux3ZtWLUXkUkRBXPPZ5V 2FmU//ppX06id+Vr6pTeFPEJK5TWcS9mxdnS9yUPk5nVmD7qFVl3074UWwcfNc5tQElUK2hTn1Mc 6RCnghoVAa9oVKRCiLBWoeB49fSpVhIvlqSmEe27pjtJPq5w4iOazY2hs8Ab/xODXZiz5GCHIywm J0IQLb2lEP+PElLd87oJlbXNq3uzVgq9tGRKxiHtBr8RNlZU67hba86LrYdAjQ6XA5B4jcjLKiCa tOED42NE9n/+4DQ6ak4X3O3kIVMshLYNfpS7Ru3XrcVKYjqdmlnrW5XO9U1WLEgKTYikEmhCEhWb YQkkIqFNtXpq00k1UqGZnPcNjOHhs2Uq87+DCbxvGe9NzudAOt1vF6ejndcWyYELJfW4krekpKSI VeqvG57kdFPjqMJK4pSipYsi7SkkxT6w7SW656nKdKIvQohylbZm2VJQEIRXItlRbSmaaAiJi11m soqqNOapK7nOh/vrNDNOjjOX46cmcgZIgdiAAC7KYey3ixZOvXCtbvyfde/jUSk9V935wYI6CKRM mTqFKpmXLl3eYXFjxrVLOLQ0ukK2NrcxAABInUKVSxcqknF8chkUF6EkgczISVhWcFsyKzSa3ppp EBABFBoRJmJbSR0rSplO14GtNFBCSXvjk0yMI+i6fzVHoiSBFK3FQaqMSrrWxkrGvdlTp3e1UTqA VNsIiyIQUy/5abvZlEKKcmqVNhuo6tWlNARJuM5dqk0yULhrel5NSdRcBJV9rNGUREapGKqjTx5L GANZPfJyhVAEVDXwopxuhj2ufGwul0cGaDcsY93DiXIhOBk1WA4NtyAOQMDa+eOYxhj/4r9d0seJ xve4+BRVvknwv7YbTP3+07H38HnarQ3z+cq0+rKxW13mrpoungvPkf7kfj9pr4/XuaiS9lXYxv71 Hm2Hu8v81/v5fzz/O/3/pD+ZrPajXfuyOv/p9hCX+qP/rV+6YyPtH2IOIkJ+goIyTi42UpaWjpKW WrZ+ys6+vsLGvr7Gxs7KzqNz0eUv9fj3vE8HR73A8s/1OROa3vejw1Oyr6+d/Vn1/ZbfvRcSOMYw pCWEa0Rx/d6DncOV4/j99zonL9t7hkhy0nISi9wgEc2bLuyhmOVs+txnz8Ry3Jmxz7HaaSgq8uhP ufYdnl1WxADl+56edA2WtwGynRs8CGDKBDGUbAgxNJRbuYTEU6uMFnwYiiiiimiiimzYcRRQUUUU UjjWYQzZYd1xgTPZ8sBipTY/aQ4gvtdbVK/X61CSSpZDL3TXKdirO5WdKuvdha3W91YhRZIwMCIA wMCBGMCBhziFG4NzB27jLXKgr3X+itFIrvVYxdcspvf58NZrlHQIKNrG5z4mdGNXQMO+89rOLz8W UCzCu6J1HfHwTnTtUc9aUudFO5wiGDo4zZAYfF8D8y01fLbjg9T5yrXU8RJRIiBtiVw6X2pTazcp asR207V7Nqk4rm4XzOUs3KykxYkeyNYD25pQoCIiF4woiFXSsZJO9v+TewVnNrsJ6OMpK46P+Jy4 H7WX/cBmt2+JgNK8ZnwqOU49/gHEfOzYTL4+EygQy8RhDEPyIxC7PHsd6zJ8eHNBzEhiQoT12MbC NjPTwfpnPDT8+Qx2rAamWO1y/NgyhSjZS4gLV3zJGQoM3lMnN5pGQIvhR8tdLkyLYU9gn0m997KF dSKQoRu7UMhLk3XyjBn+a/jJRFIhYFtJAl7Yn6DhO1cQmQCg6ZpYkhSMOR4BqRYz3SSTPSI94S5b 2ubv2crc/HR85hK+mwluiVtdewgmTA606pB+uh0jKQUhOwqdymltolDEK46RA6hVYW+SkIiRUV1s v/Y/C6e9TWth7fSu4+lb0TJV1Eq1suloVEmSmlInrmaG68DMTJ1GwU2YorrpRfSivSpuiaop6c0z nvmZvlKlX3q3rTX63taVxVtfcBrEoaDfYxO4wYg51EpUOkxlPyMc/l+aHyvSn12ZJkRFUhUELjhK bfexlCJP0CHk2l0RIhH3exKF+Ypjard6Cw8ml8uobLfNc+zaKmQwdnYYkX92Dm0spQC7kZ8vcOWY ujlF+sJfxMtOSNaIYIQXwZyzTWkF0EnhtQy1c+6npBg3DE07upaBwz2nOZ81SjtZL5ZbN7c3KkwG 1FlZbr4v60YejibjzU+tG2HR0Qs3739XWlP2A/uvCI6Utp5zl9S77gZ51xAnyL1KTBREJJRUExN7 gfBJOa5PByFk8PqOsU9l8qmqhM3ARBenEP5WoZmxiWjspZTfp7MuN+ucrj0jSy5CqkQELMVJSSxo xRpyHTw98mU1e1z4v2Im8V5YXtimvlbX5v+ihbiJdYKgjkRiuQ/A2WSucziDItJkIuDjhhX6Z4Qx unwEknO45ofua/qcymVNNrTNlZ5K3mS6MUyACDuRnEtQ8Dg5ajMnzTaDmdnlLRFOTCw7y1ml7U8f qTC+5sVs0/SHgn2s+wS2OlakSx568mha271qc0kbe9jxsyl6KiUpArCaJXGZNFQuWpUoUXCklPHZ tnJt9yMRZGyV+Q4S4ZbW6MHsdZa/Mu+7OrKeIWXexEfCYaddNLk/E5KSvxSF07dy9V+dMvMk+Fzl 13+e50rKSf/w8EJ9ILYZYWWo7g1MgIDhxr22srLzbtn5a0vUetXd1BCN7FbzXKW5aN0ek3q+tyuR NvDfAjVXJutkp1e+5n7XeXOV/avVptZbzhmSJMR+UGwkoj9OYHMDAAie/MpxbLeLr6fT6XNRaYjh enjMXpxl4nvS1+l29Pptd89LtN6n0330xfp9Mnc7jseXbYL0+mCz/Qwkl6d9Mx3p2fJyu5qdxeeP ytPMS+X4sib/KQIrrB2YvI2Dng/lI/yy+lL0l65ByEljETONE1/emZiTr6bv1urUfXZ19Ld1X8sj D3e19Njm/TZ+mb9Ow8HD9Pp13psLPadyv9PX9PJ2Hp4HNm+p3PT6/RJer1Rqz8x4IgADk+O7fw8a OcWveknEQnJpccsgLowGE/qwepXPrFyhfrWxcREe97nj2SSi0EoprtPmul1mjgeXbBc2XK25+U5m iw4DgrEd1x2vIwxnlMJyxwODx0G1fObJVwGMDGkyG9Fz3oTrchrpJo2Ne72D7aeqx+lpXbvd1PNX HSaIMo0qCD2Xs3idDq14MtVXdarVkhX5U6UrjfJ1eiQvnbxAoe6YnvMbhZ6SPyP/fT5mzIOP8tH8 7l2wtlQrMGLPFaVFjMRE+Nh+uiegI5FxFKCD+irSQej2idOAYHK9LXyxxZ8nU86bBFUuLZ8/ySlC hef2MpXIZYbbLfrlNOomD1Sbtb/Kd3f09NU6ih5/9JccKqTlh7iURNIXPN/v8rkKECv7uYpQGL2W Ur7XSlgePU03TNNVza2soDyHTknOvIcbPdZp4S/efgKb44whl6Fy5g+q3KXGVebVSaLAf3PYZsBP Mki7118l1m8qkJQkSDw6+UhY0Tk0IitLDyauhvhSmfOS1SZzDa2Fw6Kjk4aTQGj+V6AnnUcpLV+c arid4O8Sibg866psHwOyocdP4z1raKmBm8nJuKiJ2w884LU5ifop4mA0OqPGTNap+EpEcLUcnAmx JX2TFdTISUQldveyMop0o8RvcJnixhN+moTRMIBTNg4tpXJ5WUxIU4V44smsTK1397+ThBGIPQl7 15qrq6+37HVqs3HctKtBcDBikkpCesSa/CZx1TYGGb9vc5arVr7+b1PnK/apMKz5s6DLNTE4zixc 1KIaCt4zksQXjK9vKcJt7arEG2apJUixH5bZzJ8BKMA7lhMBPMcdXyl+g0QRTad3cp2ibRupNNsh T/2l7s1WVCiVwbWTHY3u7WdynpKzqtGtDiYR4Anqh/eN/K6zKkgim2gK/c66/yU1vSh5c5YVSZrG 8Q9aPSnpSolt0rDNaaeYSEbS3rRHAX7C7f+32d17ft7Lz+u1eZ0e619fX+PE5t9tcbX173J9nG+P X93X3ENrymRr22vztfX19fX18fka+vnT2vda8Rr3uHv+hwJnWjbnW1sbW4kzrFRetiz9JrT2tra3 W1qbWvOnh61RbwldL250dgRcrc3uDla2snSa2spVaxRlhUYWdga2tWZmtj6w9bW1na2tg6yes8/d ra3b1nd1gH62f2tbWQ4utraQutkDt5yNyUPVkObMY6v8mD7XxdJUyEkS/R2jlQAyNQuqw4PdE9zu 5gcdsAA7/+fmdA2kChoyYgEoVOw47LJaA+x1fn82YcumyyTWYwgUmjCAYlBaAQ7xApiRaPrTiaaX j4MSKVzUYq7nrsazN9nIxU9oj22WGlA3DyTkUCZ8jciGAs02ke04m/+wMkpyBWReJppFRNwj6Nxc sU0wURV+OUhdk2Bmq0pd281N4lzpTiQHGJZHw5pjW36HnzKQrNpq3wEpfskgShPPSZtp3smlcSFy 0oc3K9Ladt2XYU6a7kPsxfhc54N03J8v8/8H649rs+sahRYqyECBXNvE6ZqQtxyaUSlyDf/eAlKA /+FGAJGO1CUkHfCYru2g2y6WeO8ylS8bT+JKw1XfJLM8vUkHVNoMO2kAIIXxjARsY1AAulZYOS1I rzuhTHOjFjxitm1tvKSlAID09cqzYXnqUpiGKpNKXz/ZkJTAZltAkCtcjrU2vTqPyJF19eUoQVzy tKbTlkKfXJSkACRA21CMiedqTy5OmQoZSGIQgDjm/Bzm7zTQsMQmdS3T12UoBB7gmJTN62KUq6UB DEGEbzvbSlAdi2CoxeJmmSC9tgrty0vpmVzISl/WqSkvfw7r7TxKSVoJKdMaNCNFItSSSEBGRamk /udE02t9W8CqUJNAkfM2GWIrySx7aIzzhrOjrOF7BJBIWPFNND3vEdxMvaKYqRihqTaY6rTVyFDD NYJ88TI8Ypkl7zaSN/HTN8y/o/76X1+biOM0g/9zOR5zGuz7PzuE/lZ4AGkF5CQXEgLSeflfmyIa OY3za48zczoFa2PfWY2O8WxMvVk8e42Uie+4y9zHByoridrAOuqTyvMzcnNRO8Fa+kUlVy/vyzla OyIkjZHaHeTJOvzbz8RiJ5EawoFG4IS9ilRLQex7G2bh7Hsedx/B4OFP+DweCDm5Hz9r4OBSeC68 HG+PweDweDweDweCMpYPwSvT8Er1/B4PBKcaw8GZUeDweDoTvg4VN4PByeB2rWx8Ex4MfweDweDw XAPB2Hng8Hg8Hg6/XhOzCkxXgh87wW9h4LfOsfB4LKWzcHIpfAN72/B4PBVvPB4K7weDwX/g8Hg8 HgT8GX4PAsjg4lti+DwHeDwD3ff3P5cb8WryfIkaEgcfHvzr/h5Impkf5YyPaSa4vif4ZImSagXC cJwny/1fv0AD4k+IVZTTJIh/vk5myQssqTCBmZ15F425YXC6oK9liEM8N0og4hdpHt6e4tJD/H2M IbYA4row4VXOI5vAnOC4X5QIaPZbVh/ulFuvFEgKshIkI5toeUdEeppOECBECBANR8Fm2twNj73X 5a0XwiqqNJ5EkklMtfEleG4BZPX8DNMuXbgqF0coihPnENskIiRoUzehTJpyttFDIum8WWzZrc3c hhLJEMwALiEcidPBdH9kv3Ik0vQdrv3udhOVdLVH/m3vb5ylDRjg0gACDJAjAGvnyQXGMY1EyIUl 9L9fZZtlmuGsuNrSSXhulCUdE4fECYAtj8aXq+XqslyFDXgNe1qkP5nCaU+sV1vNNCuzmJI4Zw8w K8fZ8cp6c6lJv8t8ammhwveOpLFJE8Ec938pb13V10eEuE1XsfEp+vPV94jpyeFBX7uOr8X4aeab 6HS6nVGtqJgzZdZQ9mSiO+cVb5SlSbSaMQaqTCmHleelMgMScZLMSsjZsFyUnSHYq5OaSZCgFBXm fJJGhFORopntM0PRfPsElg6Ev5k4V6p/jMsoYE5Xb2lwlCfP2rjatJLHWVFKAgECWybXJS6AXU2T qeq41v8X61TU5cEL3PHc5ACFhSt+z42xuE+w3molQltxzZEjmL64kjzMu112If5V/IyV/FUFtG3t S77bpRz5MgRgR5N09c0nA2FBSTASEQCEQIWtHFTTS8Q+sjgRLc786Ql8Fde5iZfPiGq6doR0Rfv4 aUyAyZ4BI9Q9OonuhP5A4BHUNeFJhBCTp0Dnfm9jYnNiw2NjYqcfHqfU2O1sdHpUMnb7GxsWnrV3 x3HBnZ/Y2Ni+0Ngvp0WwVwtjI2KHY2MbI2ORsbFhvdjpbHBn9jYuIPf81HY2NjncvqbFzsbElmpE z2xsbGxfwVxJTqDWxivM/Ap+3G0mwQ+r9jY2NjJ2NjAvdDY2K+mosPDzXve2O3+5HYwdgnY01djY Hq32v6VbwOb3bOJDVxKoKYgZOKTRHX6oxaJrYYxhu6ns71SYzywpwYwEakODC3HI5gCU7zhI8aS6 yf9Qy2Ok5LFKXBwgnuieAwhymDqyBh4yNwyCQiIvYklDEoSBEZDhXdqezY/ip9X3yrLGlwO66V8Z enGgKaiEoDtGrLs/flvmqtUCEkv3cJnrmVwsOYjKmzbk5hUxpELhSLAkRXi9jMNdWKfI+LLiJnHM 4d3O0/+sfOqVFRm8/rfgeDOllEiNgKfoc9JSFum/tdMTG1i1s0eyfHJKkhTk5jTwTI5w9f0YpDa8 ZxBGMDX9E2kJ/s3VAMRDCrjmUADCHAwJKk9p1KI+91Mc1Bqs0drjZfaxmBDjMakf28R1+R8G9NHe 5/XPwKF3At8P8FYW7UMrrOnoZks/STQiEmT/a+dFFcLuD5RaYWCMAWGETjlxm6HSiSXvCigigu9n 61ytZ80K5CkKz2RxPkBjSM1AgfXHC34ng5c4gSNSuh2klxYEhimfebJ7pqZ6WU1NGJp+/6CfwbyC TTT5ydWmmmmmmnHdlNNOjn7hPldj5k0000075NPkT1bPJ9dNPhp8uK66aclwE5XR0Z7R61row/Yk 9HRvdHt6PShajtwcNQRN3o5tfiaOjP1tbo6M3o9zR0bzR0dGwJ7mje6OhUYuVjHdvQuqkYyB4g7I 4eMMeZbZ2BmvO0IWh4ZuBdeV1PIcmn+9x8D2Mf5/I+RopmBD+6H8Z7CP2mu3TLSM+Y440sJf0Jf2 KNfFqCqKuF8ky6rzLFTTJ29Cdxa7TVvVmZHEi6PpHeNhscD4k8vKtJfHsNlLwcE5dI1QK7zJiS/8 8YLpuravJ6h8RTiBL+SkWnTOdYFFzlYai/oPkNGR5AtiIjRVWrgZgkccLwBL05ml31nZa1NPmmwn ycuXOi3h44j5SnXOuF5Yk7hPLYSzr3ExfR+U1ZikLmm4NA0mIFupYbW1Mkbc2lcNjcSDmUoh8kZ0 /M+/GPnd8ai2OWK3T4rV5TKy45rxLviJcBuT9Go9ObAJf0Ybjt3kvmyXzS95EcmRgheV07jRmrnl FoLiHidYiboDtfJcL9iKAX0PifUd6NWFXV3bS2Q8s2k4MuREVcM467Duz0ieXI0fDz7HbTqQgugx b+RyQruQr4JTiNVcf+NdmuskvSzmFlORKkYJSv5ABEgOkWMICtZnPga+tra2tra3N4atra1zlq2t w1a1VtbW4+trXPT3/zOObxyClHKdxxyrccsXHOnxKCQ5zks4444450JxznOOOOcBzHcnnHJJyYcc ccunKhy3ccccsIXGrou5ccwO3ES0vWOOOTt8XNuOOOYk+5fVrnarnKxyxc7TmXUCcyXHM66xHE3L 1y3RcccxgOOf3byOMdQbH3QLX97rZHbd14rrxPz+PZVne/nBTpy7NAkWKeaoR/xE7GmlfV6UZcgA FxGABwQHTq0wDEiFVXD/crHSzepiMQGIMQXnXty8y++dUfw3Ea/A+2xaV4Jf4rMCFpvE1pEzElCn +JHVKdIR3ZmUPqRmCW6cVH6Ei+Bc/ovQUnSooofFIj+0UrEAeBCB2FzOhaH5BsRZkBYUkANlrkgW AlhJHB2OwMyVcnDO9QSZ+Dej4ngOB+3m6LQ0uM1i/08lgQDKUT3ViFSum/UYRykIgRADznvBcDiV qjofvvWv0LKrxrlgvBD4uLGgMDNHt/dvaCkwMGNKgub+B3Px/E+y55Kl+BXZhgnCSVo9ALJF+sn2 xvt5dF30sl63EvyhaqRv9kyCxMCSDMu6fG17X2uwPNqu3qpQlDWxjQQka7nGtIZeWOL0SUFVNB/B znx6h4vduPEYXFUzksrjmcGG8asAIi4kP/TwrQUuL3/epKYv5H/Df5uXJbqJpW7Ud6L2eqfvUn49 PkZduXZc970siVwqp+4xJdkJJ02toPsEphTFobIRfzmRcx8WEkkuDxjSXoquYAsWW5fsk1s1u+Cw FrQKZXUVBVEtaIVd3PCqXtnnzvdCriX9BOFZ5IxO5NTCOzdIVTvWXR81a0i/TJcvp3Nims4bfs2d krJHFmGr8XKncmu+H0mmlFvgXG+lehTEdCePL6ZRobe7k/mE4X8TMW2q3buRJtNGGxbuO1uGbJuj WEyAkl9OB/xBEsiX/iEZgzpw9lb7lyvBC0WZip2ckfB4MXklPgvuT8Hg8EPy4/Y2L6M2Nry9jYht jY2ODuNjYhqTmbGxydjYnr/YrNjm7EPkbGxsSJGxFQchsc/Yl9joxGxScSj2KzYO2NiL2NjYjM7Y 2LzY2OpsZOx14aNla3CjYuLi/Dk+Hw+Hwzfhw1suoNzbw3G8OHgZvhovCT4bTw+G/8JaI7bSF4UL DwkZHh8NxleFXw+Hw+H7eL6nz/m+ncf3/j8bWDWvJwz6/H1eQoWRSiWt16kvfqREsjMv9F2FJqlH uW0rASCF6CuOA4OvuVLDuOBI4cjXba4SoMMcUiK4SZGEiK4S4cSrXjhotKtU6FcPxlUnXaKS1YEt kwNCBgsq3VzojrneesOjytT49XOconNgjJRXrrpCfYs+5NqVs/tidOa7NuUY1EAnbb0zbUtm1nZy YSCBLNnaggkXnXEMMI9LigXy6rf+/8WdcXT3fYB/mTrXkkk+rkmHPnL9Do4/XhInW5djskgqpJKw awRo8i54xLz535qp4JZnKFMBKvPP3V+hqOo2HV+hkaOD1z8LKl1Vjt4nCT/0WW+w+7+DVUHY3HaT kTadQnUJyIYpQHwIIb9Ig6I1SARaznBfZ46ckkkUNh+xDrVpKW/tTRJxI7YUtPfdYqzrTlpon3Ng eE/PWQ44yBAMhEj8URkiIh+cgmAIYTjc34Cow8SpHOMljRyBRUS8yQTYXArfyAiFRucFhhHMiJG7 QVpAZDeZrtfn23lqDV3+jo9AlIiH2DIY3Hjhi7cx9AONCxHSQpnoKWnO613COQbQP9CzvPhgcccg 4kOz062hvyaYcCamY+Vs58sZ+06JB6U0sh0w3Bg12zOgJKpGhq96iF361n4eg1+XUGXCs9qy91sF Mt/KFy77ntacIkxAFZA5ShB79BxwCCmEOIAjTadQh5yZ76cYelxcYjH57Ssj5TJVoIMYvblSpCmb hNZwxikk1qxG20NTC4ATha05jgB+g1y5YETC7XandrZ+qQqSDcW42FtfS78aQmW/bDKJLu2uOR0G Nf2lKARF9NnF+hMK3Oy5l8Z7750tjny6EL4EVvTccBScK/kKfuWyPgGRUNNJ9GLXDxTzyJ4/Fr+x SFxY8k9YErkJWpzv6vURXeIwzqi+jrHwm3vkBWoqPzcfOLfZvBkxH0PXBSDINhtt4lIwIwPDFyRI yJlxSL/18lEJJcd8ewS1Qf+74fu+77vu8rjfd93anvuefd0aip4r77vu+61zed7dLEHni9mwqqJC reWtkp1fuzPuP+77vu615V2pFcL7pOMJ5N5d/dNJdbiYvT+6xy1ef1LZP7sDtd77lf5dL+X8o3D7 NlRxFnS6j5+hJVtI5Nx1L/LK/lW/yw8tjYD4CC/5fwycjTxDNh3/LK/l/L+N1/LW/kx/b/Z/L+N0 jddn08jc86d9Ft9O35zn4YjxH3khfReMlersLrK36594BMk9WAUhSlF+U3xStvV3u97WrZlZfVaN 9ZEyCxMhfF1+vi5aqaf3ycDgplI4lyO0DoOFaggWZ+o450HZqYegGJ9WDpBxXOKppatCwaBBhb2F 5YmNUncGPPtSQxgYwBoUjAGMDUubdHbJ6LSJoAtPaRk0GLROWVRySg809qVKOg02gbUqQPiZXlxl 4YyVK5uHnEHCtiRz9o+Y9AOKUeMLx4B/ghB3RB0QiR/wsxH/gfsNY/xcPHJw8Y3NcVEqSbELfa3e PgZESAUJ5EIj8iNIOAaw2BtHpdh63MOgdQ6hQOoHkffuO7+GAVaUJWINAlLqNi2wAfBVRsjbxUbl LvksRvPduGo0k8CEFmOApTlaQK+C9MgbKpAcu1vIuNC0Xh2cmQW6Jao724OEgLihg05HeWPEf7v3 Vj+zrcLpfeRgUUORauF27QG/yCYb32XbMM7DBo3gSQREEGBxUh4F8YJIICGCcM+IxUYoQGHZEH99 YHvkuMxHYJRf4UlqBXl2TqoG/hpFvGIkW/DNSFnJ2rBYG245qwZ8GqTYPBQKaQaMGnjIl7Zm9txC hmQuTYGV4xKe24+TTCBxLA7foYYQ4wQEsL0GCOgWaJUB+CYYgeByfGO6Yq0jEjDh6cMfg2AM4lAM dFPMKxPb3B4cMcxhxiQi+tCW2xrXLpg1hrDphhfbgIeMdxtWwMDIGQXEXdWGN1wjY6MLGMSFsBbI v5qVDsGEMAfxKCEZwMXcmgMIxYhH1oZFDXfYAOQTOIamddfA4CPkHrzPQZRjhkbtGBLhVvhccOsF 8DMHMerDqCfU0oL2i1E84EJArFuCVle4O8RcIrGBEoHIC+ydsVRF3wje1K8Hcgzjnxb4likkQJy2 LkmwEtkRDDARLFbpe8h6cUkMHACLcHBvanV1UQ13hw/i1Bwcm7AW2Ld7aPYHy+P7kFwjQoCmWkMC 62iEbimnUyhTGMYlBGi/zF4Ywxh5ErBJXC7LI8NQjhgoKJkh33A3NcUJPehdEL3yY7NJJa4+1iO2 SJxkJatNMt12KSyXc9SCspDIH1nO46GbJcOQc3X85DwzyJpYgZkIMDbmkERuPvchBJDatgyCleF2 T98W3lceEXEX+zOpUSzkl4BXHbioFdxa4K0I8IWlfj2mORQ2NwZks5o8Vm0vfbji9zl8tsqw4/5t KhOullB+apZWVzOdSAc5cktwFtBN3zdJNgAAAXptt1WwDZvn36ab+OalK56tKQco2Fm2E9fKX+t/ y+XOdOQOhNSLoNaoJP9fufT2CdJUlDhtuFmv/v7mW/Y/cPPvFPb6PZIl/9e69TC8dz7c+PJCDGiZ t3jP0ZnOZaWHlcom2CUoj7HSECBBcdeakLssHKXqDKY8q4eqNM8gZPEJczz0piCazkpHg55yIBAg XZDEbI0+4aZTE1sf8SriYyhSrTSvqWj/f9Zttp0STGI0HQy8i1f3+fu+q7ddpeeGGmnJ6Qp5TTV9 RbzVcixPhk+nvjUicYxiBNuAQLkm4BGeeWJcg138mtVGIF5oy+DECDUzhJOuExAg0GkmkphB5g5X /iPm3Lf+u/59X1R/8/5+T+FD+H4fh634fh8/4fh+H4fh+DPF/Dndf8OB+H4fhWv87nJWBV6uLI7m eY/n82O/BK/mqLS/dffh+CULUVtBzzZ3h9R5gTeAay+IgtAiq/cgiX01xVc52b21hkpGTxPwnpue n56en7P8MW1/CxsTPwIp7Om/Ct/fW4dNnZn4fg1Vff9+hX/f9/35f3/f9/34Fxoff9+SPC+/jW71 uMA3N1+cnps9jnAIEikfnV+eidg+pHx3YIFI+QCV+UpFSVSEoYGFYxJWFGBY7QyM7OGFKwpFCt+d ERAEwNJ2CAQJgZ2VYsZmBSFcXHGDMpTtbOnVKmW0p7UdrYGxlQWsKKKtatYmhtXEsUuDc1N54cPJ 3Fq3ZA3t4CRAG35SBz+FzOrSsK5oaWtIztrMyIoInaFju6ndUDrFzeTAi2NqlYmTJFzagg3J1LYo JOS1xUuTG6OTmkkXVnTNqRoWLA2nYmY7KxsahOuapFkDMkRbXmtZWhBrjWtreWsljkdWoDI0uPES NTTbFTEzNShcsTObK4NASBI3qWhkcDOSdc+om/u2v6N9JISBA5zj+qVt38Mk+oFcQrfmgY1MEFTz MerrBIleLpySTmTBb69IwKUmTX3OHzFymzVi6doeCM5UZiCmtccxxCJuwmw8y4Hf+Lnm+A23s5pW 3HNb8pn/Y/u4ySlmHr6vmBNrLzXzJqXsfbjKCTvOgcLBKrSip5mYnnTSPyQq916zn9UeVW/hL/Kk arZNfZNXqsq+emrFDs0TKvdOUyr7VTzRJomosptwzPRXPZ7s/q6nsLH4vDw2kp7XszrC3tuPQbX6 toPC4D9pKYg1RrqpfTL4zTzYyX0kjqjxSR34zBnFyeKqejJxM5xMQdT822ymNYoa9Cby+tmCQj+q +VcTEACDzBMR/rTMKcZJ6vl2dw5vexMkSyESW3SeEOl2+aWMNXx7mq/dJZzFT47ST5wpzte63/qw 88vWJ789mJC17PSleDX0ttmlwuzO0JhdBdMrNMucbQcuJ/hdZWZMIEFmYf3vGw01IQAg771nazO6 FSI/5NKQmIECDoioSEGSr3I/MZQJtrfZNB4EyTUtPtVjMprRpiq/xLlpleZOAQIEEGjfYmVma1Bt dSO623CzKYQI2J2JxpMIEWqac7hnuDEB1TnJHEyfAk1ZpjGIEEH+NSltckxBX4k1tuk7ZzLDnr7l dBZ25TmLOzs7OzxdnZ2eEs7OzydnBxlnZ2dm7Wess7Ozs71hc/NX7ZWdyt+Xs7PY2izx8zZ7Czs7 OzoLnZ2e7s7Ozs5Gl4HKs7Ozz9/s7Ozxtn1bOzs7O7ZrBR37+zIaURVN3X76jt0ejRuVWZQdtiiZ cf0ejbtuMtVSj98Yznv39fhaWlpX372u3S2dnZ8XhbHnWfa525s7Ozt1m5PUTGEQFJuWBEkQDvjx SUMklCYgkLL71FBQeU4gOgifgHOgR225IY2ZOlgfVwfhZxfCwKjGzqdBoVnY3M6FoOPtKItUdOrl ChK5ufl+0ljs6+bpePLU593lOf4ezJ16UCfZ5+SuMz3wdmzu3/c32S/6YYm65pn99+5Fj57l57Ui W4uckcVJyOeuCez9ElSSRKkI0L8Q0sz1k8rxnMLHN1dDnZZKfVZXfSnh+Rha977Pq9P7OWrpLzm7 cX5YeaWe8HnlKYuJsMmpDPXGSVqO8b3PLKGfJHAF0k/jMlV1ueZfauKcusaYjPuj+H587QL8fOcs I1RwMzkmQCBnDSasD5MjNJb037RTk8yJiBGobjLy6Ua7q01Kh/wdfQ5jUiUnr6JR/2aWvDINpukl IpIZAIOm5pzRM47x5OTAQTDOMExByI5mma6vQakIEC2L/5yECpQxwxFxe+KZ2s9y/SaePTE5xbYM Qb1M5PJkolm3ypIQTDGJiBX6Tlk2mIF3Lc2h5GylNOZsU0mgpDIBBOPZHIkL+xiBSjU3K1aZ3oya /8x2haUjemVTNbwZTROTZkbCwsLBTYYiwsLCwsLCwsLCwsLDNQ9hnbCwebB7sLC8wMHYWFhYXGws LCw2NhYZKwsLCw3G+zlhqb1YWGDsL1F7SwsLCRsLCwvlhYYewsLDOWFhzuZYbTm3awsORYX3C4rA WGtweQsNjsubYWGb1fDsLDpcre5qhsOVs7CwsOZn7Cw19DqLDnWFhYafeWGlsObzLCw6m5sNhxJ6 bsLDfWEJv4q3WDoj5NrK6dhjRHCQADY0rTAV069/NEJgQkckefwzcgFxD/VyE7aT+H7nsEp/TKdh DpJDj+HOzAACifdQj/GIdBiOz5LWcHPcqMl1MywM08s7lXMVM69RRtGcv1E3sjPAPfr3NdmpS+iV j5b087Vc8/u0yuUz/jLvMk3FvuT+vwnlpR9C4lKwl4JImBu18qbrZvppNeWf1/c0sEM/9EIT2X9Z Ld90uKpTWQzqj4funltm1+HErbJv0iRFAvn1+4ehMqVJWU82/C3XI0rz6E62kWiNKK/fi44YS9ji mq1m8bcXMK++Yn7Rrcn7wrlCCToq7BJZr/1Clann7jNqMy0P0Vr/Nlj2dwc5+fQexWxk/ClhBpXD SVubQSPQNVlXweF20/DiWnI/6fkU+lf6ScaqWKNf/ZpK0I7MSnN0wNSX4kLbTUBcYZc8EimfkRoC FHxlAlqHuPqCLyVCLHWWlaScLEiXfEb5t/py1kpCoKoyJdM15gvrLTlH+B2ByHCPKiuBuRFgRw5l iMkL+yDKQbO5N9/JcDiw3f7+t76nvuWcvHf78X3+/3+/B3LvvVui+93u93rX3sz3td3qng6+Hr6+ vr6/W1+Jj6+vr6+vba/X19fX19fo6+vr6+vMa/E15Hp6+Nr68Tr677X15Sy17XpEa+vfw0VcY0rG SGvb1uhWSWDrx2Vr6+vr6+vr1WVcPtfXutO8qH+vr5N4QprlazvdGrsazvbLs13e73a73e73e3XQ nbb3vWYORbuYjBubYB4OElQAA4ZA5Dg+t4uFnjFHF9G4veLfm/prm3/XPSF7gq8XxFmkbELkDpRe LO9VzbnFiNreEI2wuxmzTm2moleL6hfgRyFZx3Io6c943PUKshEYMWuE4s1bbht3/ec3byfhxWDV bUxZ8plmegaLHO9mwVqCVcfwR7xiKTXs1XohTG/+C0sR+LXDVX6oum2trZdcxcuyOEPV+Z6qKOaF /R4PKMwL3Xu9NK6H9iTPSu7wvHtR25rB6Vi9Ww7rXRpekLmD59tcJcKUJJI3HhmsUiJv5HH8DEth N0PkJjij7yPXm2ySZoOQfp5pxczkbF9ULbDP7rkpKP3FuolpvNs5LytncZw0kQhZDUqJY0joSEu/ OoInRG1drlJJabcrtJbEKmLCi/4WfLtLQCzhQTQQ4C0+I4B4r2HMOeWLID412XzTnsMRXV1dLV1d XV2Yf783V1c8NVdXV1dqIF+/fyL/nv7T5K9+/fv/g3T/dv379/zX8y/fv379+/f0HM5D+Uf8bj9n jv+lXz1TS3r9+/xcbpP3+fhxj9/0n7/D7cTHzshNxj+Uf0lTKzD/Jfv383nXr81+W/fzWS/fiwH7 9+/fhwLVxwTzEcUyHHHHFLrtuOYz5zLyN3xXPVIgPMgd468eAdQGFhP/F+FIDb+Qz6AUvfuONSUC QENwT6d3rULoRpgnhm/aFm2HDOXNlzimuJ/2Uc6RgjrCLUsBbWXe8/VKoLJkK4iwiOWzjWSI20jy OfffC2cWoH1CwaP6P4t8D1BfKf6ZC9rzfO82urqTYAJHPN2SxBepptWbD6uSlIAyzYBnvrlIACo2 AZBsPs5eUvVb8P7ZSDJtU9gfvm5HL4hqwSi2IiIT6T72v0MhtTjbTkb0931Nx5pHLFeaWTOGei0T j+hPiXed0dX2mr4KNVEpjyBSIW4EXaD1UPEXio2TDw1p2aP3W+XdeVxr5PHzwl8SH72t5nJ4PVwa cfsvpbDGsvsSeS+zhP2k6BP2p4q5yeckD6UnsbyYGAdcqBdeT1Y+PZ7v1/sbbbb8lttttvsNtttx rcU3PNttxjbbfyUzbbca3BNttttttt8RtuWbbkOg1u2ui001HtNNNNNNcNppppqSau5vEmmmu01S tNYzTTTUJX4uhhtZjVhRULTU1PtNEtYTXcs8+4vDNC6Zy7LBZZZZZOZwO4y9ZnKKsrOZWVlZWbKl rNxWcKerKW3ONYq5sVGyPV6s67u503oelAVERGBi0hGHH4dXSX1fNr0v0PmLUiY1ltfSLWeffD+q 8yL/PZcbB8nXyhfB6F6qTJY7HnAqCAuhAdOQOYS5SZCzhKVAYQjZchpy3GDH7e7JYpasRqxt8cq6 /6atK4C+EjrcEp1Lo8i5pn2orE/o4k2I2v+NbkowIlfzqSF7mQsPBu1w5iiPDxDWaLf/zqC+Ipai 4WVuPGWU3XirF5OBIxvqPMeW6mX/WQR6oroGquuFXlz+V9bqTX+FNC+kX2CWxlXW3ZiW8kbmII4U S18hcH6u8S+oVYQFs7clXOQt3NR4hpUhztYU+sU5TwzrkklwUREPff9dWm0gpjxzYeo3yrVI/v+2 thFlaGuOfFSuE74cU5+RC3cVIzde/MXJ3qUeeJLjjhwM5RhZmiyKAU705gfVPyA2rAd0nz2wgtJJ u+/LINbay65vsC6JQRG9CVx5lZxypXC1IS5BteiQ6bgIU5EZw5wSmIUwmiJxcQLqpnSFOJlIhUxJ MUUuoW5yUUERHB0syWWe9HU1I3U8fU1NTU1JWE1NTU1NT54vUlKPUgtT54f6dTU1LyM1NTU1LnUr LDU1NTU1NTUndSm1NTU1NTU1KTU1OvCYmLqcjUg7PU1ObqROpPY2pqBvNTL1OrqQeBqQUZMxUpqa kl2qmYnNSkn5yVk5aVB2iQalhqYVlqKZdknoal9f6mTW4upclampqalremPmb7U1NTUR9HqqeDwi WWEoYkAL0W9e9HHpJLqFZEX3W6U+Pk0kljRQuHOm7R+r1WD1GblYyjSsZMRyUHHqTUe0JJLl7lZS 8j9ZSkAAJVhRCSCI90STFC7PA2Euz63wfyrUed0dw9PLT0W16zWR0NmwgwASc+yc3lJkiwvjaUD9 DmKc923bjJ09IiwZWdz90TNFGyLYsOLWwY5tYE7PCCSakWsntI9YlHmf8dJGn0tnVIXIsP3ytTQt YXmCWqM0XPIzwTLbNZKYlXN722JXX53ulm6fObPKRffZxk0RETL9R13vSizLAsaXfSsSZJJTvoDE UTSNafRFXgXZag1zIqnN+5L2z2fy4iSsTnueek1Vmw8EdhyB6ohn1TXDb+3ynvaIOPwyuac81dFU rSBotWDlGXSva2qY5doimmLtfUTKIy4Wvj7/jkEVKNp3+3l0yUkqKYkQct3u+PadwwAbhiP5skhk wiO+SBOIw2Qz8pp0YcnJQr+67CNTE0G9d06xlBcK3FLB3uXKaBpYUzJnOCqyX/hfKWdxhpWCkNa7 2zWuC9qdpcSUC/JtfiMnMgXIU0zOj1btpt70F6UlHR6q0qqIEQLv3ciSr212D48XQC93v3HeeE/d NQI/shd4WBEL0BYAiyFFkAi+22Su0+257wZVRKpiWlmBKmTHunYcv10lZEJUG3N2hsPKuYgK1DTr 2zvjCKT9Pu3wprhoBbxjnG5EVDYV8b1jqHCU91ttmlHawoTqB70fVeb63e+ao/O6rY6f1aeQ8vV1 abV1dXztXVxeRR6urq8HVsNWNiOZq8rV4OrzPkl9XVm5+Z1bX58mQt4fq6vHo7zVpcbDu9Wcqqea 5cjq6vFk+rV2tZq6uLYQmrq2UPkaur0u5q6sNDQkPBw0vNUBeRl6tpWasvWU6VtX19Lq6urq2eVe auZaauqtZ6q2qRq6tfm6qFjR2NjY72f2NjyrHj1Fjtd/bYuxYuBFxcWdKiYzBiUI4JCBERRiAO0n PHETSidoJSlM2GQwMl3/cdl+3VeHVtK6opJVxXI8KZkKwRGfLIyxbOzLWhkhjSzZBnJMB8HA5EOY gzEOiSGacuMM5h7iRGCMJGblzIysrz/08GkGo3p60pUInlErFYOZeHZUUK7001XoQqiHYoyynmoF MiCCIiIiNA1pgwbEjkNZm0DVywaw/PpmoaxU6SRTcOmnEimkqG4QCX9UlXKU1JCVAlKJJpNSGJUJ 9tpppTzlKSCbUp3AW3oOJIrz1JKoS+lpkEhjexyd+EyuGNtfgRJXLBSlPYylJSRULcwhSmpyVKZp CoFajbUtIJpTNNzKlJMVBP5rpCkiNO00LChFX6WukEtl47/nf7diLjR4pGELlB79ioZCCCko/53z cbocwZ5KSn60Ylt7wHlssfykxqYUxIFAJLGtxGHmSljLR8SK7EeyLnM3vcvsI8YugtZrwDrgUyyH N5CHsIBIRglMCoXuJ/F4yltqoTGT/zkE+L4vfRtx+DtkLXDdZS28uRF/+hND6mxIwSVNyf7PWqVu Rq1SrFJ2bloLI5gWqwkW8nPPBhmyg5w+d2ZrCWb+IS5A4nU4e/CXoGCFanzmO8px6xsXQtVkjcsa 0t4+GxlGNKAaaXni4eZMI10WGI4npHGIN5NMKmg4tcad5+0/IkW/dOF7QsQP2cbL0Zmq+4iYt7ci /GjxbUwv4FGkFiuedXS28tER+QlmSIpQgghLcG+1yTViQ5mbjsm8zaaBHofC/zy07zsm8zqNEPyf aYOW1f/MvKT62fyey0xyvAYHepAU9NIAgROm+OkxcqyIuhADeEFhJibHvsTcjhcVZWVlZJ7KysrK ysrlZSFk82VlrLfZWVwg8lZO0q9ZKPlLKymsZEYCysrKyspCWsrKy1+gjbKysrnZWW32llZWVl/V Ix3C+v6/r+v6/r7OL9eL9f11miOC+v6+lBTH1/XFZ1adMnTNxeTplJKI3P1nyudOm/XXy03nWX19 y17dhc/WZT3ub3u9n97Nt+8wShild5nvdu473e73cxO8m1xe9vXTr1MN1AQAYqoQSgYlZhANXA5Z Aocj5rN+w1L2+3xONBJjKUQeeOclEogGBccDzR/ORNFAkhbUFZDOBON0NerS7fxe5w/0Zv7r6O08 rr/jdJzPiOu1j8+Pa7uhtqJEKQpRUhJQbIRuddm5bQLSHL8L90triIgi7GSsGFgkGI5iSsv9cK8n Dee17IliSqiNPxu4y4UuWGTuervzi66BxtR1Ns9gI/+s3mb1qs2Z9IDX7DUIEEUdWGfzcPT6mMUr b7e4LE6lWmBjLCAYEx8VqdAnOpXHUKLGrRS4mjQVqbK1SyxEz4qrRU092hah/b4rwXwpxYlvwsEX 8BLJaHWlJb7eml05HxCpqk2a1uPly1w5/+XvGEfl/y11Z2BXixwt01tqZIc7hYa/PC4RrcCmQs2O Ehasa54rUXQ/khoWFOgppNLTi4ki4i2c9kSvdCTJnypCsLFqvNdL+JcfawCoPPzqhmxrI0pOX0XE E+fvzR/ONtGlPGS4+nCZhfIksgKO5I/i3a5MWo1FFoKSjP7J4cpzXzEiVuQiZODkYHOcgb9EYbIr 44nuZU+I4K2+binp8jT6BRT0+Yp6enylPT08li3hTiejTqbdRRTdfCopS0aiiiiilrPz6nKUh1KN Sgt1KdSmsFFOhTxsdyqaJjeGopVXCiiiknYQqimRW4VYp01MFTHiZSmpY6SslI5TtX+DRS2DbXal Kpn3al3d2qllT1dioooooapmZmXh5mFfKKKKKZnaUuVFO0opiKKcVTGdOnW032ydbt1vPEdDoc05 jJSHCOcFU/k5tWie4xYOPcV3b+L1tL2Nrk6aQ+EYrN8CsSfWNsNEiFh3lzJZpxiijk9Skl1hmxYZ vkzR2CqSYt86RqgUwu1659qRmDYxUkgFupWI6cj7tkv0q898SxVPI4yuo8F9xyMsbVn8N0U865GM nqPB6AJdJcU8o7V9IP/TCcz4V3Xe0ksUpN5UyDyj86zxqrzeU/zUXlkMrvt9Y10w9da0VmR+rdHM bHfHn7fALt7wv9Z1DSlCGH8DU7+47CwqYRxbUYBttDA32j4wTq7soUsLdAMTE8vflZsV13FUxPSp nY2R8VwidpaT2hvTtBAO7atVtbe3tbC3QIaVcJ22RyZMV61TcxdprhlCiCSw7uZldGpI1O7uxu8Q +rU7s4PKDI8HDQ4NT2zsrksTsmOx0UyPjc7p2RoY2xsWpQra2tpRbGtcwK1SpMsSixbjNDQ0JmFj d/wrSNvpgI1kbGVrTvDk9PiVvWt7U7Pze5BrY1zE4rEGxsStrE3xhv6SMahMGZvWJnJwYoFQyLWJ saEFC5M4MbuzsSDC0NDYobFrQwtjKwubK0uCWNblihtZGtrYvKkAaSORg2kYiMC7axNCNrKjaHaB TINDSxq1ysWp8QQcGZvTwLm2uqxjc2iKcWhkRdE4WN6pjSv4JY3uLkrb1rawK3NUxMrK12toaYFu D4GNU3mQAZmdkZLzg7zdLnWvdZK0oia3t7vi7LXIouOTuH3Nh+xibm1nTLcZRIJJvBt8z70pWbeN bC0Tbb5xsAzjYAhAcjWrppgAA5umw6fFuFuuVeQ1Br3aevS9chSQGJIpEbQLHkMXVHQ9faVFNasU pAAB0LYBTbAAAAnYyGwDQQ3bNgAYd8LIb/62FVttgoDXxR54ojoodRL/fvWA7CDS8ph7COfjSh4O XsJ/ZeNzmPn3fpBaiCt3PciGmm1BkJsheiMFhGDeRo947WTaprIR/CcsvZ2dnZq7Ozs3nMZvTWdn Zu1nsbOzs7Ozs7ODgtLartZ6qzs+5o+53O53NR3JDudzudzudy48HudzuTHcmO53JOD5EX4PB4ON 4PBl+DweDwG+CPm/BQdySQlPB1PB4PB4OxHmqR/glKbvxdOn3+/35yW7/fepN99Wn7/f7/f7/f76 dUYC0t9AHfN7jzPtM4FoB3nlCukWyULvud/v8Xv77EdQH4yMFlLGOzvH2dmf62l8QWGBjEZ9qgWo hstARlxalAZN8635B05KXCMSnBJvQ+Aklq3i3/mJtcFk+QsKnZ/ptuq7tUoF6grOIiMGlMS2aTkJ lV/hKORR+RE19a2uTUcF/rWRMQfIWG77RLSkY20rpPon0JME3XSEUTEStKe4DMOyAdBxDjDc08SW KXHw7acz5XC8JUEV36JLdj98gliIImf+VRYy94YK8OfBrSGL7yxMdqOD0FAhg2L0pVpSzPBlhWif +YTNKxUqOtWqAgMkdG5o5NEOrXMILFDqg1NFSkFikXLr385la1pjkzNLeguJIWSyB3rEXMlZUVt9 uN+t87ed9wV5w1hZWspEc18Ns5WQonEgQWRHIC/XBTyS+MtRWBXiU/p1pQ9M9iMoJLFF+1d7OXIS 4Dv3aZGz96btOQau4as3bNjWuNTIjgLvaSXpFMjzjfyxXsYKUK7kLkDFi7YUZaycK0wWwy7XrPPk rIyJFsJWhC6A8E6IuAluMCWtG3l0urWct2sSifVGrA5XRucXhEeCRlT7yO0MuKmU/gwsvkI8A7UV +uTVPs2yO30LjYxWxZlIVQT1Fx/osIaQ+khZDrPLxG2/Xbb3/tN+x8LftNttt/tb4Xs27bfHb9Vv 3t+23WNt4fuN/V8zfHwvouG29w23w27dttttttvDt+n1I9uZyOFmX7bbbbcK3LNttyjbvt9LFjWz oaIiZSgkbyy7UZWUdTdVNi8n8VudbvrZu/bwLTEp3tl27+uzsKxbxO02S23gN4r5ttXAt22z2+rV U/VourvIpXiNMhH7PiKKtEGqiMoIfb+kBj/cxIByIXsh+CauRi9Py6dLmSMqaqdEK4H7kZY8Dzqe 9TL9sq9lNl7ZxmDAmZOCIiy5F9eJeQesL5zoajVhXP+uja2zCONlIXelobGu2w11mXtGtEdULT3N kWY48cu2Ca/7z/mSWhPvF6p65CuevP1xRthG9khVTSAZzB05Qr3aukYsXUl7K7bH4ZC3g5XdnNf2 q7APHSe0a20rwQt7OPI/POpHirRn806au7yNKuLwOH8UfG4PHnI6S75GlRHJiZHpij8JO5f9a+oU 1l/6VuZ03UiM2Xg4MuJC6u9NecLqvuevEQtaRwnkNfmWpEINvH8zYo/n2GvKFG4k9Tcrnm+Vb8lv c7NpppqMaaa6TTTU9PNNcqLaaaa57TXRaaaamIlpprcNNbhpppppq2taZppppquh49ppppngwzLL MZBMssssss9Jllmk6TLLNFBR2TEX9YzVUrLN7W5VziMzE7kMs4zM8zfVjLLN4y8Zu2WLFjFYPxWG GGMJhhg3Nt0cnKYYpqurt1WpiYw3V6vV4lpSZ90DigFMGU4wHtRAY8tEgdJnT7hb/LpgZ/L8hPao Vr4DdD0Dzy3PjE6LGXUFy2B6mUTe1L6D7yKO6elFHDEKp9I428jpDJbw0uvKQdw8YbYLutpa+gsU KcjzCNrI+E5PkMnLWxf+u7S/YV1P/iFeBawKx8FyPbFoPp3KS0xF6I3US2sW1GURhSM6KO/PAQr+ RyJcMfx0tASq0SUcUQsJTajdzVMZnJXncmo4ktCy0LUWRXHpWLjbSIjxBKNSEvaKCI/oig3wwJyZ HOCwpguHpyXYHwe09j1B7yRrBzZCnKBWhFy3BxHte247zaGt5gXTr3dFKC0f/3jWPLT6kj+nyk00 00/0Jppp8NNNNP3E+emn6qdAmmmnPpppppppppx9KmmnWyifHTTTT4adbGJp9Hsp3afETkE+qnGJ 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 lUXuGXMoW0GVGB7o+reEOINfWCeS0jpH8C2HZXEx34tWOj1lqeZrhCymGEabrX0Qv+C864NVSpik 0pSaNC33r77RPIfY/hFu5G5+01hBW2qvSisvYaZtWafKU2vMFakfCKmJPdnSNKJbkRFBHymLxjw+ ia/cVv9zuRuNg1s4vCLCDWycSJPqBSOfGJBkzbDZRTERcxdQWYuAJjiRRvFDj9hcnVdGytbv/Tji L28vLkpZDWeklc/YaVoVwujF0JSPJI9jpk7iXATujVsRI7cUbIbSZwichSOjFDEqCPYNrIvZN+R1 3bnxXUT0tk6sIGA8zsbJ06/bAwEQuuuvxPjXXh15FfsLUkostCrLLLS61PIQ1Ut8i27p1uosssss sst0+itVLLLLLLdCr5UItyuhKrLdOoWW6Kyyyyy0cste85ZZbrrS6yy1hBxC0vHLLW2VTLXedKLW UvJrYtUs8WWWzbpasn1nmfl3lgtvKna9Cpm9fU1PFqKioqKjfa7kVG/qOHUUyZIKrbVUYLSPCdMY zAyHCFUd9If8SJCOIzmyeWKRlE0EmdOLv+RyPjuOhr8lh1xhWrj+2SOLInXbHH9kExJS+tHvbzt2 q93fWv/rrb0M//p5UnVnru8YONQswgB2mmvlz7Sz24/1/PgbZ+WgppWWtNaZFiLbvCa+TfnTik1u vovAC1EikK38rtZaIhKqeCfUrdOSkmpleEm4qwl9SUsRC1JqbXISavW9U5avk146lcIsE+I/l2W5 OwQtngrpRY1KqrvUKBt3tJ4UtUR+J3R/8fUZwSsVzaa+sx5gSFuhwW9NcGb6XIhXo6MWrbI+6FwZ HiizpC+8X3ittifkkL5zB8X88ktlO4PLIWsao1+IsR470PCOFGLElY7E/o/h/efKK4hxLfN+hK8C rkLMi1QhyARgPiRkhA2eL6EPfjj8HhHC4xDeNNjY2NjYt9jYvtjd7GR0NjYzP1aurQaurq6urq6u 41dXV1dXVoqfV1dXV2+rq6urq9XV1d3q3Orqx2rq6ur3d9v+r3e73e71+73Zfjd3uvOr3e73cDu9 13d92dlaCiv4OHxcLE7vdpSrqm7mD3Qd3u1/dsZbB7sv3e73bfu0tZcampqJampU6Pa1NTU1NRvQ Fqaj/U1LbS7iS77U1Nn+n/rcd7vb117zqBgGoFZW6BBnVx5RZcwkyVhsEUCGQLfbHHJ9rr97uuf7 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 0AAf3W3S2bB2Oo2aWa73QuFqZk3sYXNo0zNQ63W5aTe2uw+m0v8G+eX0S/L70g+K/W8t97nJOT3D zqE/+zZmA+kEUrRl+qfY6bO/2xgCgeB0rAGOFB7SwieMnIxgQSSUD5YBh33eu3FgKVaZgMYxsF5m DHeVJdKoAAakgAAJimx1w9yrYVslJ2ix2iH5uH76n8cvf+UPTzmLsYNN31EduF/YiOE8U2j5WZ6r jn4Pc6eegOGsuHcYTqmb+Q2ZmNBxZ5x46nR6KNiWp+Zb0ntJeOgZ71MFZNsBqpNu6+hYuprnTIX/ KWFhYWFhYKoWEsLCwsLCwsL7mLCwmXOw0F5a3Sw07q96Owj7CwictYWFfX67PXOvr6+vr4nQbCvv e7r5LTl+fyujW6c9pxmnp6enpxmnp6enp6enj6enp6enp6ZWnpx05HPNPTkJyhDpl6b2709PTlqz PxtOf09HBK0zXdvp2dlp2dtp6aOndaen3NO9tbww16Snp6fb03NP4qkzbUURYcjqgADwAcGrkNXf T93EcSmneixYxhkOHgre9zir+eOx2memEvh8A8vS9/np76uSUFj9vXZhKLsXmmsTgqyA6bJKvdDl rQEI1LWtgGGiEIQABMrBuuEQbr2o58MaB+rQDcz/X7ectJ2JmKHc4wYwhnEzrg4iF4UAycdYgESN GhlA2StIIn66HFMgy8Ox3VFQGWssfK1bRNb8vFka9lyYg4r3A/Rft/vbthXmJZ+Bd764Yp3sUwWx LXa/6ekMp1ut3VJlH+9V0Ci+sNwUqIic3vh/y1Gd/paWlpaXj6WlpaWlpfHpaWlpehpfDGaWk/f9 Lev379+/fv379+/3O+4j9/O8d+/379/u379+/fv7Ovfv379+/f092/fwVw/f1L9+/fv379+/o379 /Nv4aKmqd+/u3+Vn58c/7bt+/fv7Z/kv37+mfv39A/f3T+oyc5+/f3T9+/wn+G/f5b9/XT29rq6t 2vD6XQ7wiOiOiEQcHBxFWJhYUdh7xG2xPRiiAIccKUbcYD+Fv3NRcEajtHdnJkHwV3vpsFi/ea4n 261m69kn4vwt91Tmt1MzobT2fZmDI4nGxtO9RChL6W1yl0gWilgUIgkS7Ih+843i3NKcZlyFKIE9 rCRmzLImMEbK6+NJJqQ5oprxVK6RYuistLUoSU8KhXy5iUoWxK98vZe2kUmNe2A1aBjS7gBjWkgY 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 mLgSg6+iAxFhLLkDDmbLBweOn6Xuul+OBfdvSABnCgGCsNo+a4D3D/MTiaYzRZdVaFeKErNuYapa ra08Y2JUBGeLZ6ZF7TYvg63t1CavWniNrybVFt/WVqJp27bExvTCwZvhbkSIRtZdXJy/jQPl7d1w 3vi/q9bh7ur/9Mp7fcxbLLLLLMQyyz+plllnesss0jNCyz+tllndMyDMgyzB8ahZZZZZ3lcyzbMs sss9hlnq8lllnqsssssxTDDDGKwwwwwwwwwxKMdfAYYwKqQjc6KjGMm1vSMuZoGM12SxbyhFPNMU 2NQWVuxgsW2EwximXTDDDFqUwwdcMPWGGMo9hhhhj4Y2pYffPuT3TrfbyZwHWCyxhOsgh06dQDp0 6hVt7K2OhZSXe0Oke0Lij3vMfAnWVmqf5uqKN4Mn+zuZCxZqNz4txs0OH4Kq8ZhsmP1WKBnLPBd7 C4PAqpwAU5jmAbXkEOiPLPgVYBBvSwk7Ffc6w+75Tptz7DPd6w+qlU1/YLrnZvRGcDW9y9h+QDMA RX7yIQnNw2PVijqZyVFg03uA7NdkBeI/4USjmYbCxA3F1cO/1nO5SGysmlINrBUep7uWX9d1tLT8 bFm4YXae7N6GSi7pgpiPdYeqwNUru7Qpqm2qqoiqYqqqh6qqqphdddfz111+auuvNLr9dddekXXX XX5tFWrr7hdedXol198uvzV+ivNr2y6666666668IuuuuvZr2y9svDQ0VbxMpKr3q+XV4K6+dd5K 68svWr2y2AstTLX9OssstoLGrXa14stiLWayywFrbHWWWWWxfhjalZb591mL+x/TKgHTp1AGMbga rp8S43/nwNv8rXKbbD4hDv/Bg8G9gnpsn2efHxp+70NHRiGrNncmWf0FQy+lv63P/J7zyn3eZ1c6 fGo+ZzTmTdB3UXEjwhuYQ4B1YOFCA5cN0AcB75N+TAGlrcaugqnI5Abge+166w16+X5nz/AawO+y cAbiaUjhRyEuePn87rTYiaDhH9GvMbztJhqaqgx7mssAIO+NfU5Fv7G46K3ZXZRags+GRbnqpxTc bw5g4MYxjKRk0GrKePB9ZmtTH/UoYAD+ufMeB24V0kVM/M7RB5g2HKxMkkbTpulZVt5htAWXZcTt +VT+mG347LLLLO0ZZ3ccyyyyz7bM0zQ+qz83J89lmRZZZZZZZZYYYYoGN1wGGLRhjpS1qwxER7DD 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 k/li8ZGNKiPaFA/olmJ8hyZjvkilD2Qt12vASIpozFyXpSVMIehzYgUMlnLbu7rC9jvsnlqNFeUa 7qUn68zZrEzCyW1UyaG/2njxPO/Tdfb9XJ/9udiX/YHHccc9zy/Jbbb9Rttttttvm01W22235zcK 3Syzco222222222223x2222222+w238+HDWDdY23zOS223Xtt8pu1tG7RuzbuYa3kG27vPbbk4mj jZDuTbbbZdpLttgbbm25SnbwW7u8q8OybbwQvcW4evLutxMAptvObP0G2xtt9xttvPbb+Gpb2263 PyOCP0f83n6DHTrhcLFdOt3/3u/U8347TBqcbQN+KtFF+3L2f1daDc43hRrW1cKhu1hrPO10+Mpr irytyc0PKthpl7YwLjRarufGT38TJcHIxHS+mfu0cy+MwEv4wYzpdlLhdox3EE2OdhuORuH/g+7u XaH998koL21754qUeMj622dMTtv1Nsr+ELZPeXxNf/HoS5vnw8r+hOCofgNTT6Xle+n5P6U00004 NPbp8lOPmuen6SfnJ7tNNNNOY5qafGT46acSmmmmmmno6Ojo6NTo6Ojo1knzaGnl9HRod73vfm9N ve9+Rve973vf2t76v9v8P7e9+tvvPr73v0e933P2d9zx48fT+vx4joKSorRjGdYEVI8bFy8Ud9mZ 4xjGMWSSO8G9F8NSPbJpmf+fH9Dru0fBdTEveMR9oC5xs3C+3/MR/sYwMEbtqDx3T5/Lw/8nHoln p4qd1luF3mPX50fj2p+R4HDwXmiBjNot79/74aa0Rf14m07ioYLE2dl1+Sll7xhm1ppMbDUOkyOP 7dN6fkOlaI3qBk5Dxtf1/rXer6/KN9zsNKezCdCkiLc2/R6gvz/apP2OFnaC06xm4FXb5arn4u/V dW1SdXVqoCrq4VhhhjpcXleh7k38LDDH7GGN0x7rDEMuv1l111119/SLrrr1sbKbtfnr1MyvvV6h ddddeMXXXXtV117lddddde+66666669/DLyMTTrUy3av7isWzranWtJbOu8pac7Syyyy0+ssssst irZiy2UstdrLLXqy2Es8WxsxZYPxVK23X3joCrOeMIQiDUfyy+AxB5R+5blLVv/ef3MHN3/D3k3c 7WDAV0nw1M4KnHfLsuzjsJFQOE98Tf5P/eWeuYFujVQVA/RnYaIP/re2rGnT4HJznS9ieKz/q0/y ZL/3LP1NY0kpqOr/t+t/HXzKnOIMvm7KQen2uMbsqvRZbfPf6zlD1+Ku3+vTwKOUK9ylh4cOZJQO k7pv2c7qq6NTuDfUVVV50F5PR9NVVXpq/rVVVUm1Nwop+uH9RRRRRRSjU26iim6UUU3SkPHqKKKQ tYpy1OwopGWKlJETyiiiiinVuFJxRRRRS6i1L9RRRRSKUiLmdiaaUrFFKJSPUyqOeUUUlFLBRRRT GUUd06natVFK1RRRRRQ49TNUUUUuMdNMlNM/Dx/hqU9t/L57LddSOWzVldr73C4bo6Aw4H0azxf7 aL838bTBe/694Plf38mUQ3rIDH6Be4RLdstLm1Vgnq9s3T3XgTBYRiCaLMAlkUFYvz6gnMbhqEOt yZ6iT7Op9vxR0OJYxFZ3kLjJkuWxKKLGyYnNJPDcXeGmPIzJjfZZiVeMSOOI9C9kd/Ttk/jj33r7 thOl9qEq/GIEREUNu0RK622oZgJtoNRYpHzjf3RdPM0UhK6Dk/M+FrXR/1/sP4+te/6zWta1+lrt Or1+tr83XK1rX6eta102tfP1ytfB1774mta14eui1r4eta1rs/B1rXPeFrWtdvyNa13Wvqa1rWta 1rXj9p5/K7Tsus13Xa/c8DXp+F2eteLrufG15eta1rWta/a197Xqa1rX3da1r72ta/yPta1rWv3K HjUKD9obVaPxDxRjIUe95tHHJRvyAy8d9QwBzg1Xx9L+1fHHIACxfIfs+gOXZcE6kSUfyGn5pTDj JnXqdE9xSgB8PuFu7Ku/OtuPVuNwefZMUbWhpN63em9sE5y3K+VduuDnnOFGCX4n5xFjhbxQQ+c0 bHtR6cu5gGNxN1suQ0TXu9D9xmjKeoxmgtVeGS28p59ExFuGA9F84e8917zbW4CC5FD0s1LNzBQ0 LLQxFCpoaGhoaGhuj0/3WMkqF79x7873z3r176j1713vwbx69m+E9evXr354LjPRCFOCEIQumKFE LnQQhdkQhCEIQhRYhCjhCEIUuIUNJw0RGYtRhRdfK0AqXGFaCFQXlmLFwRW4hCEKzqBWfcEIVXYi zxCFfiEIVmIWdlFiAITz4akW2u/q3L3B//b917XD2Wh5/8EBxarlz7/QxubyoQfrBVr6tzubwvta 3JSrhLf1JvWOygUWZAMrGGg/Y93c58bEw4lZGJx6INwLRjf99FiNPxM3883wt9yJhTga14wma6TL U5C53+jd8oqlvUjrdxVsNx6Pm8wHi5gAA6YAeUAHt/CAAPcAAAOfEfEAAPOAAAAAB7Rxxx0UcdwT jjjpDbTZxxxxx0RHnHdE7oxpxxxx0L1DjoY444444446COOhzjrarOOhzjqubOjzq6YOmqrBOsDj pU46qOOOoqg446wuMq9OOOuMY44469OOub/POy7w6e409Pcae3U8/6Geg4oDo7h1jEVtR6F3TSQD vvH9GCrshvAmnGH6Ennrdmcn2F/WnHB5erAwKLJoL6FsqrDsWsS7HuO9374cgs2/0MAGGCFmFL0j DoAxjgWXpipSi5YvwIXsKnOf6oXq4ylaIt+Gq6SvxToj+Uo9yGqijxFl2gBuvLGDBIYjABVGfQzh 3IOGskgqDPGlZ/e6PPcdHVq/njrP+/2qt+uUjH4/WZTRTX/ZFyDim0vNt0lTaCPmNGfMYIhEYJ1e vU/+5N7WVgzjZkm8QkcfoZkQeah4HxoDxdk62Wr51hV+X407udluvUXXXXXXXXXXXXXXWhJ7a/J6 i3YWWWWjVluessssssstw1lllllqxZapWWWWWWWhqCUWW7Kyyyyyy08tGLSSy3R6KsiqqqrM9hVX rxs5jTcgrIyc5PyiqterRSkrM5qqquIrkz6qqtdQq0RCquEqqqqqqroXVySqqTb5Q1Rqqnbj3fev /+Ed1vGGH0/7ff8ST/b3aP8/r1dIt5dlDfidSzrpfnPiMv06CLSOMPqZe37LzeqfxCWVjOVM2VIp Yu3/G711f0nfRx+dAsfI5GtIsz6tL5bbXcXOYP9s+dxXp17FgI/BXx4PeYt2Ir146723qtvdZrsM z9SzK2dnNS96zDNsJO9WZW62fT56pV7vQh1vlm7WmDHcY/RNGCh0uws9JnUdH49y4UPhWZ7z9RD4 DZpVri5FhYykpIu2bBo+F82GN8R25a6bCifGS2J3NqzpW7ZOTsifVpwXkbBhPxoLnpGtUqYzmQBb FNE6bxp+qo3zZcXm+W6WXHG99R1fATVsC7D8n6/l0p9dnzp1m4OOEFQfWUEUweDmMPfmU6e1pPUh hVB+2fybx0CF8PlUx0XkWma2lpSCELBl4YTE+KdjFetPN43kRl/ti0a1ScQhAbMgLVx8xcFnF3Gg VWuOVY66OksiGDU/uKrPdq3ri4H1638TrzKqB1utsvy+N6xYOxr0q1Xg+Xra2tud3dc7W1tad5UL 0Za+l9bM1taNqZfN1tbW1vm1tYnmcLW1tbW1vet9Y3W1tame62trdbWL1tZDua3ThtaN4fYg07DW rQXt3rdutwLOY1sV31rfW1tYVlEREPH0NlW0VPnSNtTzWtQ3FNpadTrWOJMa1YfraWQRnvn+tgK6 1gtjZ2r3NbWxMHB1n+sVra1v2y/39z6XNdN3+jewF56m4deDf7/z491uqb/v6PhYz3/+0XTx/qki qrKFz+QxpAYDMUrfisZ6bmWS748PMyWB2/GtFv6o5sthf6lKOGtFtddpq8Zg5bx9PSveY4c9+JKs Xpb5qcRUymYwv2pmDyWm7f640azp124gOyqAvOEpjAJ+9zrBhSANJ/t3Z3X9vI8NIrpQdXbTRT7g fz/jsTXcbr/+/zr2QTrtMz7UxpZuRNZ0Qflf1ubPFbmA5Jlrg2ZybqGtE2JrwPXoKSMnIKUFAIwA 7TBu2IHKLzYT6fgjs6G/aXQZgxhr8druPf4u0pta1fLN/nkR/TWWjVmMLDvovCTl5fT+XmceTxyz M87eV/LosroGbYw+ocNSpr6/VV9fX19fX4fT6mnp0Onp6enp6f7PSn9PTv9PT04im09PT92p+HTl tPT5N7K1HEpNvv951dLn6V3pYMdjVXAu8DSwpDl9nS0tLS5+lpaVrpaWBpaVnjaUFK6UGbL2cfpa RJ+VFSTukotLS0pTSptLSmZqpeaWkkGxModHHstI3SN0qrSzV71ex0tK90tK90jdIWl3NxZQO4yN Mz8/5/zsUZHJz1Y5bZHx99S/h5po1jjLHft1hQrHvD/Lc9H/ZtjdcKvmkaPPXZCvcDGNkLV87F9e ZpN0ACA6UExXdEwDIyTPlYklzuf5RGfEJcqFgqOdCNQULJYBFHRqMG52jC74EBvsJJGDOi5tYdhv 2ED5X1TRe/UoE4IJQFt4gv+lbXCso6UrgvrhbtFT7js7ghD7z9+tgwuEfXrU3/N2qIhtTKazgfZ/ a/8zlnC8+LdOuRQ3H+/4o3kf1/qFJ/9fQMYx7MY/fGP9YxjGMYxjGMYxj+Ee7GNJJJJLipJJTqSS SSVrSykwkluKLdpc3k8aqS4dFZpJcpLjJJJJJJJQaSSSSSSSSSXZSzMCqtJeLSSjkrCUSqsCmSqU r5JJLDpadKorbdJJK3SISSsUrl5VJASxcLMvxPLgWKldYpKRSSW43EdADS/H/80N9AYOX4kD5C3+ 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 hVoVaVShaFWhVoVaUGhKFWhVoVaVGhoVaFWhVpRaKFWhVoVaFWJFaFWhVoVaCkFoVaFWhVoCkRoV aFWhVoGkBoVaFWhVoApFKFWhVoVaBKQShVoVaFWgGkQoVaFWhVoFpAKFWhVoVaACkWhVoVaFWgQp BoVaFWhVoBKRKFWhVoVaBSkChVoVaFWgBpGhVoVaFWgRpChVoVaFWgFpKFWhVoVaBWqFWhVoVaFW qBWhVoVaFWkoBaFWhVoVaQoEaFWhVoVaRoAaFWhVoVaQKBShVoVaFWkSgEoVaFWhVpBoEKFWhVoV aRaAChVoVaFWkAoFoVaFWhVpEKAaFWhVoVaQSgShVoVaFWkUoAoVaFWhVpAaBoVaFWhVpEaAoVaF WhVpBaChVoVaFWkViFWhVoVaFWilFoVaFWhVoaVGhVoVaFWhKUGhVoVaFWhaVShVoVaFWhDpJRMQ q0KtCrQpSoUKtCrQq0I0oFCrQq0KtCtKtCrQq0KtCBSjQq0KtCrQoUqUKtCrQq0IlKFCrQq0KtCp StCrQq0KtCDSlCrQq0KtCjS0KtCrQq0ItNCrQq0KtCrQq0KtCrQq00ItCrQq0KtLQo0KtCrQq0pQ g0KtCrQq0rQqUKtCrQq0oUIlCrQq0KtKlChQq0KtCrSjQgUKtCrQq0q0K0KtCrQq0oFCNCrQq0Kt KhQpQq0KtCrSiUIUKtCrQq0qlC0KtCrQq0oNCUKtCrQq0qNDQq0KtCrSi0UKtCrQq0KsSK0KtCrQ q0FILQq0KtCrQFIjQq0KtCrQNIDQq0KtCrQBSKUKtCrQq0CUglCrQq0KtANIhQq0KtCrQLSAUKtC rQq0AFItCrQq0KtAhSDQq0KtCrQCUiUKtCrQq0ClIFCrQq0KtADSNCrQq0KtAjSFCrQq0KtALSUK tCrQq0CtUKtCrQq0KtUCtCrQq0KtJQC0KtCrQq0hQI0KtCrQq0jQA0KtCrQq0gUClCrQq0KtIlAJ Qq0KtCrSDQIUKtCrQq0i0AFCrQq0KtIBQLQq0KtCrSIUA0KtCrQq0glAlCrQq0KtIpQBQq0KtCrS A0DQq0KtCrSI0BQq0KtCrSC0FCrQq0KtIrEKtCrQq0KtFKLQq0KtCrQ0qNCrQq0KtCUoNCrQq0Kt C0pjAiMY0x8mgy4QBzC5Q1W73DMXT8s/cwUh67vIeSO7D44KjD5yke5AfEzd6JgDLxF3inf1kzxK dKGlqKQt+qbgiUTw6F4EkrpAQtPSNdzeg7iOy+MamhxZxOXgjVdVT5+bcfCaWABJdSLQwmvIRCVn 6slPIp16bT1RxYbop1IWPSuUrIpppeXCpUa3S0J1mzz5GWZNENBTNILWjtNXQN6E14Eh/T6Dltr/ 32zWWI0gqgl6fZtXNEdltT10i4kLgBbnzlI+u0m6y64XsJ+g6TMdHvUiRJut3vd4wb1IkSIoqO/2 mDv6KSyaIGI6Oj8yrM3pNhJWQ93ISNsFGVlZWVlZWVjLLLP1MMMTu9/axQMMMb9jf1zDDG6omGGO Awwwx77DFixasfTwuNwuTxeRxvp4/J5LFqxTMMclhhhhhhhdejXXXXXXXXXXXkna8FL48bL5cwuv F1GVVLrzEvTLr5mRirrr5i9QuuvalLr1IF11+1brvsjFtSDr1fOXLXeEodxbG/0/uwN7vTg3V6vP bkprLjzav0RXOR92Q9amarBgLvKx9I/J+/0d6/OTLPJgxlKT22XPjt/UFRaZwoQHcGAYBF1j12JV IGVkHWeSJATjyzLjLn16XJiBMLRa/OrbTJE1qJ5pudZz6RjjtK6MTSILsVLjhfXpe21tAMDVBGAr TEYNQAajGDfl6FexLY/Ix6a1QSW47nCEsNMrlUWErlEqc1iRh1SS0VbMyg0NEJE2ZJNE6yFXAFpc du3N/Z4fR4XS3Lam+pkcIAzEYALHdgMAX8vL9tEthEYrTdGdYvTTY2P4DksGT2NHoHGBWNH5/tTi X7+bHZZajukSstH31GRYup/epZdCSnR4mwlkLSF1ZWVjjWVlY04N/rMhWVlZWQVZWYSsrGWWWWWW WWWWWWWeCzPssss1rPSZZZZZtaBllngssss8zmwrLLLLLOCyzcMs1TLMFGs5EEyyyyyzBSVlcxEI zFsys5OYFsyzS57LNN2qBlllllllilwqi2rGGGLI9g5izzMTLYYywIMMMMMDfZTGQzfut5AIutkn wtL78cuDwc/fyfXEQq1/7ceVZO7/tnm2en1XLvSzRcGypsZ6c+F3/dBo32ojLn4Ho9f4NZF0ubor GYg/9/HZbXj2ozrpq7n4/GAIowZiBqkIGO2GYKOqM5rbyEoBeQyZC0AVwRARIBtIAxxeW5EAAwSA fSQQBu2wAyu9KcxH6aQw1ef8+TY9avXTb3NP1lcM0x28rTd4xYPHwtU0359KcgtbmvX/zZAQWU62 G0G8aHSlG/DVW1xV1dh65+/4r9+/fxj/8r/4X79+/fv379+/3T/4n79+/fv37+Nfv95LOOOOOR7n Scc+dzcXHWc57jjjjjl7EuOOOdNyCcccccclXHHHMlxxyDlbCKcxZtzOi7ZxztOOO8FxyoccrnHH HJygctXHMeyv81y7ccc7WO5hvnHHHHHHLjAcPcc5fAxXUJXb1DOxuQ0Vs8WsuAz/TtUbFdpp4rAY QuziV0hGulDRhIQMRfNoENj+dJJn8OFyd3aD5WN/uB4kYrb2ThIPWlumddIi1JmYixbh3uYYgS2z Mmvaca/ZZe1/+imP535UNHZfWWhNBmoaswikeBnldn4WjPpgLjcLU4teWleG5vUHb8Ytbm2F3EDh LTzOZzOY7du+W7d+b1Hbt27du3buGd7x27+GI9J27+Z275jt27du3fZlHbvbu/mdu3bt3y3cg7du 4KPd7/pu3bt3GO3bt303bvpO3bt27d9V3BO3ehoRVXFTkPoTE1cStjMaElW6FRoU2hoW+hoXV7oT WhoaGhe6Ghc6GhZaGhhaGhoYGhf6FxoZmPoXehg4mPd3u4vHbtiz10+tG4VWD/nHVNUZt/7w0zFN 0ZJYaF3sf6GoWuDiEnExdu8FKBZ/9Dd9lWJohvj/Sk4fD7Sy1TzrnuXGLpb/NS2rtT40z1Y9T+3f /1/+j7J2AMPh9MfCMbsJUAHMMQV2QUGACISG1tCML2R2b5pduiNXL4NWIQXoKzje3LVt+D/HJ8me 3fyt0LumH/rZO/C8/x6v7IH1c9RSIaiqbbffo6PK5UNo6Ojo6IxjGP2/2+kMYx+lOD9IY9uMYxj3 +2guwMe1GOg5Y4wYxjHzh8kY6yiq+rUjGMYxjGO6SSSSg0kkkplJJJJKwSSjOyliQqUMlSpUWElW YuEkkleJJJVdPmJZCWFWWVulcJEdvNSSSS7V7d4JaSRqSWKQkkklipSloo6S3jrewKqijyB/Xq/Y UEe0dbny+N4jrI/Jsslralw1/Bp1Rr6omy5mZgA3d3Wb/Tv/fytvob0dWtkigGMP3dOj0Dn7+5mL si0/t7LLzVIWGUmi7Y7ztqs87i9s4rtSr+tg/9GktvFhTEfpPf9rvNKbfrLy/uHS3djsVCJjgGBE DZ7KVetxyQUVw1PaU+njHkSBGGxJ8djjWkA6JTgEOK4IC/EY1uJuLV9W4cgf6viZPX6WPtW9vLJM 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 SXCSSSpUoaKqUkqWvikkkkodLsJJWCSSVwklQQyUKlWw8UlF2qVAlSyNrQV1FOTCSV3LzSU2kiij mI4GRkZyKKKNKjlIo4KKNqjbooo390iiiiiiQYj6MuiYlX7/L/TspPD0dMHjes68p1KOt+6/sdQ7 roeHkWD7afpndHbqzwpeIZnsDsOD+26sWWixFZ7+hleewDXwM60aqfL4QOp0qm0rF+Am9h9Y+TbN hhc988aF3xzt32zRtPSmd9VS49tYFsLtcnDcBd87Qn5uzyPkR3ntv9s++zcP60VvBNvXpJCfSoZL JSSS26SSSX7UkkvpSSSSjkkkkkkvm+ZJJJJJKO7CXF287z+PveZ7vA6qKPzIowUxQo8ZFFHpI8RG IRRRhuQiijEIozcEiiiiiijXIowaKKKMNGoxiMmijL0U1bIooozklKIooo4KKKKKKKKPcsUUUaW2 7aKKNiiijfFooooo0fFo6Ojo99xW3JdLwWEbgjL+ihc0X+geu1eV1TFs4fhEC/DsDgh2t7aqYh5W RoeD8wrBHTKUeRgfZV5Wx0U91WvuPXLT+BbCXs4z8D1YbF53qt0Kv8ivuRXZ2ErK4XaQ99hvJCNP vXPV7Rtnl1rL0f5l9Cq5fRutxhupy9p9PZ13OA1atn/O7k2Niyec+Hi1v4VSUTDzXp/RAR+KP9Ix jGMYxj88Y/bGMYxjSSSSSSiUuOkklzkkqCjjEvpS93f8hJL5kkko7bJJJJViSSXJS5CXFS5aSSVk lTpJTtalFJJJIo9lFFFGEk6CaRRRRpEUZK1RRqcVFGURqUUc1FFFFFF5oWl1dIo0qKKKKN0iWT28 xFG7R4vA3k9yqLmdFsyNFiDUtLStGVSabRO0jactZhtCQeMdAJPZ2pSTGstmzqo7wyadis4/35SB pbjjXji8/EVSxZUrJJ4aPD1Y1v6SuzaPhY7pzsdbmTjVzzu0PFLJRd4h1+CY9x+breQXib6JWIox p/4XGCX8CyBSQHvDK/HPiRZ7ffPnz/z9P6/r8f7Hh93l8P4n4OHDhw4Xd30d+xu7vnPZ3fK+FfX3 d3d+yu7u+57u+l6K/adDd37bmru7voO5u7u76Lk93d618vXe61rWtcnWteFrXWa1rteq7HXea1rX p/T7zXia1rX2tdx+16uvoa19bWta19D8WteZryNa19b+b+7rX49aoaGhoejQ0O+oedQ0LZkeFD3S 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 eXsHDvm/mddNa/YbGb2U5s53abWen6DbUNFt6PcUlL9NNT7ndVG73lTVb2r31ZW12/kcCwseDZfV Z2lrwra3uLm6u7y9g4IAAAAAACr/QAAAAAAAAAVYAAAAAAAAAKuDAAAAAAAAAFXBgAAAAAAAABVg AAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAAC rAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAA ACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAA AAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAA AAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAA AAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAAAiEAAAAAAAAAAAAAAAAAAAiIQ AAAAAAAAAAAAAAAAAACIhAAAAAAAAAAAAAAAAAAAIiEAAAAAAAAAAAAAAAAAAAiIAAAAAAAAACrA AAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAC rAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAA AFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAA AAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAA AAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAA AAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVg AAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAAC rAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAA ACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKwAAAAAAAAAVYAAAAAA AAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAA AAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAA AAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVg AAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAAC rAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAA ACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAA AAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAA AAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAA AAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqw AAAAAAAAAVYAAAAAAAAAKwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAAC rAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAA ACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAA AAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAA AAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAA AAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqw AAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAAB VgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAA ACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAA AAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKwAAAAAAAAAVYAAAA AAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAA AAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqw AAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAAB VgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAA ACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAA AAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAA AAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAA AAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVY AAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAIiIiIiIiEAAAAAAAAAAAAAAA AAAAiIQAAAAAAAAAAAAAAAAAACIhAAAAAAAAAAAAAAAAAAAIiEAAAAAAAAAAAAAAAADgcDgcDgcD gAAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAA AAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAA AAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAA AAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAA AAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFW AAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAA KsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAA AAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAA AAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAArAAAA AAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAA AAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFW AAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAA KsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAA AAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAA AAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAA AAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgA AAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACr AAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAA FWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAArAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAA AAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAA AAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAA AAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgA AAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACr AAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAA FWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAA AAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAA AAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAA AAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAArAA AAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACr AAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAA FWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAA AAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAA AAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAA AAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgA AAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABV gAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAA CrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAIiIiIiIiIiIi IiIQAAAAAAAAAAAAAAAAAACIhAAAAAAAAAAAAAAAAAAAIiEAAAAAAAAAAAAAAAAAAAiIQAAAAAAA AAAAAAAAAAACIiIiIiIiIiIiIiIiIiIiIgAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAA AAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrA AAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAF WAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAA AKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAA AAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAA AAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAA AAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVg AAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAC rAAAAAAAAABVgAAAAAAAAArAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAA AKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAA AAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAA AAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAA AAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVg AAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAC rAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAA AFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAA AAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAA AAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAArAAAAAAAAABVgAA AAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVg AAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAC rAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAA AFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAA AAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAA AAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAA AAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVg AAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAADguE9O4VwjhH qyerJ6snqyerJ6snqyerJ5ZPs9JPVk9WT1ZPVk9WT1ZPVk9WT1ZPVk9WT1ZPVk9WT1SerJ6snqye rJ6snqyerJ6snqyerJ6snqyerJ6snqyeqT1ZPVk9WT1ZPVk9WT1ZPVk9WT1ZPVk9WT1ZPVk9WT1S erJ6snqyerJ6snqyerJ6snqyerJ6snqyerJ5ZPKSfI2T5KyeWTyyeWTyyeWTyyeWTyyeWTyyeWTy yeUnlk8snlk8snlk8snlk8snlk8snlk8snlk8snlk8pPLJ5ZPLJ5ZPLJ5ZPLJ5ZPLJ5ZPLJ5ZPLJ 5ZPLJ5SeWTyyeWTyyeWTyyeWTyyeWTyyeWTyyeWTyyeUk+RsnyVk8snlk8snlk8snlk8snlk8snl k8snlk8pPLJ5ZPLJ5ZPLJ5ZPLJ5ZPLJ5ZPLJ5ZPLJ5ZPLJ5SeWTyyeWTyyeWTyyeWTyyeWTyyeWT yyeWTyz/9CEIBIE/9SSBJAIGAk+x+7PSmE+/Q5jC/i3Erh+dps7if0VGgxX6qrR4v+FZpMb1kjTZ DA2Py5PB/V83qdvwpn18NsPZxF5OyvilBnvI6zb6HGYGl0fm9lT/Dke2qPiku7qdRJ9/V6qU8Ot1 uY8aRMyvk2GwzuOspzQefaUd/f29FLyd1SafLXtPqs1jKjW5xqtd7mS32x97066clsrI2kvl6+f0 2asaHU5yyo9Zn7OlmNFa081LW1RN6W4qZ3UXVXP6u7raKYvZFJrywp5y+st3PX9pvaKa4VZSbK3r qbaXEjdUFzX7zb3VjvaW7sqzc3lnv95e2tfVxbcGuLizr5Fza8Hh3dvaX17dW6Xt3f33DIVb9VVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVWSkpJx/EYDAQ//SAEJCEJJ9qkhAJZCAEhIST4+9670pm+wUnseR7Xktny33svPczhs1Q/l xGc3H6fEz9N+vx9FUdP5UtVdbj9LWdhkdRI7PKaux7nKzFn33sa+2xM5dYr256PJ0G2vsdo6PBZD B0uEyUvT4XKaaow/rampxOW1lXiszMVuLzc1Ixuem7DIaGdssn8E/aerL0VtKaekuczT3mb+fdmf mqm+0U3V38tla2U0m13+Y+Og4Er8lFYZ3V/Yf7/kPH2f/H5T6P0//P+z/c+2/6f2v7/+T7z6D6r/ N/359Z/o/8fR/Yf6//Xp/Tu3bMzt2zACqqqqqqqqqqqAAHsgAAAAAAA3d0AHqwAAAAAAA2222222 666qqqqqqqqoAAfhQAAAAAAA22222223pdtttttttttsqqqqqqqq7bbbbbbb4jbbbbePHjx4qqqq gAB92AAAAAAADbbbbbbbfE7bKqqqqqqqqqqqqq7bbbbbbb4Tbbbbbbbbbbbbbbbvvvvvvvvvvvt6 gAAAAAAAN0AB+cAAAAAAADbbbbbbbfQ7bbbbbbbbbbbbbbbbbbbbbbVVVVVVVVVVVVVVQAA99AAA AAAADbbbbbbbep222yqqqqqqqqqqqqu222228ePHiqqqqqqqqqAAH4QAAAAAAANttlVVfwyqqqqq qqqqqqqqqrtttttttv2222222227777777777776AAPuoAAAAAAAbbbbbbbb4jbbbbbbbbbbbKqq qqqqrtttttttvg9tttttznOc5znOc5znOc5zgAHuAAAKqqqqqqqqqAAH5sAAAAAAANtttsqr+iVV VVVVVVVVVVVVe97z0ej0Z6MzPQPAAAAAAqqAAHvoAAAAAAAbbbbbbbb1O2222222yqqqqqqqqqu2 2222223fffdVVVVVVVAAD8GAAAAAAAG2222222/Cqqqqqqqqqqqqqqqu25znOc5znOc/W85znOc5 znOc5zgAN3d3d3dB90AAAAAAAOulVVVVfuqqqqqqqqqqqqqqqrtttttttv1W2222222223Oc5znO c5zgAPrIAAABVVVVVVQAA/NAAAAAAABtttttttvX7Kqqqqqqqqqqqqqru++++6qqqqqqqqqqqoAA fjgAAAAAAAyqqqq/k1VVVVVVVVVVV73ve973ve85znOc5znOc5z23AAAAqgAB+CAAAAAAADbbbbb bbek222222222VVVVVVVVVdttttttt+02228ePHjx48ePHjxVVVAAD7mAAAAAAAG222222289lVV VVVVVVVVVVVVdttttttt8Fttttttttttttttttu+++++w+sAAAAAAACAAH5kAAAAAAANttttttt8 /ttttttttttttttttttttttt48VVVVVVVVVVVVVUAAPxoAAAAAAAbbbbbbbb1G2yqqqqqqqqqqqq qu2223jx48ePHj67x4qqqqqqqqgAB+BAAAAAAADbKqqq/g1VVVVVVVVVVVVVVXbbbbbbbfs9tttt ttttu++++++6AAH3IAAAAAAANttttttt53bbbbbbbbbZVVVVVVVVdttttttt8DttttznOc5znOc5 znOc5znOc5zgA9OAAVVVVVVVVVVUAAPzAAAAAAAAbbbKqq/n1VVVVVVVVVVVVXve973nOAAAAAAB oAB+MAAAAAAADbbbbbbben22222222222yqqqqqqq7bbbbbbb95tu+++++++6qqqqoAAfgAAAAAA AA22222223o9ttlVVVVVVVVVVVVXbbbbbnOc5+q5znOc5znOc5znOc4Abu7u7u7u7u+r0AAAAAAA bbZVVV+5Kqqqqqqqqqqqqqqu2222222/U7bbbbbbbbbbbbbnOc5znAD6uAAAAAKqqqoAAflwAAAA AAA22222223rttttsqqqqqqqqqqqq7bd999999991VVVVVVVVVAAD8WAAAAAAAG222yqr+QVVVVV VVVVVVVVV73vec5znOc5znOc57XnOcAAABu6AB9/AAAAAAADbbbbbbbei222222222222yqqqqqq u2222222/Y7bbbbbbx48ePHjxVVAAD7gAAAAAAAG2222222+F2222VVVVVVVVVVVVXbbbbbbbfAb bbbbbbbbbbbbbbbbbd999999/J++wAAAAAADd3d0AflgAAAAAA666666VVVVV/Oqqqqqqqqqve97 3ve973ve973vOc5wAAAAVVVUAAPfAAAAAAAA22222223y222222VVVVVVVVVVVXbbbbbbbfWePHj x4qqqqqqqgAB9+AAAAAAADbbbbZVfwCqqqqqqqqqqqqqqrtttttttv2G22222222227777776666 6AD7eAAAAAAOuuuuuulVVVVfuCqqqqqqqqqqqqqqrtttttttvf9tttttttznOc5znOc5znOc5znO AemAAAFVVVVVVVUAAPyoAAAAAAAbbbbbbZfziqqqqqqqqqqqqqqruc5zgAAAAADd3d3dAfigAAAA AAOuuulVVVVfxyqqqqqqqqqqqqqqrtttttttv3W223fffffffffffdVVQAA++gAAAAAABttttttt vQ7bbbbbZVVVVVVVVVVXbbbbbbbfD7x48ePHjx48ePHjx48ePHjx48VUAAPtwAAAAAAAbbbbbbK/ b1VVVVVVVVVVVVVVXbbbbbbbfqNttttttttttttttttuc5wH1UAAAAAAKqgAB+UAAAAAAADbbbbb bbet22222222VVVVVVVVVV2223ffffffffffffdVVVVVVVAAD8SAAAAAAAG2222222/Gqqqqqqqq qqqqqqqu25znOc5znOc9pznOc5wAAA3d3d3d0H3wAAAAAAA66VVVVV+/Kqqqqqqqqqqqqqqu2222 222/X7bbbbbbbbbePHiqAAH20AAAAAAANttttttt8FtttttttlVVVVVVVVVXbbbbbbbe/bbbbbbb bbbbbbbbbbbbbvvvv2777777777qqqqqqqqqqqqgAB+TAAAAAAADKqqqr74qqqqqqqqqqqve973v e973nOc5znAAAAAFUAAPxAAAAAAAAbbbbbbbb5PbbbbbbbbZVVVVVVVVV22222223xm223jxVVVV VVAAD72AAAAAAAG2222222+Lyqqqqqqqqqqqqqqu2222222/Xbbbbbbbbbbbbd999ddddddddddd D7YAAAAAAACqqqqv21VVVVVVVVVVVVVVV22222223vu22222222223Oc5znOc5znOc5zg9IAAAAK qqqqqgAB+SAAAAAAADbbbbbbbfNbbKqqqqqqqqqqqqq7bbbeKqqqqqqqqqqoAAfhwAAAAAAA2yqq qv4tVVVVVVVVVVVV73ve973vOc5znOc5znOc/Z85znOc5wAAKAAH3oAAAAAAANttttttt8Vttttt ttttsqqqqqqqqu2222222+G22225znOc5znOc5znOAAAfXAACqqqqqqqqqqgAB+fAAAAAAADbbZV VX31VVVVVVVVVVVVV6AAAAAAABoAB+RAAAAAAADbbbbbbbes222222222222222222222228ePHj x48ePHiqqqqqqqqqqoAAfhgAAAAAAA22222223yO22yqqqqqqqqqqqqrtttttznOc+p5znOc5znA AAbu7u7u7u7u+9aAAAAAAANtsqqq/e1VVVVVVVVVVVVVVXbbbbbbbfrdttttttttttttuwAA9yAA AAAFVVVUAAPzwAAAAAAAbbbbbbbb6PbbbbbbbbbbbbbbbbbbbbaqqqqqqqqqqqqqqqgAB+QAAAAA AADbbbZVV/MKqqqqqqqqqqqqq973vOc5znOc5wAAAAA3dAA97AAAAAAADbbbbbbbem2222222222 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 ktCEtgBbAC2AFsCWgSWwAtgBbAC2ELQklsALYAWwAtgFoBbAC2AFsALYSS0IWwAtgBbAC2BJaBLY AWwAtgBbCEtCS2AFsALYAWwCWgWwAtgBbAC2EhaEtgBbAC2AFsCFoWwAtgBbAC2EC0tgBbAC2AFs ALYAWwAtgBbAC0thAtgBbAC2AFoWwIWwAtgBbAC0JbCQtgBbAC2AFoFsAlsALYAWwAtCS2EJbAC2 AFsALQJbAktgBbAC2AFoQthJLYAWwAtgBaAWwC2AFsALYAWhJLYQtgBbAC2AFoElsCWwAtgBbAC0 IS2ElsALYAWwAtAJbAtgBbAC2AFoSFsJbAC2AFsALQIWwtgBbAC2AFoQLZbAC2AFsALYAWUgFsAL YAWwAtktJAtgBbAC2AFsktIQtgBbAC2AFshaSQtgBbAC2AFsklpAlsALYAWwAtkJaSEtgBbAC2AF skLSElsALYAWwAtkC0kktgBbAC2AFskktIFsALYAWwAtkJLSQtgBbAC2AFskJaQlsALYAWwAtkCW kktgBbAC2AFskhaQtgBbAC2AFshC0ktgBbAC2AFskC0lsALYAWwAtkAttgBbAC2AFsALbZALYAWw AtgBaS2SBbAC2AFsALSS2QhbAC2AFsALSFskhbAC2AFsALSSWyBLYAWwAtgBaQlskJbAC2AFsALS QtkJLYAWwAtgBaQLZJJbAC2AFsALSSS2QLYAWwAtgBaQktkhbAC2AFsALSQlshLYAWwAtgBaQJbJ JbAC2AFsALSSFshbAC2AFsALSELZJbAC2AFsALSQLZLYAWwAtgBaQCywAtgBbAC2AFstCBbAC2AF sALYWgQtgBbAC2AFsJaEhbAC2AFsALYFoBLYAWwAtgBbCS0IS2AFsALYAWwJaBJbAC2AFsALYQtC SWwAtgBbAC2AWgFsALYAWwAthJLQhbAC2AFsALYEloEtgBbAC2AFsIS0JLYAWwAtgBbAJaBbAC2A FsALYSFoS2AFsALYAWwIWhbAC2AFsALYQLS2AFsALYAWwAtgBbAC2AFsALS2EC2AFsALYAWhbAhb AC2AFsALQlsJC2AFsALYAWgWwCWwAtgBbAC0JLYQlsALYAWwAtAlsCS2AFsALYAWhC2EktgBbAC2 AFoBbALYAWwAtgBaEkthC2AFsALYAWgSWwJbAC2AFsALQhLYSWwAtgBbAC0AlsC2AFsALYAWhIWw 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 AAAAAAbbbbbbbb3e2222266vGZmZmVVVVUAAPewAVVVVVVVVVVVUAAPigAAAAAAA2yqqqvwyqqqq qqqqvOc9gAMAAPTAAAAABVVVUAAPngAAAqqqqqqqqAAH0gAAAAAADrrznOc83m83m6666666qqqq qqqqqqqqoAAfIgAAAAAAAAAPWAAAAAAABtttttuuuqqqqqqqqqqAAHvYAAAAAAAbbbbbbbb02222 22222VVVVVVVVVXbbbbbbbfF7bbx48ePHiqqqqqAAHvAAAAAAAAbbbbbbbb0Cqqqqqqqqqqqqqqr tttttttvhdttttttttttttt33333333332D62AAAAAAAUAAPgQAAAAAAA22222223sNttttttttt ttttttttttttVVVVVVVVVVVVVVVAAD38AAAAAAANttttttt8ztlVVVVVVVVVVVVVXbbbePHjx4qq qqqqqqqqgAB70AAAAAAAGyqqqr72qqqqqqqqqqqqqqq7bbbbbbb4rbbbbbb4+SQJIGejM9FXj0Z6 PRlVVVQAA95AAAAAAADd3d3d3d0egAAAAAAABVVVVX4VVVVVVVVVV5znffYA9xAAAAAACqoAAfAA AAAAAABtttttttvottttttttttttttttttttttqqqqqqqqqqqqqqqgAB78AAAAAAAG2222222/LK qqqqqqqqqqqqqqu25znOc5znAAAAAN3d3d3dB7yAAAAAAAddKqqqq/iFVVVVVVVVVVVVVVXbbbbb bbfE7bbbbbbvvv/+YoKyTKayqf2tLgJH/f////////////////////////////////////////// ///CCIHAAAAAAAAAAAAABwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAB8AAcHgBmHxpJKJRSRRSSRSikiikklFJJFJKSKKSSUUkkUkpIopJJJSSRSSkiikIgAAA AASikkklIpFFJJJJJAopIpJJJRSSRRSSSRSSRSikikklFFJJFJKSKSSSUUkgAAAAAAAAAAAAAAAA AAABFJJFKKSRKKSSSUkkUkkXsAbMopotilFNmUU0WxSgbYooElFNFsUAbMopotilA2xSmi2UUGzK ANsUAyUUpIpJSSSkilJKKKUkUopIFJKKKUkUopJRSUiklJFKSSUUpIpJSRSSiiikkikOVDIYIaMA mQZMjTTT0TTymmnpBoM0jJ6jE9EyGaaJtQzSejJqbKeo8p6j9ADQDIZDIZDEZGQNDIZNNMTTTBMm ATADUxPUwSh0hMEwAAAAAAAAAAAAATAGgAAABMAmAAAEwmATAJkwAAAAAATAAEwf/+qqoUBppgmR gRiYIwCZMJkxGBMQZNMACYho0yDEwIaYAjATEwmCYhgIwmIZGjJgEwmTJphMAJkGAP/fqqqP1UKf qqU/VAAAAAAAAAAH6oAAAAAAAH6oANAA0AAAAAAaH/6p/+9VVVQAeoAAAAAAADQP///2qqqVR/// qqqkQ/VVH6qiabITNDQANT0ABoaGRo9/qVQANEwCYRkyYTJk//VKAEMmjQyAAaDI0aNNNAf//vel UqqoAAAAAAAAAAAAMlVVP1VJppoNAAAAAANABoABkZMJtTGo9J6j0anpN/6lTKGyZR6EzU/RT9AC ZNGTKeU9MIP///eqolVVAD/9qqoAAAAAAAAAbUA07PT9BQ0VHSUoemp6ipqqusECa2urxQuwsbIY Ns7S1HD7a3uCBElc3RMpd3hUte31/gYJfCw8QwZxcY0byDmSdyjx9BlocxFmo0iVMnzlCnPVK1i1 cvYMdBkzaNWzdw5dOwNF49faQOm/gQYUPU8Mt/HimP5mf6/uam/8nP9/4NOz0/QUNFR0lKHpqeoq aqrrBAmtrq8ULsLGyGDbO0tRw+2t7ggRJXN0TKXd4VLXt9gYJfCw8QwZxcbHNG8g5knco8fQZaHM RZqNIlTJ85Qpz1StYtXL2DHQZM2jVs3cOXTsDRePX2kDpwIMLgAAAAAAAAAq/EAAAAAAAAACr/+A AAAAAAAACrgAAAAAAAAAq/EAAAAAAAAABVwAAAAAAAAAVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAA ABVwAAAAAAAAAVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAA AAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgA AAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAC rgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAKuAAAAAAA AACrgAAAAAAAAAq4AAAAAAAAAKuAAAAA/UAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAf34AAAAq 4AAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAA AAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAACrgAAAA AAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwA AAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAB32/b9v2/b9v2/b9v2gAAAA AAARESAAAAAAAAABERIAAAAAAAAAEREgAAAAAAAAAREREREREREQAAAAAAAKuAAAAAAAAACrgAAA AAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAACrg AAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAA BVwAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAAAAA AAABVwAAAAAAAAAVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAA AAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACr gAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAq4AAAAAAAAAKuAAAAAAAA ACrgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAKuAAAAA AAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAA AAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAArgAAAAAAAAAq4AAAAAAAAAK uAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAA AAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAA AAAAAFXAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAABVwAAAAAAAAAVcA AAAAAAAAFXAAAAAAAAABVwAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAA VcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAA AAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAACrgAAAAAAAAAq4AAA AAAAAAKuAAAAAAAAACrgAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAq4 AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAA AVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAA AAAAVcAAAAAAAAAFXAAAAAAAAABXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAA AAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABV wAAAAAAAAAVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAA ABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAA AAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgA AAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAKuAAAAAAAAAC rgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAA AACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAA AAAAABVwAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXA AAAAAAAABVwAAAAAAAAAVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAA CuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAABVwAAAAAAAAAVcAAAAAA AAAFXAAAAAAAAABVwAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAVcAAA AAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKu AAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAACrgAAAAAAAAAq4AAAAAAAA AKuAAAAAAAAACrgAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAq4AAAAA AAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAA AAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAV cAAAAAAAAAFXAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAABVwAAAAAAA AAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAA AAAAABwAAAAAAAAARESAAAAAAAAABERIAAAAAAAAAEREgAAAAAAAAAREREAAAAAAAAAKuAAAAAAA AACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAA AAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXA AAAAAAAABVwAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAA FXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAA AAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAA AAAAAACrgAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAq4AAAAAAAAAKu AAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAA AKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAA AAAAFXAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAArgAAAAAAAAAq4AA AAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAV cAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAAAA AAVcAAAAAAAAAFXAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAABVwAAAA AAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4A AAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAA q4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAACrgAAAAAA AAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAA AAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVw AAAAAAAAAVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAA BVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAA AAABVwAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAA AAAAAABVwAAAAAAAAAVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFX AAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAA ACrgAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAq4AAAAAAAAAKuAAAAA AAAACrgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAKuAA AAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAF XAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAABVwAAAAAAAAAVcAAAAAAA AAFXAAAAAAAAABVwAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAVcAAAA AAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuA AAAAAAAACuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAABVwAAAAAAAAA VcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAA AAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAA AAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAACrgAAAAAAAAAq4 AAAAAAAAAKuAAAAAAAAACrgAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAA Aq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAA AAAAVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAA AAAAAAAVcAAAAAAAAAFXAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAABV wAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAA AAq4AAAAAAAAIiIiIiJAAAAAAAAAAiIkAAAAAAAAACIiQAAAAAAAAAIiJAAAAAAAAAPt+37ftAAA AAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq 4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAACrgAAAAAAA AAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAA AAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwA AAAAAAAAVcAAAAAAAAAKuAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAAB VwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAA AABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAA AAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAKuAAAAAAAAACrg AAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAA BXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAq4AAAAAAAAAKuAAAAAA AAACrgAAAAAAAAAq4AAAAAAAAAVcAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAKuAAA AAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAAFXAAAAAAAAABVwAAAAAAAAAVcAAAAAAAAAFX AAAAAAAAACrgAAAAAAAAAq4AAAAAAAAAKuAAAAAAAAACrgAAAAAAAABVwAAAAAAAAAVcAAAAAAAA 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 +++++++++1VVVVVVVVVVVAAD5x6AAAAAAAbAAP0gAAAAAG22223e973ve9+KvfnOc5zlVVVVVVVV VUAAPpgAAPQAAAA222222236fbbbbYAAAAADbbbbbbbv7/ve973ve1fq/b29vb29vb2qqqqqAAH2 4AAAAAPQAAAB/LAAAAAAABtttttttv2m22222222223e9+KvfnOc5zlVVVVX0VVVVVVVVVVVVVVV UPQAPqwAAAAAAA22222wflgAAAAAA/PyT257fP+Zz29uc9vbntXvznOc5yqqqqqqqqqqqqqqqAAH 4QegPxYAAAAANttttttt+x2AAAAAAANttu9734q9+c5znOVVVVVVVVVVAAD70AAA9AAAeeeeeeee AAD8+AAAAAAAG2222222/e7bbbbff33335znOc5VVVVQAA+2gAAAAA9ABtttttttvzYAAAAAAAbb bbbbbb+m2222222222222+/vvv2ttttVVVVfYKqqqqqqqqqqqqqqoPQAfjwAAAAAAA222222237f bbbbbAAAAAPye+/lW22333333332qqqqqqqqqqqqAAH4MPQAAAAAAMAAfz4AAAAANttttt3ve973 ve9+KvfnOc5zlVVVVVVVVVAAD7yAAAegAAAG2222222/jNtttsAAAAAA2222223e/vu973ve973v xV785znOcqqqqgAB9sAAAAAA9AHgAA/NAAAAAAABtttttttv2e222222222273ve9+KvfnOc5zlV VVV9fqqqqqqqqqqqqqqqgegB+OAAAAAAADbbbbYH6gAAAAAAB+Svm85znOcqqqqqqqqqqqqqqoAA fVA9AAAAAABtttttttv1+22222222wAAAAbbbbbbff3337W23nKqqqqqqqqoAAfeAAAB6AAAA222 2AfzQAAAAAAAbbbbbbbb95tttttt9/ffftbbbffffffaqgAB9rAAAAAAegDbbbbbbbfw+2222222 wAAAAG2222222/Zbbbbbbbbbbbbbbff3337W223333333333333+K9qqqqqqqqqqqqqqqA9AH40A AAAAAeeeeeeeAAD+lAAAAG22222222+fXzec5znOVVVVVVVVVVVVVVQAA/BAegAAAAABtttttttv 12AAAAAAAG2273ve9734q9+c5znOVVVVVVVVVAAD7uAAAHoAA888888888AAH54AAAAAAANttttt tt+72222223xV785znOcqqqoAAfagAAAAAD0A22222223+oAAAAAAADbbbbbbbfsdttttttttttt ttt9/ffftbec5yqqqvr1VVVVVVVVVVVVVVUA9APxgAAAAAAAbbbbbbbb+V22222AAAAAB+T338q2 22++++1VVVVVVVVVVVUAAPwID0AAAAAAAAD/YgAAAAAABttttttt9/ffftbbbffffffffffffaqq qqAAH3YAAAHoAAANttttttt+j2222AAAAAANtttttu97+973ve973ve9734q9+c5znOVVVQAA+0g AAAAAD0HngAA/lAAAAAAAA222222237Dbbbbbbbbbbve973ve9+KvfnOc5zlVVV9dqqqqqqqqqqq qqqqgD0B+LAAAAAAADbbbbAf7YAAAAAABtvn183nOc5zlVVVVVVVVVVVVVAAD6kA9AAAAAANtttt ttt+s22222222wAAAANttttttt9/ffftec5znKqqqqqqqoAAfdQAAAPQAAA222wB/rQAAAAAAA22 2222237rbbbbbbbff3337W22332qqAAH2gAAAAAAPQNttttttt+X2222222wAAAADbbbbbbbfr9t tttttttttttttt9/ffftbbbffffffffff7NVVVVVVVVVVVVVVVAD0D8UAAAAAAeeeeeeeeAAD+jA AAANtttttttttvir35znOc5VVVVVVVVVVVVVAAD6kAegAAAAANttttttt+sAAAAAAADbbve973ve 9734q9+c5znOVVVVVVVVAAD7oAAAA9AB5555555554AAPzoAAAAAAAbbbbbbbb9ztttttt3ve/FX vznOc5yqqgAB9nAAAAAAB6DbbbbbbZ/JAAAAAAABtttttttv12222222222222222339999+c5zn OVVV9DVVVVVVVVVVVVVVVAB6D8SAAAAAAAG2222222/k9tttsAAAAAA33999+1tttqqqqqqqqqqq qqAAH1AAegAAAAA8AAH6EAAAAAAANttttttt/X77+++/a222++++++++1VVVVAAD7mAAAAegAAG2 222222/Q7bbYAAAAAAbbbbbbve9/ed73ve973ve973vfir35znOc5VVAAD7MAAAAAAB6888AAH8i AAAAAAAG2222222/W7bbbbbbbbbve973ve973vfir35znOc5VVfQVVVVVVVVVVVVVVVQAPQ/EAAA AAAABtttsA/oQAAAAAANtu9+KvfnOc5zlVVVVVVVVVVVVAAD8AAD0AAAAAG2222222/Vbbbbbbbb AAAAAbbbbbbbb+u2+/te/Oc5znKqqqqqqoAAfcgAAAB6AAA222AH8yAAAAAAAG2222222/cbbbbb bbbbff3337W23nKqgAB9lAAAAAAAejbbbbbbbflNttttttgAAAADbbbbbbbfrNtttttttttttttt ttvv7779rbbb7777779bqqqqqqqqqqqqqqqgAPR+HAAAAAAeeeeeeeeeAAD9OAAAAAAAG2+/vvv2 tttvvvvvvvvvvvvvvtVVVVVVVAAD7+AB6AAAAAG2222222/IAAAAAAAG273ve973ve9/tO978Ve/ Oc5znKqqqqqqgAB9xAAAAD0B55555555554AAPzgAAAAAAAbbbbbbbb9vtttttu973ve9+KvfnOc 5zlVAAD7IAAAAAAAem222222P5AAAAAAAANttttttt+r222222222222222223xV785znOcqr+Dq qqqqqqqqqqqqqqgAHp+GAAAAAAADbbbbbbbftNtttgAAAAADbb7+++/a285zlVVVVVVVVVVVQAA+ /AAPQAAAAHngAA+4AAAAAAAbbbbbbbb+s22+/vvv2tttvvvvtVVVVUAAPuAAAAAPQAAbbbbbbbb8 /ttsAAAAAAG22223e973933ve973ve973ve973vxV785znOcqgAB9GAAAAAAB555/mAAB/HgAAAA AABtttttttvzNttttttttu973ve973ve973vfir35znOc5VfWqqqqqqqqqqqqqqqoAA9fhQAAAAA AA222wB/tAAAAAAAbbbve978Ve/Oc5znKqqqqqqqqqqqAAH04AB6AAAAAbbbbbbbb+O2222222wA AAADbbbbbbbfwdt3vxV785znOcqqqqqqgAB9vAAAAA9AADbbAB/qgAAAAAAA222222239Rtttttt ttttvv7779rLLb/lJJbe6SSSTukkkk7rJJJO622290kkkndJJJJ3SSSSd0kkkndJJJ7e3zPme3t7 e3t7e3tUAAPowAAAAAAAAAH5MAAAAAAD9iNttttsH5gAAAAAB/kZ7+V79rbbb+V0kkkndJJJJ3SS SSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJ J3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkn dJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0 kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd1kkkndbbbe6SSSTukkkk7pJJJO6SS STukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJ O6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7 pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTuk kkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SS STuskkk7rbbb3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ 3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkknd JJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0k kkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0tts62Sz333+H9 999999999999999qqqqqqqqqqAAHoAAAAAAANttth+jH6YAAAAAADbbve9734q9+c5znOVVVVVVV VVVVQAA++gAD0AAAABtttttttv1O2222222wAAAAG2222222/gbbd78Ve/Oc5znKqqqqqgAB9KAA AAA9AAG22wA/NgAAAAAABtttttttv22222222222233999+15znOcoAAfYgAAAAAAA+dttttttt+ R2222222AAAAANttttttt+q2222222222222222222/J7779rbbb779ZqqqqqqqqqqqqqqqgAB8v QAAAAAHnnnnnnnngAA/SgAAAAAABtttvv7779rbbb7777777777VVVVVVVQAA++AAB6AAAABtttt tttv5wAAAAAAANt3ve973ve97/A73ve978Ve/Oc5znKqqqqqAAH8KAAAAAejzzzzzzzzzzwAAfzA AAAAAAAbbbbbbbb+n2222222222233999+1k/f2Sy2zpbLb755555555/E+eB9hAAAAAAAHj+MAA fxwAAAAAAAbbbbbbbb9Tttttttttttu973ve973ve973vfn1e/Oc5znL6xVVVVVVVVVVVVVVVAAD 09AAAAAAAG2222wP6AAAAAAAA273ve9734q9+c5znOVVVVVVVVVVUAAPvYAAPQAAAAbbbbbbbb+N 222222222AAAADbbbbbbbfvtttu9+KvfnOc5zlVVVVUAAPpAAAAAB6AA2222Afy4AAAAAAAbbbbb bbb9rtttttttttttt9/ffftec5znAAB9EAAAAAAAG3zttttttvq9tttttttgAAAANttttttt+Xtt tttttttttttttttttt+T3337W2237e1VVVVVVVVVVVVVVAAD5x6AAAAAA8888888AAH6QAAAAAAA Ntttt9/ffftbbbffffffffffaqqqqqqgAB9MAAB6AAAAG2222222/T4AAAAAAAbbbbbbbb+r2222 3vvv6GSyz+TslltnSWyz32qqqqAAH0gAAAAAegAbbbbbbbb87tv4nbbAAAAAANttttttt+022222 222222233999+1ttt9999999999qr6KqqqqqqqqqqqqqqqHoAH1YAAAAAAAbbbbbbbb9xttttttt tttttttttttttvn183nOc5zlVVVVVVVVVVVVVVUAAPwg9AAAAAAAbbbbbA/RgAAAAAAG3e973ve9 78Ve/Oc5znKqqqqqqqqqgAB96AAAegAAADbbbbbbbfptttttttttgAAAA2222222373bbbve9+Kv fnOc5zlVVVVAAD7aAAAAAD0AG222wD/UgAAAAAABtttttttv6bbbbbbbbbbbbbb7++++/Oc5znKq qqq+wVVVVVVVVVVVVVVVQegA/HgAAAAAABtttttttv2+2AAAAAAH5PffyrbbbVVVVVVVVVVVVVVU AAPwYegAAAAA8888888AAH8+AAAAAAAG22222+/vvv5qyWW2fw1tt5yqqqqqqqqqgAB96AAAPQAA AD81ttsAfzYAAAAAAAbbbbbbbb/dbbbbbb7+++/a222++++++1VQAA+2AAAAAAegBtttttttvzW2 222222AAAAAbbbbbbbb9ntttttttttttttvv7779rbbb7777777777777/aaqqqqqqqqqqqqqqoH oAfjgAAAAADzzzzzzzwAAfqAAAADbbbbbbbbfPr5vOc5znKqqqqqqqqqqqqqqAAH1QPQAAAAAAbb bbbbbb9eAAAAAAAG23e973ve/FXvznOc5yqqqqqqqqqAAH3gAAAegADzzzzzzzzzwAAfzQAAAAAA Abbbbbbbb95tttttt8Ve/Oc5znKqqqgAB9rAAAAAAegDbbbbbbZ/KgAAAAAABtttttttv2W22222 2222222233999+1l57e36Tnt7c9uc57fM9ue3tzntVVVV9fqqqqqqqqqqqqqqqgPQB+OD8gAAAAA ADbbbYB/SgAAAAAAbfPr5vOc5znKqqqqqqqqqqqqqoAAfggPQAAAAAA2222222367bbbbbbbYAAA ADbbbbbbff3337W85znKqqqqqqqqgAB93AAAD0AAADbbYAfngAAAAAAA222222237vbbbbbbff33 37W223332qqgAB9qAAAAAAPQDbbbbbbbfmdttttttgAAAADbbbbbbbfsdtttttttttttttt9/fff tbbbffffffffffffr1VVVVVVVVVVVVVVUA9APxgAAAAADzzzzzzzzwAAf0gAAAAAAA/J77+VLZJ/ F22SfxfW223ut5znOfM+Zz29vb257fN57e3Oc9qqqqqqqqqqqqqqgAB9UA9AAAAAAG2222222/X7 bbbH6f+hAAAAADbbbbbbvfir35znOc5VVVVVVVVQAA+7AAAA9AAAHngAA/1wAAAAAAAbbbbbbbb/ c7bbbbbbff3337XnOc5yqqqAAH2kAAAAAAegNttttttt+Y222AAAAAADbbbbbbbfsNtttttttttt ttttvv7779rbbb77VVX12qqqqqqqqqqqqqqqAPQH4sAAAAAAANttttttt+222222222wAAAAPye+ /lW2233333333332qqqqqqqqqqAAH1IB6AAAAAAbbbYA/RAAAAAAA223e973ve973ve9+KvfnOc5 zlVVVVVVVUAAPuoAAAHoAAAbbbbbbbb9FtttttttgAAAAG2222222/dbbve973ve9734q9+c5znO VVVAAD7QAAAAAAHoG22AD+TAAAAAAADbbbbbbbfr9ttttttttttttt3ve/FXvznOc5yqqr65VVVV VVVVVVVVVVVAD0D8UAAAAAAAG2222222/lAAAAAAAA+/vvvvznOc5yqqqqqqqqqqqqqAAH1IA9AA AAHnnnnnnnnngAA/RAAAAAAABtttttttt9/ffftbbbaqqqqqqqgAB90AAAAegAADbbbbbbZ+dAAA AAAADbbbbbbbfudtttttttvv7779rbbb77777776AAPs4AAAAAAPQbbbbbbbb8tttttttttttsAA ABtttttttv1222223e973ve973ve973ve978Ve/Oc5znKqq+hqqqqqqqqqqqqqqqgA9B+JAAAAAA AHgAA/ogAAAABttttttu/FXvznOc5yqqqqqqqqqqqqoAAfUAB6AAAAABtttttttv1e222AAAAAAG 2222273vf7bvxV785znOcqqqqqqqoAAfcwAAAD0AAHnngAA/1gAAAAAAAbbbbbbbb+q222222223 39r35znOc5VVAAD7MAAAAAAB6G2222222/K7bYAAAAAAG2222222/W7bbbbbbbbbbbbbbbb7+++/ a2285VVfQVVVVVVVVVVVVVVVQAPQ/EAAAAAAABtttttttv2u2222222wAAAAG33999+1ttt99999 9qqqqqqqqqqoAAfgAAegAAAAA222AH88AAAAAAAG2222222/rtvv7779rbbb77777777777777VV QAA+5AAAAD0AABtttttttv0G222222wAAAABtttttttv3G3e973ve973ve978Ve/Oc5znKqgAB9l AAAAAAAejbYAH+nAAAAAAADbbbbbbbfrNttttttttttttu973ve9+KvfnOc5zlVX1uqqqqqqqqqq qqqqqAA9H4cAAAAAAANttttttt+nAAAAAAADbfFXvznOc5yqqqqqqqqqqqqAAH38AD0AAAHnnnnn nnnnngAA/IAAAAAAAG2222222/rdt9/ffftbec5yqqqqqqoAAfcQAAAA9AAA222222x+cAAAAAAA Dbbbbbbbft9ttttttttt9/ffftbbbffffYAAfZAAAAAAAD0222222235PbbbbbbbbbbAAAANtttt ttt+r2222222222222222233999+1ttt99999/iPfffffaqqqqqqqqqqqqoAB6fhgAAAAAADzwAA f7UAAAAA222222273vfir35znOc5VVVVVVVVVVVUAAPvwAD0AAAAAbbbbbbbb4222AAAAAADbbbb bve97/Z973vxV785znOcqqqqqqoAAfcAAAAAegAPPPPAAB/qwAAAAAAA222222239Tttttttttt3 vxV785znOcqgAB9GAAAAAAAPW2222222/JbbAAAAAAAbbbbbbbb8zbbbbbbbbbbbbbbbbbb7+++/ a2y/v/4Ett7rJb3Sd0tt7pbb3S23ustvTpbb3S23ultvdLbe6d1st7pbb3S23ultvdL3W2Xultvd Lbe6W290s7rZL3S23ultvdLbe6W91ts7pbb3S23ultvdLJ3WyzultvdLbe6W290tndbZO6W290tt 7pbb3Sy91sk7pbb3S23ultvdLb3W290tt7pbb3S23uskn5XT+B1sv26W290tt7pbb3S2Tuts7pbb 3S23ultvdLLO62TultvdLbe6W290ts7rb3S23ultvdLbe6WS91s7pbb3S23ultvdLZe63ultvdLb e6W290st7r3S23ultvdLbe6W290tt7pbb3S23ultvde6WW90tt7pbb3S23ut7pbL3S23ultvdLbe 62d0sl7pbb3S23ultvdbe6W2d0tt7pbb3S23utk7pZZ3S23ultvdLbe62zulsndLbe6W290tt7rZ e6WSd0tt7pbb3S23utt7pbe6W290tt7pbb3WyTull7pbb3S23ultvdbZO6WzultvdLbe6W291ss7 pZO6W290tt7pbb3W2zulvdLbe6W290tt7rZL3SzultvdLbe6W291tl7pe6W290tt7pbb3Wy3undL be6W290tt7pbb06y290tt7pbb3S23uk7rJb3S23ultvdLbe6Sd1ll7pbb3S23ultvdJe6yS90tt7 pbb3S23ukk7rLZ3S23ultvdLbe6SzuslndLbe6W290tt7pJe6yyd0tt7pbb3S23ukt7rJJ3S23ul tvdLbe6SSd1lvdLbe6W290tt7pLJ3WS90tt7pbb3S23uklndZZ3S23ultvdLbe6S2d1kndLbe6W2 90tt7pJL3WXultvdLbe6W290ll7rJ3S23ultvdLbe6SW91ndLbe6W290tt7pLb3d0tt7pbb3S23u ltvd3SW3ultvdLbe6W291ndJLe6W290tt7pbb3WTuksvdLbe6W290tt7rL3SSXultvdLbe6W291k ndJbO6W290tt7pbb3WWd0ks7pbb3S23ultvdZL3SWTultvdLbe6W291lvdJJO6W290tt7pbb3WST ukt7pbb3S23ultvdZZO6SXultvdLbe6W291ks7pLO6W290tt7pbb3WWzukk7pbb3S23ultvdZJe6 S90tt7pbb3S23ussvdJO6W290tt7pbb3WS3uk7pbb3S23ultvdZbenS23ultvdLbe6W2907rZb3S 23ultvdLbe6XutsvdLbe6W290tt7pZ3WyXultvdLbe6W290t7rbZ3S23ultvdLbe6WTutlndLbe6 W290tt7pbO62yd0tt7pbb3S23ull7rZJ3S23ultvdLbe6W3utt7pbb3S23ultvdLJO62XultvdLb e6W290tk7rbO6W290tt7pbb3Syzutk7pbb3S23ultvdLbO6290tt7pbb3S23ulkvdbO6W290tt7p bb3S2Xut7pbb3S23ultvdLLe690tt7pbb3S23ultvdLbe6W290tt7pbb3XullvdLbe6W290tt7re 6Wy90tt7pbb3S23utndLJe6W290tt7pbb3W3ultndLbe6W290tt7rZO6WWd0tt7pbb3S23uts7pb J3S23ultvdLbe62XulkndLbe6W290tt7rbe6W3ultvdLbe6W291sk7pZe6W290tt7pbb3W2Tuls7 pbb3S23ultvdbLO6WTultvdLbe6W291ts7pb3S23ultvdLbe62S90s7pbb3S23ultvdbZe6Xultv dLbe6W291st7p3S23ultvdLbe6W29OstvdLbe6W290tt7pO6yW90tt7pbb3S23ukndZZe6W290tt 7pbb3SXuskvdLbe6W290tt7pJO6y2d0tt7pbb3S23uks7rJZ3S23ultvdLbe6SXussndLbe6W290 tt7pLe6ySd0tt7pbb3S23ukkndZb3S23ultvdLbe6Syd1kvdLbe6W290tt7pJZ3WWd0tt7pbb3S2 3uktndZJ3S23ultvdLbe6SS91l7pbb3S23ultvdJZe6yd0tt7pbb3S23uklvdZ3S23ultvdLbe6S 293dLbe6W290tt7pbb3d0lt7pbb3S23ultvdZ3SS3ultvdLbe6W291k7pLL3S23ultvdLbe6y90k l7pbb3S23ultvdZJ3SWzultvdLbe6W291lndJLO6W290tt7pbb3WS90lk7pbb3S23ultvdZb3SST ultvdLbe6W291kk7pLe6W290tt7pbb3WWTukl7pbb3S23ultvdZLO6SzultvdLbe6W291ls7pJO6 W290tt7pbb3WSXukvdLbe6W290tt7rLL3STultvdLbe6W291kt7pO6W290tt7pbb3WW3p0tt7pbb 3S23ultvdO62W90tt7pbb3S23ul7rbL3S23ultvdLbe6Wd1sl7pbb3S23ultvdLe622d0tt7pbb3 S23ulk7rZZ3S23ultvdLbe6WzutsndLbe6W290tt7pZe62Sd0tt7pbb3S23ult7rbe6W290tt7pb b3SyTutl7pbb3S23ultvdLZO62zultvdLbe6W290ss7rZO6W290tt7pbb3S2zutvdLbe6W290tt7 pZL3WzultvdLbe6W290tl7re6W290tt7pbb3Sy3uvdLbe6W290tt7pbb3S23ultvdLbe6W2917pZ b3S23ultvdLbe63ulsvdLbe6W290tt7rZ3SyXultvdLbe6W291t7pbZ3S23ultvdLbe62TullndL be6W290tt7rbO6Wyd0tt7pbb3S23utl7pZJ3S23ultvdLbe623ult7pbb3S23ultvdbJO6WXultv dLbe6W291tk7pbO6W290tt7pbb3Wyzulk7pbb3S23ultvdbbO6W90tt7pbb3S23utkvdLO6W290t t7pbb3W2Xul7pbb3S23ultvdbLe6d0tt7pbb3S23ultvTrLb3S23ultvdLbe6TuslvdLbe6W290t t7pJ3WWXultvdLbe6W290l7rJL3S23ultvdLbe6STustndLbe6W290tt7pLO6yWd0tt7pbb3S23u kl7rLJ3S23ultvdLbe6S3uskndLbe6W290tt7pJJ3WW90tt7pbb3S23uksndZL3S23ultvdLbe6S Wd1lndLbe6W290tt7pLZ3WSd0tt7pbb3S23ukkvdZe6W290tt7pbb3SWXusndLbe6W290tt7pJb3 Wd0tt7pbb3S23uktvd3S23ultvdLbe6W293dJbe6W290tt7pbb3Wd0kt7pbb3S23ultvdZO6Sy90 tt7pbb3S23usvdJJe6W290tt7pbb3WSd0ls7pbb3S23ultvdZZ3SSzultvdLbe6W291kvdJZO6W2 90tt7pbb3WW90kk7pbb3e3Oc58z5nPbnPfnOe3t7cqvoKq+h+ufXaqqqqqqqqqqqqAAPX4UAAAAA AANttttttt+z2AAAAAAANtt96vfnOc5zlVVVVVVVVVVVAAD6cAA9AAAA88888888AAH86AAAAAAA G2222222/g7bb7+++/a23nOVVVVVVQAA+3gAAAAegABtttttttvzwAAAAAAAbbbbbbbb+o222222 222233999+1ttt99988AAfYwAAAAAAAAAH5IAAAAAAANttttttt/N7bbbbbAAAAHve9bbbffff7F 777777777VVVVVVVVVVVVAAD0AAAAAAAGAAP0wAAAAANttttt3ve978Ve/Oc5znKqqqqqqqqqqoA AffQAB6AAAAA222222236nbbbbAAAAAANtttttt3v9j3ve978Ve/Oc5znKqqqqqgAB9KAAAAA9AA PAAB+bAAAAAAADbbbbbbbftttttttttttt34q9/b29uc9v4Htznt7c5z2+ZznPb257UA+gAfYgAA AAAAA+dttgB/pQAAAAAAA222222236rbbbbbbbbbbbbbbbbbbb8nvvv2kls/gXrbJZ77/D++++++ +/2X33333332qqqqqqqqqoAAfL0AAAAAAANtttgH6UAAAAAADbbve973vxV785znOcqqqqqqqqqq qAAH3wAAPQAAAANttttttt+o22222222AAAAA222222237/bbve/FXvznOc5yqqqqqgAB/CgAAAA HoABttsAP5gAAAAAAANttttttt/T7bbbbbbbbbbb7+++/bnOc5zkAAPsIAAAAAAAb52222222/Ib bbbbbbAAAAAG2222222/U7bbbbbbbbbbbbbbbbbbb8nvvv2tttvv1iqqqqqqqqqqqqqqqAAHp6AA AAAB555555554AAP6AAAAAAAANtttvv7779rbbb777777777VVVVVVVQAA+9gAA9AAAABttttttt v0AAAAAAAAbbve973ve973+w73ve9734q9+c5znOVVVVVQAA+kAAAAAHp55555555554AAP5cAAA AAAANttttttt+1222223e973ve973vfir35znOc4AAPogAAAAAAA2+dttttsfxoAAAAAAAbbbbbb bb8vbbbbbbbbbbbbbbbbbd73vfn1e/Oc5znPeqqqqqqqqqqqqqqqAAHzj0AAAAAAA222222237Lb bbYAAAAAA22223399vfnOc5zlVVVVVVVVVUAAPpgAAPQAAADzwAAf68AAAAAAANttttttt/V7bbb b3339DJJJPaqqqqoAAfbgAAAAA9AA222222235zbbYAAAAAANttttttt+022222222222233999+ 1ttt9999999qqr6KqqqqqqqqqqqqqqqHoAH1YAAAAAAAbbbbbbbb9xttttttttgAAAPye+/lW223 /6/Pnz58+fPnz58+fPm2222222222222223ve973ve973ve/T/evlVVVVVVVVVVVVVUAAP2QAAAA AAAbbbbbfHnnnvznOc5zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyqqqqr6aqqqqqq+VVVVVVVVVAA D9OAAAAAAAG2222222/f7bbbbfHnnnvznOc5zzzzzzzzzzzzzzzyqqqqr7dVVVVVVVVVVVXyqqqg AB+cAAAAAA8888888888AAH7QAAAD6+vvbb7nz58+fPnzbbbbbbbfkO222222222222222222222 23ve9933ve973ve/XPe973veqqqqqqqqqqqqoAAfuAAAAAAAPn+efN+fPnz58+bbbbbbbbbbbbbb bbbbbbbbzzyqqqqr8JVfKqqqqqqqqqqqqqgAB+xAAAAAAADbbbbbfHnnnvznOc5zbbbbbbbbbbbb bbb3ve973ve973vfn/ve9VVVVVfKqqqqqqqqAAH6YAAAAAADzzzwAAfvQAff58+fa222/Pnz58+f PPPPPPPKqqqqvttVVVVVVVVVVVXyqqqAAH5sAAAAAAANttttttt+52wAAAH3+fPn2tttvz58+fPn z58+fPnz5+Qbbbbbbbbbbbbbbbbbbbbbbbe96vlVVV+PqqqqqqqqqqqqqqqgAB+3AAAAAAAfP88+ bznOc5zzzzzzzzzzzzzzzzzzzzzzbbbbbbbbbbbb3ve973ve973vfpvve977vve9VVVVVVVVVVVU AAP2AAAAAAAAbfX19fX19fX19fX3tt9z58+fPnz5tttttttttttttt5VVVVV95qqqqqqq+VVVVVV VVQAA/jAAAAAAAA2222222377bbbbfX19fe233Pnz58+fPm222222973ve973ve9735d73ve9VVV VVVVVVVfKqqgAB+aAAAAAAAPPAAB+zAAAAD7/Pnz7nz58+fPnzbbbbbbfj+22222222222222222 222223ve9733fe973ve/Wve973ve973ve96qqqqqqqqqoAAfy4AAAAAAB8/zz5vOc5znzbbbbbbb bbbbbbbbbbbbbbb3ve9VVVfVVVfKqqqqqqqqqqqqoAAfrwAAAAAAA2222223x555785znOc88888 822222222222973ve973ve9735773ve973ve9VVVfKqqqqqqqgAB+lAAAAAAADbYAH7wAB9/nz59 rbbb8+fPnz58+fPnz57VVVVX2uqqqqqqqqqqqqvlVVAAD+HAAAAAAADbbbbbbbf0e22222AAA+/z 58+1ttt+fPnz58+fPnz58/ivnz58+fPm2222222222222222222973ve9933vVX42qqqqqqqqqqq qqqqAAH8sAAAAAAAPn+efN5znOc5555555555555555555555555555tttttttt73ve973ve973v 0v3ve9733fe973ve96qqqqqqqqqAAH64AAAAAAANttttvr6+vr722+58+fPnz582222222222222 3ve973qqq+71VVVVVVV8qqqqqqqoAAfpAAAAAAAA222222239bttttttt8eeee/Oc5znPPPPPPPP PPPKqqqqvtVVVVVVVVVVVVVXyqqAAH5kAAAAAAANttgB+xAAAAA+/z58+1tt+fNttttt+O7bbbbb bbbbbbbbbbbbeeeeeeeeeeVVV8qqvxlVVVVVVVVVVVVVVUAAP5UAAAAAAAPn+efN5znOc555555t tttttttttttttttttve973ve973vV+Bqqr5VVVVVVVVVVVVQAA/WgAAAAAABtttttttvjzzz35zn Oc5555555555555ttttttt73ve973ve973vzv3ve973ve973ve973qr5VVVVVVVAAD9GAAAAAAAG 2222222/e7bbbbbbb48889+c5znOeeeeeeeeeeVVVVVfaaqqqqqqqqqqqqr5VUAAPzAAAAAAAAbb bbbbbb+h222222222319fX19fX19fX19fX3tt9z58+fPnz5ttttt+Obbbbbbbbbbbbbbbbbbbbbb be973ve977vve979X971VVVVVVVVVVVVVUAAP2wAAAAAAPv/f+/9/7/3tt9z58+fPnz5tttttttt ttttttttvPPPPPPPKqqqqvwNVVXyqqqqqqqqqqqqAAH60AAAAAAANtttttttvjzb7nz58+fPnzbb bbbbbbbbbbe973ve973ve977rVVVVVVVVfKqqqqqqgAB+iAAAAAAeeeeeeeeeAAD90AAH3+fPn2t t5znnnnnnnnnlVVVVX2iqqqqqqqqqqqqqvlVAAD8uAAAAAAAG222222z9eAAAAAff58+fa222/Pn z5ttvxvbbbbbbbbbbbbbbbbbbbbbbzyqqq+VV+KqqqqqqqqqqqqqqqgAB/KAAAAAAABvjzzz35zn Oc555555555555ttttttttttttttve973ve973ve9+k+973qq+VVVVVVVVVVVVAAD9YAAAAAAAG2 2222227vjzzz35znOc5555555555555555555555555VVVVV90qqqqqqqqr5VVVVVVQAA/iwAAAA AAA222222239Xttttttttvjzzz35znOc555555555VVVVV9nqqqqqqqqqqqqqq+VQAA/LAAAAAAD zzzzzzwAAfrgAAAB9fX19fX197bfc+fPnz58+bbbbfjW22222222222222222222223ve973ve97 7vve/Vfe973ve971VVVVVVVVVVVAAD+TAAAAAAADb4233Pnz58+fPm2222222222222222222qqq qq+oqqqr5VVVVVVVVVVVQAA/VgAAAAAABtttttttv7bb48889+c58+fPm22222222222973ve973 ve9735x73ve96qqqqqqvlVVVVVUAAP0IAAAAAAA8AAH9UAAB9/nz59rbbb8+fPPPPKqqqqvs1VVV VVVVVVVVVVV8qAAH5UAAAAAAANttttttt/PbbbAAAAB9/nz59rbbb8+fPnz58/ifnzbbbbbbbbbb bbbbbbbbbbbb3ve96qr5V+IqqqqqqqqqqqqqqqgAB+1AAAAAAADbfHnnnvznOc5zzzzzzzzzzzzz zzzzzbbbbbbbbbbe973ve973ve979H973ve973ve+7VVVVVVVVVVUAAP1QAAAAAAAbbb6+vr6+vr 6+vr6/u/r6+vvbb7nz7Pnz58+zbbbbbbbbbbb3qqqqr7lVVVVVVVVVfKqqqqqgAB+gAAAAAAADbb bbbbbf1W222222222888888888qqqqq+yVVVVVVVVVVVVVVVQAA/KAAAAAAABttttsD9YAAAAAD5 8+fPnz58+fi+22222222222222222222223veqqqq/D1VVVVVVVVVVVVVVQAA/kgAAAAAAA22888 888888888888888888888822222223ve973ve973ve/Rfe973ve973ve973vVVVVVVVVVAAD54AA AAAAAbbbbbb6+vr6/DfX19fW222222222223ve973ve973ve/NfVVVVVVVVVVVVVVVAAD+KAAAAA AHnnnnnngAA/bgAAHz58+fPnzyqqqqr6OqqqqqqqqqqqqqqqAAH5MAAAAAAANttttttt/ObbbbYA AAAfPnz58+fPn9j+fPnz58+fPnz58+fNtttttttttttttttve973ve973ve9+pe9VVVVVVVVVVVV VVQAA/aAAAAAAB9/7/3/v/f+/9fX19fW2222222222222222222qqqqq+nqqqqqqqqqqqqqqqgAB 8AAAAAAABtttttttv7Pbbeeeeebbbbbbbbbe973ve973ve9780973ve973ve973qqqqqqqqqqgAB +fAAAAAAADbbbbbbbfu9tttttttttt5555555VVVVV9jqqqqqqqqqqqqqqqgAB+SAAAAAA888888 8888AAH5gAAAH19fX19fX19fX19fX1tttvxXbbbbbbbbbbbbbbbbbbbbbbb3ve973ve973vfqPve 973ve973ve96qqqqqqqqqgAB+zAAAAAAADbbbzzzbbbbbbbbbbbbbbbbbe973ve973ve9777VVVV VVVVVVVVVVVAAD+OAAAAAAADbbbbbbbf2W223nnnnnnnnnnnnnnnnnnnnnlVVVVX0tVVVVVVVVVV VVVVUAAPzwAAAAAAAbbbbbbbb91ttttttttttt555555VVVVV9iqqqqqqqqqqqqqqqgAB/DAAAAA AABttgA/3AAAAAAB82234ptttttttttttttttttttttt55VVVVV8qqqqqqqqqqqqqqqoAAfyIAAA AAAAbbbbzzzzzzzzzzzzzzzzzbbbbbbbbbb3ve973ve973vfoXve973ve973vVVVVVVVVVVUAAP1 IAAAAAAAbbbbbbbb+x2223nnnnnnnnnnnnnn17zzzzzzyqqqqr6WqqqqqqqqqqqqqqqAAH54AAAA AAANttttttt+62222222222288888qqoB9hAAAAAAADbbbbbbbfkdtttttttgAAAANttttttt+q2 222222222222222222+e+++/w3vvvvvvvvvtVVVVVVVVVVVQAA9AAAAAAABsAA/SgAAAAAbbbbbd 73ve9qqqqqqqqqqqqAAH3sAAAAAAANttttttt+o222222222wAAAA222222237/bbbVVVVVVUAAP pAAAAAAAA222222238RsAAAAAAAbbbd73ve973+n73ve973ve973ve973ve1QAA+iAAAAAAADAAH 8cAAAAAAAG2222222/U7bbbbbbbbbbbve973ve973ve9qveqqqqqqqqqqqqqqqAAHzgAAAAAAA22 2222238fttgAAAAAAbbbbe1VVVVVVVVVVQAA+mAAAAAAADbYAH6AAAAAAAANttttttt++2222999 999999999999999gAB9uAAAAAAADbbbbbbbfndtttttttttsAAAA222222237Xbbbbd73ve973ve 972oAAfYAAAAAAAA222222231e2wAAAAAAG2222222/L2222222222222222222299vm1VVVVVVV VVVVVVVQAA/CAAAAAAeeeeeeeeeeAAD9IAAAAAAAG22229999999999999999999qqqqqAAH3oAA AAAAANttttttt+n222wAAAAAA222223e97+/73ve973tVVVVVQAA+2gAAAAAABttsAP5YAAAAAAA Nttttttt+02222222222223vvtVVVVX2CqqqqqqqqqqqqqqqAAH1YAAAAAAAbbbbbbbb9xttttsA AAAA9999999999999999999qqqqqqqqqoAAfgwAAAAAAA2222wH6MAAAAAABtu973ve972qqqqqq qqqqoAAfeQAAAAADzzzzzzzwAAfnwAAAAAAA2222222373bbbbb3332qqqqAAH2wAAAAAAANtttt ttt+b2222wAAAAADbbbbbbd7+573ve973ve973ve973ve972qqqqqvr9VVVVVVVVVVVVVVUAAPx4 AAAAAAPPPPPAAB/twAAAAbbbbbbaqqqqqqqqqqqqqqqgAB9UAAAAAAAG2222222/YbbbbbbAAAAA BtttttvffffaqqqqqqqqgAB94AAAAAAADbbbbbB/NgAAAAAADd73ve973ve973993ve973ve9qqq qqgAB9rAAAAAADzzzzzwAAfmgAAAAAAA222222237Pbbbbbbbbve973ve97VVVVVfwlVVVVVVVVV VVVVVUAAPxwAAAAAAAbbbbbbbP1AAAAAAAD33332qqqqqqqqqqqqqgAB+CAAAAAAAeeeAAD/ZgAA AANttttttt3ve973ve97VVVVVVVVVVAAD7uAAAAAAAG2222222/S7bbbbbbAAAAAG2222222/ebd 73ve973tVVVVQAA+1AAAAAAABttttttj+VAAAAAAADbbbbbbbfsttttttttttttttvffffffaqq+ vVVVVVVVVVVVVVVVQAA/GgAAAAAABtttttttv5bbbbbbbbbbbbbbbbbbbbbbaqqqqqqqqqqqqqqo AAfgQAAAAAAA2222222364AAAAAAANtu973ve97VVVVVVVVVUAAPuwAAAAAAA8AAH54AAAAAAANt tttttt+72222223vvvvvvvtVQAA+0gAAAAAABtttttttvzO2222222wAAAAG2222222/Y7bd73ve 973ve973ve973ve9qqqqr67VVVVVVVVVVVVVVVAAD8YAAAAAAAGwAD+kAAAAAA22221VVVVVVVVV VVVVVAAD6kAAAAAAANttttttt+t222222222wAAAA2222222999999999qqqqqqoAAfdQAAAAAAA 222222236PYAAAAAAA22273ve973v73ve973ve973vaqqqoAAfaAAAAAAAAwAB/KAAAAAAABtttt tttv2G2222222222273ve97VVVVfXKqqqqqqqqqqqqqqoAAfiwAAAAAAA222222237bbbAAAAAAA 999999999qqqqqqqqqqqgAB9QAAAAAAAG2wAP0QAAAAABtttt3ve973ve973vaqqqqqqqqoAAfdA AAAAAAA222222236LbbbbbbbbbbAAAANttttttt+622223e973tVVVQAA+zgAAAAAABtttttttvy +2wAAAAAAG2222222/X7bbbbbbbbbbbbbbb33333333332+hqqqqqqqqqqqqqqqgAB+KAAAAAA88 88888888AAH9GAAABtttttttttttVVVVVVVVVVVVVVAAD6gAAAAAAANttttttt+s222wAAAAAA22 2223e972qqqqqqqqoAAfcwAAAAAAA222AH50AAAAAAANttttttt+522222222999999999998AAP swAAAAAPPPPPPPPPPPAAB/JAAAAAAABtttttttv122222273ve973ve973ve973tVVVfQVVVVVVV VVVVVVVVQAA/EgAAAAAABttttgP6IAAAAAABtu1VVVVVVVVVVVVVAAD8AAAAAAAeeeeeeeeAAD9C AAAAAAAG2222222/r97777777777777VVVVAAD7kAAAAAAAG2222222/Q7bbbYAAAAABttttttu9 /ed73ve973ve973vaqqoAAfZQAAAAAAA2222AfyIAAAAAAAbbbbbbbb9bttttttttttttttt3vaq qr63VVVVVVVVVVVVVVVAAD8QAAAAAAAG2222222/a7bbbbbAAAAABt77777777777777VVVVVVVV UAAPv4AAAAAAAbbbbbYP54AAAAAAAbve973ve973ve/2ve1VVVVVVVQAA+4gAAAAAB555554AAP5 kAAAAAAANttttttt+42222222272qqoAAfZAAAAAAAA222222235TbbbbbAAAAAA222222236zbb bbbbbbbbbbbbbbb333333333+I99999qqqqqqqqqqqqqoAAfhwAAAAAAHnngAA/TgAAAANtttttt t3vaqqqqqqqqqqqqoAAffgAAAAAAA22222223z9ttttttgAAAADbbbbbbbf1u3aqqqqqqqgAB9wA AAAAAADbbbbbbH5wAAAAAAAN3ve973ve973v9T3ve973ve973ve972qqgAB9GAAAAAAB5554AAP5 AAAAAAAANttttttt+r22222222273ve973ve973ve1VV9aqqqqqqqqqqqqqqqgAB+GAAAAAAADbb bbbbbftAAAAAAAA22qqqqqqqqqqqqqAAH04AAAAAAA8AAH3AAAAAAADbbbbbbbf1m23vvvvvvvvv vvvvvvvtVQAA+3gAAAAAABtttttttvz+2222222wAAAAG2222222/qdtu973ve973ve972qqAAH2 MAAAAAAANttttttt/HgAAAAAABtttttttvzNtttttttttttttttttva/V+3t7c5yq+tVVVVVVVVV VVVVVVQAB6/CgAAAAAABtttttttv2e22222wAAAAAbbb7+++/a223lVVVVVVVVVVVAAD6cAA9AAA AANgAH86AAAAAAAG2222222/g7bb7+++/a222+++++++1VVVAAD7eAAAAB6AAG2222222/Pbbbbb AAAAAAbbbbbbbd/dd73ve973ve973ve9734q9+c5znOVAAD7GAAAAAAAAAA/JAAAAAB555555555 554AAPzAAAA22222222vmXzOc5znOVfWaqqqqqqqqqqqqqqoAAegAAAAAAA22222wfpgAAAAAABu 973vfir35znOc5VVVVVVVVVVVAAD76AAPQAAAAG2222222/U7bbbbbbbbYAAAAbbbbbbbb+Bttt9 /33t7c5znPb25zntzntV9Y5znOc5VVVX8JVUAAPpQAAAAHoDzzzzzzzwAAfmwAAAAAAA22222223 7bbbbbbbbve973vfir35znOc5QAA+xAAAAAAAB87bbbbbbb8iAAAAAAAG2222222/Vbbbbbbbbbb bbbbbbbbbfPq9+c5znOV9ZqqqqqqqqqqqqqqqgAB8vQAAAAAAA222222238htttttgAAAAAbbbb7 +++/a285zlVVVVVVVVVVQAA++AAB6AAAABgAD+cAAAAAAADbbbbbbbfv9ttt9/ffftbbbf/+YoKy TKayKlZ7GAu+Qv/////////////////////////////////////////////CCIGAAAAAAAAAAAAA AAAAAGCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCAAAAAAAAAAAAAAAAAAAAAAAAAAAHwABw4AMw987 ZpbNm2zbZJs2zS2bNtm2yWZtts22bNs0tmzbZtslmbbbNmU2zSbNttm2zNtm22zZlNs22zNttm2z Ntm2yQAAGbAAAMyslmDbNtmbbNtksymS2zNtm2yWZtts22bNs22SzNttm2x3DuS2bNtm2zZtm22z Zts0ts2bbbNtswbbbNm2zS2wAAAAAAAAAAAAAAAAAAAA2bbbNLMG2yWbbNtts2bbbNtswbbJZts0 ts2bbbNLMptts2bbNLbNm222SzbZttmDbbZs22aW2bFbZpZlNtkszbbZts2bZpbNm2zbZLM222bM ikltmzRSS2NJLbNmiklsySm2RSSU2ZLbJbGkltmzRSRSSSSikkikkps0UktjSS2zZoqyWZts2yWZ tsM1SAAAAAAAAAAAAaGjTR6gAaaGjRo0AZPUaPUaZGTJ6j1Gj0R6Rk0wm1NMP1FG0nhGCnkaNMj1 J+lP1MT1GTCZMmgnpByqMJgmTJgI0yaaYJgJpkyaMmCMT0CaZMRkYQyZGjCGTEaZMmEaZNDEZNMQ YAmQBghphAZGmjRpgmhkYajJ6f+/1VVR//6qqRCqfqmAATAExGAmAIwmBGmD1E0wmAAAjAAAIwAJ pgExNMBMAAAATAAEYmmTJgBGJkwB//+1VUqP//VVUiX/qqqb9VIE9GKepo0GRoyab/KUJkyaNMhk 000aNAAABoAAAAADQaDRoGjTQ0ehMmP//9T3qVVSqAAAAAAAAAAAAS/1VVN+qgGgNqeTU/SNGRoe 0hE9DJtJppPE1P1J4aMiek0TaZJ5J5Gp5MJlPTKeTU3qZ71SoAA0AAAB/7/9qVSqiAAAYho0AAAA AA0AyVVU/VSANAAAAD/JUAAAAH/qVA0aaDTTJkzQgAGmQA0Nv2qoTyAmmRpggGjQ///96qqelVUA AAAAAAAAAA//VKgOT/5Onj6CgoUKJGkS/pMnoqNRSUqmmVK6eoFqf2N/B6pauX1ZFZWsGNcyZtGt e2b2DhzYurKztLX+u7b/a7X7DY7LZ7Ta7Z52+43L1ut297x83u+Jb/gcHhcPicbj8jkvvKfuXzOa /87nwHQ6MD0unBdTq9br9js9rtwcJ3Cfd70L3/AU8PihvHDxHk8sTFeaLjPOV9HpLer1xvs9peP9 3vMSHw+MjJfKT+cpKy0v9Jgz9Zn7TU3OToTRv7/ieOT/5Onj6CgoUKJGkS/pMnoqNRSUqmmVK6eo FqRln8Hqlq5fVkVlawY1zJm0a17ZvYOHNi6srO0tf67wAAAAVfsAAAAAAAAAFX6wAAAAAAAAAqwA AAAAAAAAVfsAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAA VYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAA AAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAA AAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABWAAAA AAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAA AAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKs AAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAA VYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAA AAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAA AAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAA AAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAA AAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFW AAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAABuHh4eHh4eH h4QAAAAAAAGMYgAAAAAAAAAxjEAAAAAAAAAGMYgAAAAAAAAAxjGMYxjGMYxjAAAAAAAAVYAAAAAA AAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAA AAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAA AAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVg AAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAAC rAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAA ACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAA AAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAA AAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAA AAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABWAAAAAAAAACrAAAAAAAAABVg AAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAAC rAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAA ACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAA AAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAA AAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAA AAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqw AAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAAB VgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAA ACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAA AAACrAAAAAAAAABWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAA AAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAA AAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqw AAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAAB VgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAA ACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAA AAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAA AAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAA AAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVY AAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABWAAAAAAAAACrAAAAAAAAAB VgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAA ACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAA AAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAA AAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAA AAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVY AAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAA qwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAA ABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAA AAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAABAAAAAAAAABjGIAAAAAAAAAMYxAA AAAAAAABjGIAAAAAAAAAMYxjAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAA AAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAA AAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAA AAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgA AAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABV gAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAA CrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAA AAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAA AAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAA AAAAAAKsAAAAAAAAAFYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgA AAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABV gAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAA CrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAA AAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAA AAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAA AAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwA AAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABV gAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAA BVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFYAAAAAAAAAKsAAAAAAA AAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAA AAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAA AAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwA AAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABV gAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAA BVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAA AACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAA AAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAA AAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYA AAAAAAAAKsAAAAAAAAAFYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABV gAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAA BVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAA AACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAA AAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAA AAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYA AAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAABVgAAAAAAAAAq wAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAA BVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAA AABVgAAAAAAABjGMYxjGMQAAAAAAAAAYxiAAAAAAAAADGMQAAAAAAAAAYxiAAAAAAAABw8PDw8IA AAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAF WAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAA AKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAA AAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAA AAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAA AAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrA AAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAC rAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAA AFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKwAAAAAA AAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAA AAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAA AAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrA AAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAC rAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAA AFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAVYAAAAAA AAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVYAAAA AAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAA AAAAAAAVYAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAACrAAAAAAAAACrAAAAAAAAABVg AAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAC rAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAfc4vE4ODi8Tg4OLxODg4vE4ODi8Tgnz6 T59J8+s+fSfPpPjpPs9J9npPs9J9npPs9J9npPs9J9npPs9J9npPs9J9nrJ8+k+fSfPpPn0nz6T5 9J8+k+fSfPpPn0nz6T59J8+k+fSfPrPn0nz6T59J8+k+fSfPpPn0nz6T59J8+k+fSfPpPn0nz6T5 9J8+s+fSfPpPn0nz6T59J8+k+fSfPpPn0nz6T59J8+k+fSfPpPn0nz6z59J8+k+Ok+Ok+Ok+Ok// ek+10n2uk+10n2uk+10k+10n2usnx0nx0nx0nx0nx1k+Ok+Ok+Ok+Ok+Ok+Ok+Ok+Ok+Os+Ok+Ok +Ok+Ok+Ok+Ok+Ok+Ok+Ok+Ok+Ok+Ok+Ok+Ok+Ok+Os+Ok+Ok+Ok+Ok+Ok+Ok+Ok+Ok+Ok+Ok+Ok+ Ok+Ok+Ok+Ok+Os+Ok+Ok+Ok+Ok+Ok+Ok//ek+10n2uk+10n2uk+10n2uk+10n2usnx0nx0nx0nx0 nx0nx0nx0nx0nx0nx0nx0nx0nx0nx0nx1nx0nx0nx0nx0nx0nx0nx0nx0nx0nx0nx0nx0nx0nx0n x0nx1nx0nx1+v/+ktsltktn4OSS2SW2Wz8T9n7v/j/cfeP0z/L/G/wv6n/n/j/vn61/p/1H4D6lR fCZsUxAaJZI9PULZTr68iYg9qwmoXdMzUMSbHIniuUBV+s0cbAapNHwWxUSHYeVMlCbtXKQpIX6e LiDTPkfR5yLf1xv0wJE91GB2O7TKgME2iOSKNk0rEOFBmLdKpstaCmy5MY4YKDnZGHWoPnFL0MuV ISfX11qabjmNGakGSy2tq+nPSzepkDLhYjmnNUmNOl6g5Z1lMftWNQidsxkxxqOoPtlqlC3Xq0tg QLROK0alcsR1diyXVLpp4X9s14/+vA8vM/7/vm//eN4bysz4vmZrycz5uM15V5jGbqs3VVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVmMxmL2eXLky5MmbyZMmXLlyZMuTJky5MuST9B62WyW93WW39UklltnSWX7aS2yW2S2db1lkts7 r0kkk6S22yW2WzpPw/9z/9a4nPOyh6+vUPQ4N8ikmK4PnT5HE+qky76XVZ5/MC6SBklmr60qt2UG ZI3ELNsXyGNtOFEz7fklUFi/xqO06Uemd/BQ8wnyUvb1KqyXhexeGSmRuR5ZwfmRhtdAFjhEF7Tz Ds++hZE5FI1KSidvETFI5i5pVZFjQtqXnhnZ0f/SdAuh5ZFVxhlLWFiqdh7J1RXe77qWcdPq2smf FbS6EawmUo7mdolzr8UpGWRIkVvAAQQAH4ABAAEEAB4E+Xd8vl8gH2QAAAAAG2222wAA8AADwwAA AABVVVVV9pVV0qoAAAAANvq888+Vslv4Lp8u75fL5AAAAAAFttoA86AAAAHhgAAqqqqq95VVVVVV VdKqAAA222222239vt555+wySSSeebbbbbbbbbbAAD5oAAAAAAAKqqqqvZUAAAAAB7ANttpJJJJ+ Zkkkkkkkkk+Y+O7u7uAttAB5EAAAAAAAKqqqqvWVVVVVVVVUAAAbbbb6bbbb8dtttttttJJJJJJJ JJJ9B8d3d3cB90AAAAAAAC2222222+kAAAAAAACoAD8SA9gAAAAe973ve96SfMfHd3d3AAAAG222 22AAHnAAAAAAAAqqqqq93VVVQAHsAAAG2222222/QST5j47u7u4AAAW222220+ZAAAAAAACAAPwQ AAAAAA9gNttttttt+Y22222222231eeedvnOc5zm22AAHyIAAAAAAAVVVVVerqqqAAAAAAbbbbfT bbb7rbbbbbbbbbbbbbbbbbfrltltn19fl8vl3d8h9j3d3dwPuYAAABtttttttttsAAPpAAAAAAAA qqqqq+JQHsD7oAAAABtt9Xh8d3d3cAAAAABbaADzYAAAAAAAVVVVVe6qqqqqqqq6QAABtttttttv z2231eeefK2285tttttttttsAAPmAAAAAAAAqqqqq+sAAAAAAD2BttJJJJJPzEkkkkkkkkknzHx3 d3dwWgAPIAAAAAAABVVVVV4dVVVVVVVQAAAbbbbb6bbb7nbbbbbaSSSSSSSSSSST6D47u7u4PuQA AAAAAAW2222209GAAAAAAAEAAf0QA9gAAAHve973ve96SSfMfHd3d3AAABttttttgAB8+AAAAAAA FVVVVXuaqqgAA9gAADbbbbbbSfn5JJ8x8d3d3cAAAtttttoeWAAAAAAAHuAAP4wAAAAAAHsG2222 222/L7bbbbbbbbbbvdt2+c5znObYAAePAAAAAAACqqqqrwqqoAAAAAAbbbbbfSST8pJJJJJJJJJJ JJJJJJJJPoPju7u7h9xAAAAAAA22AAHogAAAAAAAqqqqq+HVVVdKqoAAAANttvq888+Vttt8888A AAAAtttttttv4a20AAAAAACqqgH8qAAAAewAA973pJJJJJJJ+ekkk+Y+O7u7uAA222AAHy4AAAAA AAVVVVVewqqqqqgAAAD2G2222222/q9tpJJJJJJJJPmPju7u7i2222222/d7QAAAAAACqoAfwYAA AAAAAbbbbbb6bb8bttttttttttttttJJJJJ9B8d3d3cfcAAAAG2222222222AAHoQAAAAAAAqqqq q+FAB7AAAAABttpPmPju7u7gAAAABbQAPnQAAAAAAAqqqqq9xVVVVVVVVHsAABtttttttvzu222+ rzzz5XnOc5zbbbbbbbbAAD5YAAAAAAAKqqqqvv4AAAAAAD2NtJJJJJJ+XkkkkkkkkkkknzHx3d3d ygAHjgAAAAAAAqqqqq9TVVVVVVVQAAANtttttvpt+M222220kkkkkkkkkkkkkn0Hx3d3dz7EAAAA AAALbbbbbR+PAAAAAAAAAAfz4AHsAAAPe973ve973pJJJPmPju7u7gAANttttttgAB5oAAAAAAAK qqqqvb1VUAAAewAANtttttpJ+dkkkk+Y+O7u7uAAC22220HlQAAAAAAD39wAB/FgAAAAAAHs2222 22235bbbbbbbbbbbs7Ozs73bdvnOc5zgAA+QAAAAAAACqqqqrwaqgAAAAAA22222kn5Of0Ekkkkk kkkkkkkkkkkkkkn0Hx3d3d3wAAAAAADbbAAD6MAAAAAAAKqqqqvg1VVVXSoAAAAG2222+rzzz5W2 20AAAABbbbbbbbfwltAAAAAAAVVQB/JAAAAA9gAe973pJJJJJJJ+ckkkknzHx3d3dwBtttgAB5QA AAAAAAKqqqqvqqqqqqgAAAAPbbbbbbbbfldtJJJJJJJJJJJ8x8d3d3cAAPtgAAAAAAAttAB4IAAA AAAAVVVVV08aqqqqqqqqve973ve973ve99D63d3d3AAAAbbbbbbbbbbbAAD0AAAAAAAAVVVVVfAA APYAAAABttJJJ8x8d3d3cAAAABaAA+cAAAAAAACqqqqr21VVVVVVVQHsAANttttttt/Y7bbbbfV5 t2+c5znObbbbbbbAAD5UAAAAAAAKqqqqffQAAAAAAAAAH5UAAAAeefbSSSfL5AAH2oAAAAA22222 2wAA9OAAAAAAAFVVVVXSqqoAAAAAfX559tbbbfPPPPPAAAAAABbbbbbQ+iAAAAAAAHuAAP5wAAew AAPe973ve973vSSSSST5j47u7u4AA2222222wAA+bAAAAAAACqqqqr6+qqAAAA9gADbbbbbSSfby SSSST5j47u7u4ABbbbbQPlAAAAAAAHv7+4AA/igAAAAAAA+m22222235TbbbbbbbbbSSSSfQfHd3 d3AAPtQAAAAAAAtttttttv5G20AAAAAACqqgHt7AAAAAAA99D63d3d3AAAAAAG22wAA8+AAAAAAA FVVVVXv6qqqqr2AAAABtttttt9Xnnnytvd3AAAABbbbbbbbfwVoAAAAAABVUAP48AAAAA9gHve97 0kkkkkkk/tZJJJJJPmPju7u7g2222AAHkwAAAAAAAqqqqq+oqqqqoAAAAA3022222239RtJJJJJJ JJJJJJJ9B8d3d3cAB9oAAAAAAAFtAA9MAAAAAAAFVVVVXdulVVVVVVVe973ve973ve973ve+h9bu 7u7gAADbbbbbbbbbbbAAD6EAAAAAAAKqqqqvxAAAPYAAAANtJJJJJ8x8d3d3cAAAAKAAeYAAAAAA ACqqqqr2tVVVVVVVAB7AAbbbbbbbb+u222220nzHx3d3dwALbbbbbbb96ttttoAAAAACqqqqP4kA AAAAAANPyckkkkkn5aSSSSSSSSSSSSSSfQfHd3d3AA+zAAAAANttttttgAB6UAAAAAAAKqqqqvjV 0qoAAAAAB9fnn21ttt88AAAAAAC22220HngAAAAAAD39wAB+HAAA9gAHve973ve973vSSSSSSSfM fHd3d3ABtttttttsAAPLgAAAAAABVVVVV7SqoAAAAPYAG22220kk/NSSSSSSSfMfHd3d3ABbbbaA +SAAAAAAA9/f39wAB97AAAAAAADbfTbbbbbfktttttttttpJJJJJPoPju7u7gA+7AAAAAAABbbbb bbbfyFtAAAAAAAVVQB+KHsAAAAAA973vfQ+t3d3dwAAAAAbbbYAAd+AAAAAAAFVVVVXvaqqqqg9g AAADbbbbbbbfV5558d3d3cAAAAtttttttv16AAAAAAAKqAD8KAAAAAD2ADbbbbbbbfnNttttttt9 Xnnnytttu2222AAHkgAAAAAAAqqqqq9bVVVVAAAAADbb6bbbbbfkdttttttttttttttt9fnnnykt ln/bZJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSS d0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3 SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJ JJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd1kk kndbbbe6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSST ukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk9evXr16 9evX3f169evXr169evXrbbbbbbbbbbbbbbbbYAAfkAAAAAAAAttAB8UPGAAAAAHv7+/v7+/v7/U9 evXytttv3bpJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJ JJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6SSSTukkk k7pJJJO6SSSTukkkk7pJJJO6SSSTukkkk7pJJJO6ySSTutttvdJJJJ3SSSSd0kkkndJJJJ3SSSSd 0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3S SSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJ JJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkk ndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3SSSSd0kkkndJJJJ3WSSSf YfYfLu+Xd32Hy+Xd3y+W2222222222222222222wAA/EgAAADbbbbbbbbbAAD3wAAB0AAAAVVVVV Xe9eu+O7u7uAAAAtttttttv0oAAAAAAAqoAPwgAAAAAHsANttttttt+b22222222+rzzz5W22822 22AAHeAAAAAAABVVVVV4lVVVUAAAAANtt9Ntttt+Q0kkkkkkkkkkkkkkk+g+O7u7uAPsgAAAAAAA tAAeAAAAAAAAFVVVVXi1V0qqqqqqqqqqqqquzvdt2+c5znObbbbbbbbbbbbbbbbbbbYAAedAAAAA AACqqqqn4YAAAewAAAG0kkkkkk/RT5j47u7u4AAAAAA70AAAAAAAKqqqqvZ1VVVVVVQAA9gDbbbb bbbfmtttttpJJJ8x8d8vl+S+Xy+XfLu75fYfLu+XdwC22220HeAAAAAAAHv7gAfeT+GAAAAAAADb bb6bbbbfj9tttttttttpJJJJJJ9B8d3d3cA/RgAAAAAAAtttttttv4+22gAAAAAAqqqA/pAPYAAA AAD3vSfMfHd3d3AAAAADbbAAD6AAAAAAAAKqqqqveVVVVVUD2AAABtttttttv7fbzzz8B8vl8vl8 vl8vkAAAFttttttt+/20AAAAAABVVAH24AAAAAB7ANttttttt+Z222222222+rzzz5W228222AAH kQAAAAAAAqqqqq9ZVVVVUAAAAA22230222347bSSSSSSSSSSSSSSST6D47u7u4D7oAAAAAAAFtoA PSAAAAAAABVVVVV+YqqulVVVVVXve973ve973ve973vST5j47u7u4AAbbbbbbbbbbbAADzgAAAAA AAVVVVVe7AAAB7AAABtttttttv7bbfV5558rZLP0eSWW2dJbLPPPPPPNttttttsAAPmgAAAAAAAq qqqq9lVVAAAAAHsBtttttpJPzMkkk+3kkkkknzHx3d3dwLbbbaB8iAAAAAAA9/f3AAH3oAAAAAAA Ntttvpttt91tttttttttpJJJJJJJPoPju7u7gfcwAAAAAAAtttttttv4620AAAAAACqqgH9GAewA AAAA973pJPmPju7u7gAAAANttgAB5sAAAAAAAKqqqqvdVVVVVQB7AAADbbbbbbbfnttvmPju7u7g AAC2222222/frQAAAAAACqoAfgQAAAAAA9gbbbbbbbb+s2222222222+rzzz5W3nOc22AAHkAAAA AAAAqqqqq8OqqqqgAAAADbbbbfTbbfc7SSSSSSSSSSSSSSSSSfQfHd3d3B9yAAAAAAAC2gAejAAA AAAACqqqqr7OqqrpVVVVUAAANtt9Xnnn6XJLLbPu1ttt88AAAAAFttttttt/D0AAAAAAAVUAH8uA AAA9gAHve973pJP7KSSSST8/JJPmPju7u7gA2222wAA8sAAAAAAAFVVVVXsaqqqoAAAAPYNttttt tt+X0kkkkkkkkknzHx3d3dwtttttttvjwAAAAAAAqAA+8gAAAAAABttttt9Ntv6fbbbbbbbbbbbb SSSSSSfQfHd3d3D7iAAAG22222222222wAA9EAAAAAAAFVVVVP6EAPYAAAAAG0knzHx3d3dwAAAA AAAD54AAAAAAAKqqqqvsKqqqqqqoPYAABtttttttv7Tbbb6vPPPju7u7gAALbbbbbbb99ttttAAA AAAKqqqh+AAAAAAAA9htttttttv6vbbbbbbbbbbb6vPPPlZbJ+s9rtdrna5zna+/drna7XOdrYAA ePAAAAAAACqqqqrwqgAAAAAAG222kk/JyT8pJJJJ+Wkkkkkkkkkkkkkkn0Hx3d3dx9wAAAAAANtt tgAB6EAAAAAAAKqqqqvhVVVV0oAAAAA22231eeefK223gAAAABbbbbbbbfwoAAAAAAAVQAP5QAAA AewAe973ve9JJJJJJJP7aSSSfMfHd3d3ANttttgAB8sAAAAAAAFVVVVX1dVVVQAAAAD2Nttttttt /VSSSSSSSSSSST5j47u7u5bbbbbba8cAAAAAAAFAAP4IAAAAAAANtttttvpt+M22222222222222 2222231+eefKWyT/elts/7+tttvdbbaB4eACCAEEEtwBBAAAIG5BCEIQhCEIQhCEIQhCEIQhCEIQ /V9X1fV9X1fV9X1fV9X1fV9X1fVtttttttvxu2222222222222222222222wAA/lgAP58AAAAAW2 22/P6vq+r47u7u4AAAAAttttAeaAAAAAAA9/f39wAB/JgAAAB7AAA222222239ntttt9Xnnnyttv ObbbbbbbbAADyoAAAAAAAVVVVVevqgAAAAAA9m2220kkk/rZJJJJJJJJJJJPmPju7u7rbbQB8gAA AAAAAFVVVVXg1VVVVVVVVQAAG222222+m/F7bbbbbbbSSSSSSSSSSSSfQfHd3d3fAAAAAAAAW222 22238XQAAAAAABVQAfzwAD2AAAAe973vekkkknzHx3d3dwAAAbbbbYAAfjgAAAAAAAqqqqq/K1VV VQAAewAAbbbbbbbb+y0kkknzHx3d3dwAAtttttttvlAAAAAAAAqAA+/AAAAAAAD2222222235Xbb bbbbbbbbbbfMfHd3d3AAD7YAAANtttttttttttgAB4IAAAAAAAVVVVV7fiwAAAAAAfX559tbe7uA AAAAAAAAAegAAAAAAACqqqqr4FVVVVdKqoAAADbbbbb6vPPPlbbbfPPPAAAAC2222222/g7bbbQA AAAACqqqofyIAAAAHsAAJJJJJJJJ+bkkkkk+Y+O7u7uAA2AAHyoAAAAAAAVVVVVfkqqqqqqqAAAA AAB+VAPe973ve973ve973vH1u7vl3cAAfagAAAAAABbbbbaD04AAAAAAB7+4AA9gAAAAD3ve973v eAAAAAADbbbAADz4AAAAAAAVVVVVe/qqqqqAAAAAbbbbbbzzzzzzzzbbbbbbbbbbbYAAeZAAAAAA ACqqqqn8eAAAAAAAG0kkkkkk+3kkkkkgAAW2220DyYAAAAAAD39/cAAffAAAAAAAA222222235Tb bbbbbbbbSSSSAAB9oAAAA2222222222wAA9MAAAAAAAFVVVVXdgAAAAAAPPPPPPPPAAAAAAC2222 20fQgAAAAAAAAAPxAAAAAAe973ve973vSSSSSSAAAAG22AAHmAAAAAAAAqqqqq9rVVVVVQAAAANt tttttt/X7baSSSAAC2222222/erbbbbbQAAAAAqqqqq9cAAAAAAAG20kkkkk/qZJJJJJJJJJJJJJ AAB9mAAAAAAAbAAD0oAAAAAAAVVVVVfGqqqqqqqqqqqqqqrbbbbbbbbbbbbbbbbbbbbbbAADzwAA AAAAAVVVVVe+qAAAAAAAbbbaSSQAAAAC22222215cAAAAAAAKAAfxoAAAAAHve973ve9JJJJJJJP 7SSSSSSSAA2wAA+SAAAAAAACqqqqr6eqqqqqqAAAAG2222222/J7bbaSSSSSSSSSSQAA+7AAAAAA ABbbbbbbbfyFAAAAAAAFVAB+KAAAAAAHve97wAAAAAAAAAO/AAAAAAACqqqqr3tVVVVVVUAAABtt ttttt555555555555ttttttttgAB3wAAAAAAAVVVVVflKqAAAAAABttttpJJPzUkkkkkkgAC2222 222/pwAAAAAAAVQAP4gAAAAAAANttttttt+S222222222222222888+3kkn2/WSTukt7pbb3S23u ltvdZZO6SXultvdLbe6W291ks7pLO6W290tt7pbb3WWzukk7pbb3S23ultvdZJe6S90tt7pbb3S2 3ussvdJO6W290tt7pbb3WS3uk7pbb3S23ultvdZbenS23ultvdLbe6W2907rZb3S23ultvdLbe6X utsvdLbe6W290tt7pZ3WyXultvdLbe6W290t7rbZ3S23ultvdLbe6WTutlndLbe6W290tt7pbO62 yd0tt7pbb3S23ull7rZJ3S23ultvdLbe6W3utt7pbb3S23ultvdLJO62XultvdLbe6W290tk7rbO 6W290tt7pbb3Syzutk7pbb3S23ultvdLbO6290tt7pbb3S23ulkvdbO6W290tt7pbb3S2Xut7pbb 3S23ultvdLLe690tt7pbb3S23ultvdLbe6W290tt7pbb3XullvdLbe6W290tt7re6Wy90tt7pbb3 S23utndLJe6W290tt7pbb3W3ultndLbe6W290tt7rZO6WWd0tt7pbb3S23uts7pbJ3S23ultvdLb e62XulkndLbe6W290tt7rbe6W3ultvdLbe6W291sk7pZe6W290tt7pbb3W2Tuls7pbb3S23ultvd bLO6WTultvdLbe6W291ts7pb3S23ultvdLbe62S90s7pbb3S23ultvdbZe6XultvdLbe6W291st7 p3S23ultvdLbe6W29OstvdLbe6W290tt7pO6yW90tt7pbb3S23ukndZZe6W290tt7pbb3SXuskvd Lbe6W290tt7pJO6y2d0tt7pbb3S23uks7rJZ3S23ultvdLbe6SXussndLbe6W290tt7pLe6ySd0t t7pbb3S23ukkndZb3S23ultvdLbe6Syd1kvdLbe6W290tt7pJZ3WWd0tt7pbb3S23uktndZJ3S23 ultvdLbe6SS91l7pbb3S23ultvdJZe6yd0tt7pbb3S23uklvdZ3S23ultvdLbe6S293dLbe6W290 tt7pbb3d0lt7pbb3S23ultvdZ3SS3ultvdLbe6W291k7pLL3S23ultvdLbe6y90kl7pbb3S23ult vdZJ3SWzultvdLbe6W291lndJLO6W290tt7pbb3WS90lk7pbb3S23ultvdZb3SSTultvdLbe6W29 1kk7pLe6W290tt7pbb3WWTukl7pbb3S23ultvdZLO6SzultvdLbe6W291ls7pJO6W290tt7pbb3W SXukvdLbe6W290tt7rLL3STultvdLbe6W291kt7pO6W290tt7pbb3WW3p0tt7pbb3S23ultvdO62 W90tt7pbb3S23ul7rbL3S23ultvdLbe6Wd1sl7pbb3S23ultvdLe622d0tt7pbb3S23ulk7rZZ3S 23ultvdLbe6WzutsndLbe6W290tt7pZe62Sd0tt7pbb3S23ult7rbe6W290tt7pbb3SyTutl7pbb 3S23ultvdLZO62zultvdLbe6W290ss7rZO6W290tt7pbb3S2zutvdLbe6W290tt7pZL9v1s+26W2 90tt7pbb3S2Xut7pbb3S23ultvdLLe690tt7pbb3S23ultvdLbe6W290tt7pbb3XullvdLbe6W29 0tt7re6Wy90tt7pbb3S23utndLJe6W290tt7pbb3W3ultndLbe6W290tt7rZO6WWd0tt7pbb3S23 uts7pbJ3S23ultvdLbe62XulkndLbe6W290tt7rbe6W3ultvdLbe6W291sk7pZe6W290tt7pbb3W 2Tuls7pbb3S23ultvdbLO6WTultvdLbe6W291ts7pb3S23ultvdLbe62S90s7pbb3S23ultvdbZe 6XultvdLbe6W291st7p3S23ultvdLbe6W29OstvdLbe6W290tt7pO6yW90tt7pbb3S23ukndZZe6 W290tt7pbb3SXuskvdLbe6W290tt7pJO6y2d0tt7pbb3S23uks7rJZ3S23ultvdLbe6SXussndLb e6W290tt7pLe6ySd0tt7pbb3S23ukkndZb3S23ultvdLbe6Syd1kvdLbe6W290tt7pJZ3WWd0tt7 pbb3S23uktndZJ3S23ultvdLbe6SS91l7pbb3S23ultvdJZe6yd0tt7pbb3S23uklvdZ3S23ultv dLbe6S293dLbe6W290tt7pbb3d0lt7pbb3S23ultvdZ3SS3ultvdLbe6W291k7pLL3S23ultvdLb e6y90kl7pbb3S23ultvdZJ3SWzultvdLbe6W291lndJLO6W290tt7pbb3WS90lk7pbb3S23ultvd Zb3SSTultvdLbe6W291kk7pLe6W290tt7pbb3WWTukl7pbb3S23ultvdZLO6SzultvdLbe6W291l s7pJO6W290tt7pbb3WSXukvdLbe6W290tt7rLL3STultvdLbe6W291kt7pO6W290tt7pbb3WW3p0 tt7pbb3S23ultvdO62W90tt7pbb3S23ul7rbL3S23ultvdLbe6Wd1sl7pbb3S23ultvdLe622d0t t7pbb3S23ulk7rZZ3S23ultvdLbe6WzutsndLbe6W290tt7pZe62Sd0tt7pbb3S23ult7rbe6W29 0tt7pbb3SyTutl7pbb3S23ultvdLZO62zultvdLbe6W290ss7rZO6W290tt7pbb3S2zutvdLbe6W 290tt7pZL3WzultvdLbe6W290tl7re6W290tt7pbb3Sy3uvdLbe6W290tt7pbb3S23ultvdLbe6W 2917pZb3S23ultvdLbe63ulsvdLbe6W290tt7rZ3SyXultvdLbe6W291t7pbZ3S23ultvdLbe62T ullndLbe6W290tt7rbO6Wyd0tt7pbb3S23utl7pZJ3S23ultvdLbe623ult7pbb3S23ultvdbJO6 WXultvdLbe6W291tk7pbO6W290tt7pbb3Wyzulk7pbb3S23ultvdbbO6W90tt7pbb3S23utkvdLO 6W290tt7pbb3W2Xul7pbb3S23ultvdbLe6d0tt7pbb3S23ultvTrLb3S23ultvdLbe6TuslvdLbe 6W290tt7pJ3WWXultvdLbe6W290l7rJL3S23ultvdLbe6STustndLbe6W290tt7pLO6yWd0tt7pb b3S23ukl7rLJ3S23ultvdLbe6S3uskndLbe6W290tt7pJJ3WW90tt7pbb3S23uksndZL3S23ultv dLbe6SWd1lndLbe6W290tt7pLZ3WSd0tt7pbb3S23ukkvdZe6W290tt7pbb3SWXusndLbe6W290t t7pJb3Wd0tt7pbb3S23uktvd3S23ultvdLbe6W293dJbe6W290tt7pbb3Wd0kt7pbb3Tu7vsPsPl 3dwAfaAAAABttttttttsAAPTADwvD9WAAAAAFVVVVX2tUAAAAAAB55555554AAAAAC2222222+dA AAAAAACoAD8MAAAAAA973ve970kkkkkkkAAAANgAB3AAAAAAAAqqqqq+tqqqqqqoAAAA22222223 5zbbbbs7Ozs7Ozs222222AAHeAAAAAAABVVVVV4lQAAAAAADbbbSSSSf08kkkkkkkkkkkkkkkAA+ yAAAAAAACgAHgAAAAAAABVVVVV4tVVVVVVVVVVVVVVVtttttttttttttttttttttgAB50AAAAAAA KqqqqvsaqgAAAAAA22222kkkAAAAFttttttt+dAAAAAAAFVAB+DAAAAAAADbbbbbbbfm9ttttttt vPPPwVlkt52ttttgAB3gAAAAAAAVVVV6qr6aqqqoAAAAANttttttt+QkkkkkkkkkkkkkkkkH73wB 9kAAAAAAAFtttoDwAAeEAAAAB7+/v7gAD+kAAAAA973ve973ve973oAAAAANtttsAAPoAAAAAAAA qqqqq95VVVVAAAAADbbbbbbbf3GAAAALbbbbbbb9/ttttAAAAAAKqqqh9uAAAAAAAEkkkkkkk/sZ JJJJJJJIAFtttAPIgAAAAAA9/f39/cAAfwoAAAAAAAbbbbbbbb8fttttttttpJJJJJJJAA+6AAAA 22222222222wAA9IAAAAAAAFVVVVX4kAAAAAAANvAAAAAAAtttttB5wAAAAAAA9/cAAfzAAAAAB7 3ve973ve970kkkkkkk/QyAAAbbbYAAfMgAAAAAABVVVVV+TqqqqqAAAAAbbbbbbbb8ztpJJJJJJI ALbbbbbbb94tttttAAAAAAqqqqp96AAAAAAADaSSSSSSf0skkkkkkkkkkkkkkkkgA+5gAAAAAAbb AAD6QAAAAAAAKqqqqviVVVVVVVVVVVVVVVXZ2dm2222222222222222222wAA82AAAAAAAFVVVVX uoAAAAAAAbbaSSSST9BJAAAALbbbbbR8wAAAAAAAAAA/AgAAAAAABtttttttvzG2222222228882 2wAA8gAAAAAAAFVVVVXh1VVVVUAAAADbbbbbbbfdbbaSSSSSSSSSSSSSSQA+5AAAAAAABbbbbbbb fRgAAAAAABUAB/RAAAAAAPe973ve9JIAAAAAA2AAHz4AAAAAAAVVVVVe5qqqqqqoAAAA22222223 57bbzzzzbbbbbbbbbAADywAAAAAAAVVVVVexqAAAAAAAbbbaSSST8xJJJJJJJJJIAtttttttePAA AAAAACgAH3kAAAAAAANttttttt9zttttttttttttJJJJJIA+4gAAAAbbbbbbbbAAD0QAAAAAAAVV VVVfDqqAAAAAADbbeeeeeAAAAAC2222222/hqAAAAAAAKqAD+VAAAAAAHve973pJJJJJJJ+fkkgA AAAAD5cAAAAAAAKqqqqvYVVVVVVVQAAAG2222222/L7bbbbdnZ2dnZ2dnZ2dnZttsAAPxgAAAAAA AVVVVVeqqoAAAAAAG2222kkk/KSSSSSSSSSSSSSSSSSSQD7gAAAAAAAFtAA9CAAAAAAAFVVVVXwq qqqqqqqr3ve973ve973ve973vSSSAAAA2222222AAHzoAAAAAAAVVVVVe4qqoAAAAAA222222kn5 6SSQAAAW222222375bQAAAAAAFVUAffwAAAAAAe973pJJJJJJJ/XSSSSSSSSSSSAtAAeOAAAAAAA Cqqqqr1NVVVVVVVQAAAbbbbbbbb8bttttttJJJJJJJJJJJJID7EAAAAAAALbbbbbbb+MtttAAAAA ACqqqB/PgAAAAAAHvSSSQAAAAAC22gB5oAAAAAAAKqqqqvb1VVVVVVVVAAANttttttt+d2223nnn nnnnm22222wAA8qAAAAAAAFVVVVXr6qqoAAAAADbbbbbbafl5JJJJJJJJJJIFttttttt+2ttoAAA AAAKqqgPvAAAAAAAAbbbbbbbb8ZtttttttttttttttpJJJA+AAAAAAG2222AAH0YAAAAAAAVVVVV fBqqqqgAAAABtttt555555554AAAAW22222238JbbbaAAAAAAVVVVD+SAAAAAAACSSSSSSSfnZJJ JAAAFtttAPKAAAAAAA9/f39/cAAffgAAAAAAA222222235bbbbbbbbbdnZ2dnZ2dm2AAH4sAAAAA AAKqqqqvUVVVVAAAAABtttttttvxckkkkkkkkkkkkkkkkkkkg+sAAAAAAAFttttoPQAAAAAAAHv7 gAD+dAAAAAPe973ve973vekkkkgAAAA222wAA+cAAAAAAACqqqqr21VVVVQAAAADbbbbbbbf2W2k kkAAAtttttttv3u22220AAAAACqqqqn30AAAAAAANpJJJJJJ/WSSSSSSSSSSSSQAAD9HAAAAAAA2 2AAHqAAAAAAAAqqqqq8aqqqqqqqqqqqqqttttttttttttttttttttttttgAB9EAAAAAAAFVVVVX2 UAAAAAAANttJJAAAAABbbbbbaPmwAAAAAAAAAH8gAAAAAHve973ve970kkkkkkk/NySSSSAAbbYA AfKAAAAAAABVVVVV9TVVVVVQAAAANttttttt/U7baSSSSSSSSSSAAA+1AAAAAAAC2222222+nAAA AAAACoAD2AAAAAAe973gAAAAAABsAAPPgAAAAAABVVVVV7+qqqqqqgAAADbbbbbeeeeeeeeeeeee bbbbbbbbbYAAeZAAAAAAACqqqqr66oAAAAAABtttpJJJPt5JJJJIAAFttttttryYAAAAAAAUAA++ AAAAAAABtttttttvym222222222220kAAD7QAAAADbbbbbbbYAAemAAAAAAACqqqqru1VVVVVVVV VVVVVW222222AAAAAFttttttt/FUAAAAAAAVUAH4gAAAAAAe973vekkkkkkAAAAAAADzAAAAAAAA VVVVVe1qqqqqqqgAAANttttttt/X7bbbbdnZtttttttgAB8mAAAAAAAFVVVVXrqqAAAAAABttttp JJP6mSSSSSSSSSSSSSQAAfZgAAAAAABbQAPSgAAAAAABVVVVV8aqqqqqqqq973ve973ve973ve8A AAAA2222222AAHngAAAAAAAqqqqq99VVQAAAAABttttttB+//gu+Xy+Xy+QAAAAtttttoeZAAAAA D1AAe4AA/jgAAAAD6AANttttttt/Xbbbbbbb6/PPPlbec5zbbbbbAAD5MAAAAAAAKqqqqvXVVQAA AAAA33G2222kk/LSSSSSSSSSSSSSST64+O7u7uAB9mAAAAAABtsAAPSgAAAAAABVVVVV8a7tVVVV UAAAAPseefbW223zzzzzzzzzzzwAAAAC2222222/ibbQAAAAAAKqqAfhwAAfQAAAD3vekkkkkkk+ g+O7u7uAAANttgAB5cAAAAAAAKqqqqvaVVVVVQAAPoABtttttttv63baSSSST6D47u7u4ALbbbbb bb95tAAAAAAAKqgB97AAAAAAADb7jbbbbbb8lttttttttttttttJ9cfHd3d3AB92AAAAbbbbbbbb bbYAAfkQAAAAAAAqqqqq+LPoAAAAAAA+x559te7u7gAAAAAAW0ADvwAAAAAAAqqqqq97VVVVVV3a qgAABtttttttvr888+Vttt8822222222222wAA74AAAAAAAKqqqqvwoAAAAAfQAG2kkkkkk/s5JJ JJJJJ9B8d3d3cAKAAeSAAAAAAACqqqqr1tVVVVVVVAAAA233G22222/I7bbbbaSSSSSSSSST64+O 7u7uAH3UAAAAAAALbbbbbR9KAAAAAAAAAA/ph9AAAAAPe973ve973voPju7u7gAAADbbbbbbYAAd +AAAAAAAFVVVVXvaqqAB9AAAADbbbbbaST6D47u7u4AAAC22220HcAAAAAAAPf3AAH4QAAAAAH0A Dbbbbbbbfm9tttttttvr8887fOc5znNtttgAB3gAAAAAAAVVVVVeJVUAAAAAAG233G22kkn5WSSS SSSSSSSSSSSST64+O7u7uAPsgAAAAAAbbYAAeAAAAAAAAFVVVVXi1XdqqqqAAAABvr888+Vttt88 888888AAAAAW22222238RbQAAAAAAFVUAfhgAAD6AAAHve96SSSSSSSfop9B8d3d3cAAG222AAHe gAAAAAABVVVVV7OqqqqoAAAfQAbbbbbbbb81tpJJJJJJPoPju7u7v8jbbbAAD9NAAAAAAAC20AHi AAAAAAABVXdqqq/QVVVVVVVVV73ve976+2+O7u7u2222+y22222222222222222222222AAH7CAA AAAAAFttttttrxQdAAAAAAAr6bb47u7u7bbbbbbbbbbbbbbbbbbbAAD8QAAAAANtttttsAAPsQAA B0AAAAqqqqq/fV3OvXr2+c7u7tttttttttttsAAPmAAAAAAAFttttoPZgAAAAAOgHv7gAD80AAB9 fr16+Vttt9ettsAAP0wAAAAG22222222AAH0wAAAAAAAVVd2qqvz9VAAAAA+x69evlbbbfXr169e vX6H62222222222222222222222wAA/HgAAAAADbbbAAD7QDoAAAW2222222233vfTbfHd3d3bbb bbbbbbbbbbbbbbbbAAD9ZAAAAAAAC2222222/xYAAAdAAAAVXve973ve979D73tt+B+Xy+Xy+Xy+ Xy22222222222AAH38AAAAAG22222AAHsgAAAAADoAqqqqq/W1VVV73ve973023x3d3d222wAA/S wAAAAAAAttttttHrAAAAAAAAAfQB+OAAAAAD319t8d3d3dttt9022222222222222222222222AA H7AAAAAAAAFttttttt/mbbbXQAAAAAAqu5169e3zu7u7bbbbbbbbbbbbbbbbbbAAD9YAAAAAABtt gAB7sAAAHQAAAKqqqqv3lV3OvXr2+c5znOddtttttttttgAB+qAAAAAAABbbbbbbbfyVoAAAAADo BVUAPzAAAB9fr16+Vttt9evXr1554AB94AAAAAAbbbbYAAerAAAAAAACqqu7VV+dqqqqgAAAfY9e vXytttvr169ev0H169evXr169bbbbbbbbbbbbbbbbbbYAAfjgAAAAAAAoAB8QA6AAAAFttttt973 vfTbfHd3d3bbbbbbbbbbbbbbbbbbAAD8OAAAAAAAFttttttt/ibbbbQAA6AAACqqqr3vf2/ve976 bb47u7u7bbbbbbbbbYAAffgAAAAAAG2AAH1gAAAAAAdAVVVVVfq6qqqqqr3vptvju7u7ttgAB+lA AAAAAABbbbbbbbf2q20AAAAAACqqn0B9yAAAAAA+x69evl3d3d2233Lbbbbbbbbbbbbbbbbbbbbb bYAAfr4AAABtttttttttsAAPswB0AAAAAAqq7nXr17fOc5znNttttttttttttttttsAAP1cAAAAA AALaAB7kAAAB0AAAKqqqqv3VVXc69evb5znOc5169evXr1222222AAH6mAAAG22222222222wAA9 iAAAAAADoFVVVVPy4AAAfX69evlbbbfXr155555555554H6SAAAAAAAMAAPCAAAAAAACqqq7tV+b qqqqqqq973ve973ve973vfX23x3d3d22+47bbbbbbbbbbbbbbbbbbbbbbAAD8aAAAAAAAFttttA+ GAHQAAAAAtvve973vptvju7u7tttttttttttttttttgAB+GAAAADbbbbbbbbYAAfYAAAAHQAABVV VVV+5qve99Nt8d3d3dttttttttsAAPvoAAAAAAAW20APYAAAAAAAdBVVVVV+pqqqqqqqrudevX47 u7u7YAAfdwAAANttttttttttgAB6oAAAAAAAKqqq7tX5oAAAAAAfY9evXyttt7b7httttttttttt tttttttttttsAAP14AAAAANtttttgAB8IAHQAAAAAKqq7nXr17fOc5znOvXr169dtttttttttttt sAAPwoAAAAAAAW22220PcAAAADoAAD3AAH50A+v169fK222+vXr169evXr169ettgAB98AAAAA22 222222AAH1YAAAAAADoVVVVVfqKqve973ve973ve973vptvju7u7sAAP0gAAAAAAALbbaAepAAAA AAB7+/v7+4AH0PxgAAAAPe973ve97319t8d3d3dvsdttttttttttttttttttttttgAB+MAAAAAAA C2222222/ylAB0AAAAAFVe973023x3d3d2222222222222222wAA/VgAAAAANttttgAB7cAAAAOg AAKqqqqv29VVXc69d8d3d3dtttttttsAAP1IAAAAAAALbbbbbaevAAAAAAAOiAAPywAAAD6/Xr18 rbb3AAD7YAAAAA2222222AAHggAAAAAABVVVVd28aqqgAAAAB9j169fK222/L169ettttttttttt ttttttttttgAB+LAAAAAAA22AAHwQAHQAALbbbbbbbfe973ve976bb47u7u7bbbbbbbbbbbbbbbA AD8IAAAAAAAFttttttt/hLaAAAAdAAAqqve973ve/Oe973ve973023x3d3d22222222AAH6iAAAA AAbbbbAAD6oAAAAAAAdKqqqqvtqqqqq973ve973ve+m2+O7u7u22222223222222222222222222 222222wAA/ZgAAAAAAAtAA6eMAAAAABbbb9fb63d3d3bbbbbbbbbbbbbbbbbbbbbbbAAD9dAAAG2 22222222222AAHwAADoAAAAAqqqruddvju7u7tttttttttttttttgAB+DAAAAAAANgAB7YAAAADo AAKqqqqv2tVVVdzr169vnOc7u2222222AAH3sAAAAAAALbbbbbbb+6W20AAAAAAAAA+2AAAADr1+ O7Xa7Xa7Xa7Xa69evXbbbbb7XbbbbbbbbbbbbbbbbbbbbbbYAAfkQAAABtttttttttgAB0AAFttt ttttttttttv19vrd3d3dttttttttttttttttttttttgAB+uAAAAAAABbaAD7IAAdAAAAtttt973v e973ve+m2+O7u7u22222222222222wAA/VQAAAbbbbbbbbbbbYAAfXgAAAAOgABVVVVV9v73ve97 3ve99Nt8d3d3dttttttgAB+oAAAAAAAAAAPqQAAAAAAA7tVVVVfpaqqqqqqr3ve976+2+O7u7u22 222232u2222222222222222222222wAA/IgAAAAAABbbbbaDp0AAAAAAAfX2+t3d3d2222222222 222222222222wAA/WwAAAAbbbbbbbbYAAe/AADoAAAACqqqq7nXr17fOc7u7bbbbbbbbbbbbbYAA fggAAAAAAAtttAH1wAAAAB0AAVVVVVfs6qqqrudevXt85znOc69eu2222AAH6eAAAA2222222222 wAA+oAAAAAAAC7tVVVV+kgAAAA+x69evlbbbfXr169evXr162+022222222222222222222222AA H7IAAAAADbbbbbAADuugAAAttttttttttt+vt9bu7u7tttttttttttttttttttttsAAPxQAAAAAA AW22222j8sAADoAAAAHve973ve973vfTbfHd3d3bbbbbbbbbbbbbYAAfgQAAAAG2222222AAHtQA AAAB0AAqqqqq/ZVVXve973vptvju7u7tttttsAAPvQAAAAAAAW222gPXAAAAAAAe/v7+59AAPyYA AAAH19t8d3d3dtttttvs9ttttttttttttttttttttttgAB+xgAAAAAABbbbbbbbf563oAAAAAAA7 7r1+O5zu7u222222222222222222222AAH4kAAAAABttttgAB74AADoAAAAKqqqqu5169e3znOc5 zr1222222222222AAH4AAAAAAAALbbbbbbXtAAAAAA6AAoAB/WgAD6/Xr18rbbb69evXr169esAA PvIAAAAA222222wAA+nAAAAAAACru1VVV+iqqqAAAD7Hr16+Vttt9evXr169evXr7v69evXrbbbb bbbbbbbbbbbbbbbbAAD8gAAAAAAA2wAA+KOgAAAAtttttttv023x3d3d22222222222222222222 2AAH4kAAAAAAALbbbbbbb/HW2gADoAAAAVVV73ve9757b47u7u4AAABbbaAO+AAAAAAD39/f39/c AAfhQAAAAAewAbbbbbbbb85tttttttvq23b5znOc5ttttgAB5IAAAAAAAKqqqqvW0AAAAAAAbbfT SSSST+nkkkkkkkkkkkkkkkn0Hx3d3dwA+6gAAAAANtttsAAPpQAAAAAAAqqqqq+1qulVVAAAAAD6 vPPPlbbbfPPPPAAAAAAW2222223vwAAAAAAAqAA/mgAAD2AAAAbbbbbbbbfV9/kktkltls888+Vs 75fL7H5fLu+XfL7D7Du+Xy75AAAAW220A74AAAAAAHv7/evf3AAH4QAAAAAD2AG2222222/N7bbb bbbbfVtu3znOc5zbbbYAAd4AAAAAAAFVVVVXiVAAAAAAANtt9NJJJJ+Vkkkkkkkkkkkkkkkk+g+O 7u7uAPsgAAAAADbbbYAAeAAAAAAAAFVVVVXi1V0qqoAAAAA31eeefK222+eeeeAAAAABbbbbbbbf xAAAAAAAAVQAPwwAAA9gAAANttttttt/cb6vPPPlbbbf/8xQVkmU1mIXnyOAP45///////////// ////////////////////////////////+D/4IAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAA+AAGAARHHpJfZtmS2zbb3A6XZtjS2bbZmUls2z JbZtszSS1O7u2yXbNmkorZktspu7lJds2aSikklBu7lJNs2yQ7ZtmltmzbbZpNg2YbMGls2zd3Dt s2aWzZtsG2yTZtts0mwbbJbNs0szZpJbZu7lO2S3dySnbNmklgAAAAAAAAAAAAAAAAAAABs2aSW7 ubZTtm7uS7ZJF2yXbN3dtklO7uS7ZtkXbJds3d22dslu7klO2bN2yXbN3cp2yW7uSU7Zs0kts3dy XbJbMkptmzSSU3dyXbN3dtklO7uSkk2bbJds3d22SU7u5LtkkXbJds3d22SU7u5Ltm2Rdsl2zd3S SU7u5Ltm2bNJLbN3cp2ym7uS7ZtmzSS2zd3Kds2bmS2zZkuzdtsaSWAAAAAGgAGTQaaaAaGgNNBo GmjCNNDT1A9I00DQwmTTCaZMAA1NpqbRHpqZpqehoaMp4k8o9GjJqemjKek9GmAJ73/qqqm//1VS osAAAABNMAAAAmTIwAAAAAAAATEYEwEYAACYAAAAATAAAAAACMAP//2qqlJ//6qqQ79VVPaqZNGT J6QAAAAAAaNAADQAAAAAAAAAAAAAAAAP/fp/pVSqgBoAAAAAAAAAAh+qqT/1VQGTR6ngRo0MCAGB BoGBADUAAAAAAGjQAA0AANAANAZP//Z+lVSqgAAAAAAAAAAAEv1VU/eqoAAABpoAAAANAAAeMiYj A0TQyYNIeowBMmQ9KeU2p5T02lPUaPSek8Seo3+/96VKVVAAAAAAAAAAANANpVVU/9UqPUwgaaaM h6g0NBkD1NBoDQABoNNBkAMTQDTRkNDQAHpPSeo9NDU9oTSY1HoT//96pPVVRBAGEDH/tVUgAaAN ABoAfqTcvCeD2nf4mDwNrYvjvH+Q8j5LyflPK+W8v5jzPmvN+c8757z/oPQ+i9HtnpPS+m9P6j1P qvV+s9b671/sNt272O3+y9n7T2u4e23H2+5e49z7r3nvffbn7/c/gfB3T4Xw/ifF+N8fdfkbt8n5 Xy/mbv8353z/ofR3j6W8/T+pvW975vv1frb99ff/sfZ+1wH28Z9z7v3vv/gxvA/h/FwX4+D/J+X8 /6OE/T+r9fC8Nw/Efs4niv28X+7jON47j/38h/DkeS/jyfKcry3L8xzPNc3znO89z/QY7+XQ4/os h/Po8j0nS/0/rkumyf9un6jKdTlct1XV9Zl+t67r8x2HY5nNf4zeczvZf5z2f/1/vQdn2mh7XttF o+30n/NL3Gm7nutPqP+6nu//arvO91ffazW67X7DY7LZ7Tv8TDhP7bhQAAAAAAAABVwgAAAAAAAA AVf2AAAAAAAAACrAAAAAAAAABVwoAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAA AAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAA AAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVY AAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAA qwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAA AAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAA AAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAA AAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAA AAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVY AAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAA qwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAA AAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAA AAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAA AAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAA AAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKs AAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAA VYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAAbg4ODg4OAAAAAAAAAMMMIAAAAAAAAAMMMIAAAAAAAA AMMMIAAAAAAAAAMMMMMMMMMMMMAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAA AAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAA AAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAA AAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWA AAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAF WAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAA AKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAA AAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAA AAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAA AAAAAAAqwAAAAAAAAAVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWA AAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAF WAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAA AKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAA AAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAA AAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAA AAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrA AAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAF WAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAA AFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVgAAAAAAAAAqwAAAAAA AAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAA AAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAA AAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrA AAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAF WAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAA AFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAA AAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAA AAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAA AAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVg AAAAAAAAAqwAAAAAAAAAVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAF WAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAA AFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAA AAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAA AAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAA AAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVg AAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAAC rAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAA AFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAA AAAFWAAAAAAAAADDDCAAAAAAAAADDDCAAAAAAAAADDDCAAAAAAAAADDDCAAAAAAAAADDAAAAAAAA AAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAA AAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAA AAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwA AAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAq wAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAA BVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAA AACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAA AAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAA AAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVgAAAAAAAAAqwA AAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAq wAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAA BVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAA AACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAA AAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAA AAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYA AAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAq wAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAA AqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAA AABVgAAAAAAAAAqwAAAAAAAAAVgAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAA AAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAA AAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYA AAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAq wAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAA AqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAA AABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAA AAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAA AAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsA AAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVgAAAAAAAAAq wAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAA AqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAA AABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAA AAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAA AAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsA AAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAV YAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAA AqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAA AAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAwwwwwwwwwwwwwgAAAAA AAAAwwwgAAAAAAAAAwwwgAAAAAAAAAwwwgAAAAAAADg4ODg4ODg4AAAAAAAAAAFWAAAAAAAAACrA AAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAF WAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAA AFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAA AAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAA AAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAA AAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVg AAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAAC rAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAA AFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAVgAAAAAAAAAqwAAAAAAAAAVYAAAAAA AAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAA AAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAA AAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVg AAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAAAFWAAAAAAAAAC rAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAAAAAFWAAAAAAAA AFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAAAAVYAAAAAAAAAKsAAAAAA AAAFWAAAAAAAAAFWAAAAAAAAACrAAAAAAAAABVgAAAAAAAAAqwAAAAAAAAAqwAAAAAAcLzz6XDuG cM7sndk7sndk7sndk7sndk7sndk7sndk7pO7J3ZO7J3ZO7J3ZO7J3ZO7J3ZO7J3ZO7J3ZO6SebJ5 snmyebJ5snmyebJ5snmyebJ5snmyebJ5snpUndk7sndk7sndk7sndk7sndk7sndk7sndk7sndk7p O7J3ZO7J3ZO7J3ZO7J3ZO7J3ZO7J3ZO7J3ZO7J3Sd2Tuyd2Tuyd2Tuyd2Tuyd2Tuyd2Tuyd2Tuyd 0k82TzZPNk82TzZPNk82TzZPNk82TzZPNk82TzZPSpO7J3ZO7J3ZO7J3ZO7J3ZO7J3ZO7J3ZO7J3 ZO7J3Sd2Tuyd2Tuyd2Tuyd2Tuyd2Tuyd2Tuyd2Tuyd2Tuk7sndk7sndk7sndk7sndk7sndk7sndk 7sndk7pDzZPNk82TzZPNk82TzZPNJPNk82TzZPNk9Kk7sndk7sndk7sndk7sndk7sndk7sndk7vO ASEAkCfbISSQJISWySQCQCHz3y/xHvn8z2n6r1H9D5z4v3/6Ln7L4D+p898f+M/sf3v3n5Pv/F/C /Mfbv8vyPwn3P/T6z9Dt3/uX3/cNXzmM23XY7G+/2WQ4P4uJ0n6N22vTcN83M5T9u85vLcdvvZZf kfsZ/Mcr9zQZrmuB0Om5/8mj0+P/TpdTkeI3zVf14vf9X/bj8ZrOp5LG6/quW4PZdbzfCd/2HQM1 j+Ks7keN0efyXI6TQdPyul0OV5rTaLq+f7rSddj9R3vY5Hu++zeS5fW9l0/Oa/P5XHbHQdXkNloe u6XaaLscniaTN9S2Ox2O11GgymV1Oh7HWarR5zW97/zPa7vtNoNfrdP2uw1+p7fY7PVdxs9pq9Po +/1mp0uJrtV3WLsNXqWy1veeBtNhrNribPYTE2mLtfAYuLi4tVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV6Xpel6Xpeo9R6j62SSE hJCEk+8UgEgW0gH1pIQCWQh7gBIQCQJQsCQCWlkkklhJAkAgSyf2/T/nPlP7/3D9B6P+P3z4b2f+ b9R81/q9/+K+b/2/AfGv/H8X+19v/12zheq2nyuK659Djszi71yWd2/fuWz+48BzfZ+8+/0Hbbpw XRaTdfz9Jpt34XptPvHE9Rqd74z++q5DrNXjOT6/W43mMzsPx87nNn9PHZ7E/XkNB4HE9L2uLxuT 7fGfwymlxvKZbueD5nL6jhOezHd8P0Oa7zi+jzur4/+me1nJZP/euynabDnct22y/ll+32mQzGlx OW5XuWSzmo2vUZ7u8XLaDvMfl9Dq8jmNFrMlmtJ/hfmb4rxXiu7M6dMzyjOmZnTpmd+6dMzp06VV VVXfVVVVVVVVVVVVVVVQAA8SAAAAAABVAAD6QAAPpQAHOc5znOc5znOcrvZnTpmeT9+6dMzp06VV VVVVVVVVVVVVUAAPEAKqqqqqqqqqqqqgAB9GAAAAAfSgAc3d3d3d3d3au7MzMzKqqqqqqqqoAAeb gAAAAVVVVVQAA+7gAAVVVVVVVVVQAA+tA3d3d3au7MzMzKqqqgAB5OAAAAAAAHOc5znAD7OAAAAA ACqgAB8AAAAAG1d2ZmZmVVVVeFqqqqqqqqqqqqqqqgAB6mAAqqqqqqqqqqqAAH5MAAAAAAAPPz98 5zMzMqqqqqqqqqqqqqqgAB6IAAAAABVVVAAD8IAAABVVVVVVVAADt27d3XXXXXXXbtVVVVVVVVAA DzYAVVVVVVVVVVVVQAA+7AAAAAAABoAB8UAAdu3bu66666667du3bt27du1AADyYAAAAAqqqqoAA fZgAACqqqqqqqqgAB+uAOc5znOc5znOc5znOc5z+4AEhOrCEnt/b+39AADO3bt27du3bt27eE7du 3bt27du3bt27du3bt27du3bt27du3bt27du3bt27du3bt27du3aqqqqr1KqqqqqqqqqqqqqqqAAH xwAAAAAAAc7du9mZmZlVVVVVVVVVVVVVQAA8OAAAAAAAHOAAPogAAAAAOc5znOc5zd3d3d3d3d3a u7MzMzKqqqqqqqqAAHmoAAAqqqqqqqqgAB91AFVVVVVVVVVVVUAA3frN3d3d3d3d3dq7szMzMqqq gAB5KAAAAAAAUAAPsoAAAABVVVVQAA9+AAAbu7u7u7u1d2ZmZmVVVXjVVVVVVVVVVVVVVVUAAPUQ AAAAAAA5znOc5wB+RAAAAAAA5znNq7szMzMqqqqqqqqqqqqqoAAeHAAAAFVVVVVUAAPogABVVVVV VVVVVAAA7druzMzMyqqqqqqqqAAHmgAAAAAAAc5zgAPugAAAAABVVQAA+sAAB27du7rrrrrMqqqA AHkgAAAKqqqqqqqAAH2QAFVVVVVVVVVVVAAD3wAAAAA7du3d111111127du3aq8HVVVVVVVVVVVV VVVAAD1AAAAAAVVVVQAA/IAAAAAAABu+fn5+Oc5znOefn5+fn5+fn5+fn51VVVVVVVVQAA9DAqqq qqqqqqqqqqgAB+DAAAAAAAOc3d3d3d3d3d67tXdmZmZlVVVVVVVQAA8zAAAABVVVVVQAA+5gAAqq qqqqqqqoAAfEBu7u7u7u7tXdmZmZlVVAADyMAAAAAAAOc5znAB9jAAAAAACqoAAfrQAAAA3d3dq7 szMzMqqrwVVVVVVVVVVVVVVVUAAPTwAKqqqqqqqqqqoAAfjwAAAAAAA3d867szMzMqqqqqqqqqqq qqAAHoQAAAAAKqqqAAH4IAAAFVVVVVVVAADvHbt27uuuuszKqqqqqqqAAHmQBVVVVVVVVVVVVQAA +5AAAAAAAAAAP2YAADt27d3XXXXXXXbt27VAADyIAAAABVVVVUAAPsQAACqqqqqqqqoAAe9AAAAA B27du7rrrrrrrt27du3bt9p7du1VVVVVVVVVVVVVUAAPTgAAAAAAVUAAPxwAAAAOc5znOc5znOc5 zm7u1d2ZmZmVVVVVVVVVVVVUAAPQQACqqqqqqqqqqgAB+BAAAAAAADd3d3d3d3d37jd3au7M6ZlV VVVVVUAAPMQAAAAABVVAAD7iAAAAKqqqqqoAAfsgABu7vn5+dVQAA9OAAAKqqqqqqqoAAeXAAAAA AADbbbbbbL6pVVVVVVVVVVVd3d3d3fr26AAAAAAAc5znOAD3gAAAAAAVVAAD2oAAAAbu7u7u7u7u 7u9evXqAAAAFVVVQAA+QAAACqqqqqqqoAAesAAAAAAADbbbbbbbPp8zMqqqqqqqqAAHrwAAAAAAA 3d3d3QHogAAAAAAOc5xVVVVX0VVVVVVV3d3d3eugAHpgAAAAAKqqoAAeIAAAAAAAG222222295tt tttsqqqqqqqru7u7u+m3d3d3d3d3d3aqqqqqqqqqAAHuwAAAAAAA3d3d3dA9oAAAAAAA3dzMzKqq qqqqqqqqqqgAB7UAAAAABVVUAAPGAAAAAAADbbbbbbbfJ223Oc5znOVVVVVAAD1wAACqqqqqqqqo AAeKAAAAAAAG2222222/YbbbbbbbbbbbnOc5zlVVVVX3SAAAAAAAG7u6AHhgAAAAADnOc5ziqqqq vyCqqqqqqqquZmZmZmVVX1SqqqqqqqqqqqqqqqAAHugAACqqqqqqqqgAB7MAAAAAAANttuc5znKq qqqqqqqqqAAHtAAAAAAAA3d3dAHqwAAAAAA5znOcVVVVV9qqru7u7u7u7u7u7u7oAA9aAAAAAFVV VQAA9CAAAAAAAG2222222+HtttttmZmZmZmZVUAAPSAABVVVVVVVVVUAAPLAAAAAAABtttsqq+pV VVVVVVVVVVVXd3Tv4AAAAAAAcAAPcgAAAAAqqqoAAeyAAAAAAADbbbc5znOc5znOc5znOc5VVVVV QAA9mAACqqqqqqqqqgAB6oAAAAAAANttttmZmZ+0zMzMyqqqqqqoAAesAAAAAAADd0AD0AAAAAAD nOc5znOKqqqq+uVVVVVVVXdqAAHowAAAAFVVVVQAA8qAAAAAAAG222222291tttlVVVVVVVVVV3d 3fQ3d3d3d3dqqqqqqqqqqqgAB7gAAAAAAAN3dAB7EAAAAAA3d3d3czMzMyqqqqqqqqqqqoAAeyAA AAAKqqqqAAHqQAAAAAAA22222223yNtttqqqqqqqAAHqwACqqqqqqqqqqgAB58AAAAAAANtttttt t8LbbbbbbbbbbbbnOcqqqqHogAAAAAAAAAHlAAAAAAAA22222223kbbbbbbbbbbbZmZmZmZmZmZm VXiqqqqqqqqqqqqqqqAAHtwABVVVVVVVVVVAAD2AAAAAAAAbbbbMqqqqqqqqqqqoAAexAAAAAAAD QAD1AAAAAAAAbbbbbbbb4+22225znOc5znOc5yqgAB6oAAAAFVVVVVAADzwAAAAAAAbbbbbbbbyd ttttttttttttznKqqqqvuFVVVVVVVVVVVVVVUAAP1QAAAAAAAbZVVVX+Aqqqqqqqqqqqq9evXqO8 AAAAAABVAAD5gAAAACqqqqqAAHrwAAAAAAA222225znOc5znOcqqqqqqqgAB7AACqqqqqqqqqqqA AHpwAAAAAAA22zMzMzMzP2OZmZmZmVVVVVVAAD4YAAAAAAAoAAedAAAAAAADbbbbbbbfB2222222 22269evXr1AAA74AAABVVVVVVUAAPoQAFVVVVVVVVVVQAA+oAAAAAAA5z63rweDrweDp06dMzOnQ AAeFAAAAVUAAPlwAAAAVVVVVUAAPXAAAAAAABtttttvrOc53ddeDrrnl5c55c+pVVVVVehqqqqoA AewAAAAAAAAAAenAAAAAAADbbbbbbbfG222225zlVVVVAAD5UAAAAAAANttttttt5zbbbbbbbbKq qqqqqqqrmZmZmZmZmZ63MzM73ve973ve973ve973oAAPQgAqqqqqqqqqqqoAAfqQAAAAAAA2yqqq v79VVVVVVVVVVVVzMzAAAAAAABQAA/MgAAAAAABtttttttvW7bbbbbbbbbKqqqqqqqrmZmZmZmdd dddddddddddVVVVVVQAA/FgAAAAAABtttttttvTbZVVVVVVVVVVVVVVzMzMzve973vf2He973ve9 70ep55eXPLnOeQADd3QAfKgAAAAAHOc5znOKqqqq/CKqqqqqqqqqqqqqquZmZmZmZmZnrfW5mZmZ mZmZ3ve973ve970AAPrQAABVVVVVVVVQAA/UAAAAAAABtttttsr++VVVVVVVVVVVVVVeuugAAAAA AG7u7ugHywAAAAAAOc5ziqqqqvxqqqqqqqqqq5mZmZmZmZmZne973ve973oAAAqqqgAB+KAAAAAA ADbbbbbbbel222222VVVVVVVVVVVczMzMzMzMzP5Hf39/f39/f39/f399VVVVQAA+UAAAAAAADbb bbbKv5tVVVVVVVVVVVVVVVzMzMzMzMzM9ZmZmZmZmZmZmZmZmZmZnXXXXQAfWQAAAAABVVAAD9OA AAAAAAG22222229zttttttttttttttttttttttVVVVVVVVVVVVVVUAAPzAAAAAAAAbbbbbbbPxiq qqqqqqqqqqqqqrmd73ve973vR/w55eXPLnOeVVVVVVVVVQAA+NAAAAAFVVVUAAPSgAAAAAABtttt tttvi7bbbbbbnOVVVUAAPvYAAAAAAAbbbbbbbbze2yqqqqqqqqqqqqquZmZmZ3ve9738/3ve973v e973ve973ve973ve9AAPfwAAAAAAA3QAH6YAAAAAAANttttttt7jbbbbbbbbbbbbbbbbbbbbbbVV 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 0ktkIWwAtgBbAC0hbJIWwAtgBbAC0klsgS2AFsALYAWkJbJCWwAtgBbAC0kLZCS2AFsALYAWkC2S SWwAtgBbAC0kktkC2AFsALYAWkJLZIWwAtgBbAC0kJbIS2AFsALYAWkCWySWwAtgBbAC0khbIWwA tgBbAC0hC2SWwAtgBbAC0kC2S2AFsALYAWkAssALYAWwAtgBbLQgWwAtgBbAC2FoELYAWwAtgBbC WhIWwAtgBbAC2BaAS2AFsALYAWwktCEtgBbAC2AFsCWgSWwAtgBbAC2ELQklsALYAWwAtgFoBbAC 2AFsALYSS0IWwAtgBbAC2BJaBLYAWwAtgBbCEtCS2AFsALYAWwCWgWwAtgBbAC2EhaEtgBbAC2AF sCFoWwAtgBbAC2EC0tgBbAC2AFsALYAWwAtgBbAC0thAtgBbAC2AFoWwIWwAtgBbAC0JbCQtgBbA C2AFoFsAlsALYAWwAtCS2EJbAC2AFsALQJbAktgBbAC2AFoQthJLYAWwAtgBaAWwC2AFsALYAWhJ LYQtgBbAC2AFoElsCWwAtgBbAC0IS2ElsALYAWwAtAJbAtgBbAC2AFoSFsJbAC2AFsALQIWwtgBb AC2AFoQLZbAC2AFsALYAWUgFsALYAWwAtktJAtgBbAC2AFsktIQtgBbAC2AFshaSQtgBbAC2AFsk lpAlsALYAWwAtkJaSEtgBbAC2AFskLSElsALYAWwAtkC0kktgBbAC2AFskktIFsALYAWwAtkJLSQ tgBbAC2AFskJaQlsALYAWwAtkCWkktgBbAC2AFskhaQtgBbAC2AFshC0ktgBbAC2AFskC0lsALYA WwAtkAttgBbAC2AFsALbZALYAWwAtgBaS2SBbAC2AFsALSS2QhbAC2AFsALSFskhbAC2AFsALSSW yBLYAWwAtgBaQlskJbAC2AFsALSQtkJLYAWwAtgBaQLZJJbAC2AFsALSSS2QLYAWwAtgBaQktkhb AC2AFsALSQlshLYAWwAtgBaQJbJJbAC2AFsALSSFshbAC2AFsALSELZJbAC2AFsALSQLZLYAWwAt gBaQCywAtgBbAC2AFstCBbAC2AFsALYWgQtgBbAC2AFsJaEhbAC2AFsALYFoBLYAWwAtgBbCS0IS 2AFsALYAWwJaBJbAC2AFsALYQtCSWwAtgBbAC2AWgFsALYAWwAthJLQhbAC2AFsALYEloEtgBbAC 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 AAAAANtwAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANuAAAAAAAAAD bcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAA AAAAAANtwAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAAbbgAAAAAAAA A23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAA AAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAADbcAAAAAAAAAG24AAAAAAA AANtwAAAAAAAAAbbgAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAA23A AAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAA AAADbcAAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAAG24AAAAAAAAANt wAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAA AAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAA23AAAAAAAAABtuAAAAAAAAAD bcAAAAAAAAAG24AAAAASSSSSSSSSSSSSSUAAAAAAAAAAklAAAAAAAAAAJJQAAAAAAAAACSUAAAAA AAAAAkkkkkkkkkkkkkgAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAANtwAA AAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAA AA23AAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAABtuAAAAAAAAADbcA AAAAAAAAG24AAAAAAAAANtwAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAA AAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23 AAAAAAAAABtuAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAADbcAAAAA AAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAAN twAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAAbbgAAAAAAAAA23AAAA AAAAABtuAAAAAAAAADbcAAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAA G24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtwAAAAAAAAAbbgAAAAAAAAA23AAA AAAAAABtuAAAAAAAAADbcAAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAA AG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwA AAAAAAAAbbgAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAA23AAAAAAA AABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbc AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAAG24AAAAAAAAANtwAAAAA AAAAbbgAAAAAAAAA23AAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAABt uAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAA AAAAAG24AAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAANtwAAAAAAAAA bbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAA AAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA24AAAAAAAAANtwAAAAAAAA AbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AA AAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAABtuAAAAAAAAADbcAAAAAAA AAG24AAAAAAAAANtwAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAAbbg AAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAA AAABtuAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAADbcAAAAAAAAAG2 4AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAA AAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAAbbgAAAAAAAAA23AAAAAAAAAB tuAAAAAAAAADbcAAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAAG24AAA AAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAA AbbgAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbcAAAAAAAAAG24AA AAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAA AAbbgAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAA23AAAAAAAAABtuA AAAAAAAADbcAAAAAAAAAG24AAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAA AAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbb gAAAAAAAAA23AAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAABtuAAAAA AAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG 24AAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAANtwAAAAAAAAAbbgAAA AAAAAA23AAAAAAAAABtuAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAA DbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AA AAAAAAANtwAAAJJJJJJJJJJJJJJJJJJJKAAAAAAAAAASSgAAAAAAAAAEkoAAAAAAAAABJKAAAAAA AAAASSSSSSSSQAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAAbbgAAAAAA AAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtu AAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAADbcAAAAAAAAAG24AAAAA AAAANtwAAAAAAAAAbbgAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAA2 3AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAA AAAAADbcAAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAAG24AAAAAAAAA NtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAA AAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAA23AAAAAAAAABtuAAAAAAAA ADbcAAAAAAAAAG24AAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAANtwA AAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbgAAAAAAAAA23AAAAAAAAABtuAAAAAAA AADbcAAAAAAAAAG24AAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAANtw AAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAA AAAA23AAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAABtuAAAAAAAAADb cAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAA AAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA 23AAAAAAAAABtuAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAADbcAAA AAAAAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAA ANtwAAAAAAAAA23AAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAAbbgAAAAAAAAA23AA AAAAAAABtuAAAAAAAAADbcAAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAA AAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtwAAAAAAAAAbbgAAAAAAAAA23A AAAAAAAABtuAAAAAAAAADbcAAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAA AAAG24AAAAAAAAANtwAAAAAAAAAbbgAAAAAAAAA23AAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANt wAAAAAAAAAbbgAAAAAAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAANtwAAAAAAAAA23AAAAA AAAABtuAAAAAAAAADbcAAAAAAAAAG24AAAAAAAAAbbgAAAAAAAAA23AAAAAAAAABtuAAAAAAAAAD bcAAAAAAAAD4+PwT9mD7MH2ZPjB8YPjB8YPjB8YPv8Hzg+cHzg+cHzg+cHzg+cHzk+cHzg+cHzg+ cHzg+cHzg+cHzg+cHzg+cHzg+ch8YPjB8YPjB8YPjB8YPjB8YPjB8YPjB8YPjB8ZPjB8YPjB8YPj B8YPjB8YPjB8YPjB8YPjB8YPjB8ZPjB8YPjB8YPjB8YPv8Hzg+cHzg+cHzg+cHzg+cHzk+cHzg+c Hzg+cHzg+cHzg+cHzg+cHzg+cHzg+ch8YPjB8YPjB8YPjB8YPjB8YPjB8YPjB8YPjB8ZPjB8YPjB 8YPjB8YPjB8YPjB8YPjB8YPjB8YPjB8ZPjB8YPjB8YPjB8YPv8Hz+TAFAUA/qhVBUQCwIAj+T/b/ wn+1/Qfi/0P/e/pPp91/xCXznn55+6qGhgGBILhGNMMh2hQNDNisfHOK0lJO3N5Eq89K3lga8WmQ jDdTkEzG6CFajtLENx5kCuSCqjHZCNkHpGOkwaUgHCJyQiCUWgmFVFBUSsL0f2yzNPHvpuqk3+9r Q8HfjhEMfsBMVhWQqLw7Wij0hQXJpS1SHTVcxjGRs0ou6+dU3hGhV3xMWswLYYtwSo3MRGB9EjoS IvENkxmLe2w1PflR+OfMEsjCNWilEcKKkZ0urxM7OyiqDrxcL4+374aD78CHhP/RHqg4yJhvR5Yq HhYSLiPZC++JiIeBFxUSgQIEZGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB abTGQUFBfFBAIqg/pQKIGVVQRQf7z4/Xf4r/B+//ZO/xvzH8MGJbNrjbTdSJTgOcoX47vLGV17mT nU4M5fL7/Pn2KDpELPDVCRdiqxM3xY5Q6SBFW8SlmtBy9vmhJosywM4YaYSfNNtGccAtMddYwYee JCtQPjoOQvwcgjgBBJLCCbRPDiiigNRl1UdTmVklVnMsPXHc0QQPRM2KFBQQJcXAQJcBLgUKAAAA AAAAAAABV/i1VVVVVVVVVVVVVVQAA9gAAAAAAAFVVej6Po7f7W2222222222222222222222wAA9 WAAAAAAAFVVVVX39VVbbbbbbbbbbbbbbbbbYAAfHgAAAAAABVVVVV9pVVVVVVVVtttttttttgAB6 YAAAAAAAKqqqqvq6qqqqqqqqqqqqrbAAD3kAAAAAAAKqqqqvu6qqqqqqqqqqqqqqrrrrrrrrrrbb ztttttttttttttttttttttttgAB84AAAAAAAFVVVVXt6qqtttttttttttttttttgAB8cAAAAAAAF VVVVXtaqqqqqqqrbbbbbbbbYAAelAAAAAAACqqqqr6qqqqqqqqqqqqqqvxiiIH43zz169evXr0Ae 8AAB6Z8IAAAAKqqqqvPqqqqqqqqqqqqqqqu7u7u7u8889vPPPPPPPPPPPPPPPPPPNttttttttttt tsAAPmwAAAAAAAqqqqq++qqqttttttttttttttttsAAPxoAAAAAAAVVVVVflKqqqqqqqq2222222 2wAA8AAAAAAAAqqqqq+pqqqqqqqqqqqqqq222221VXy1VVVVVVVVVVVVVVtgAB54AAAAAAAVVVVt ttttttttttttttttttttttsAAPmgAAAAAAAqqqqq+9qqqrbbbbbbbbbbbbbbbYAAfGgAAAAAABVV VVV9nVVVVVVVVVtttttttsAAO4AAAAAAAVVVVVfUVVVVVVVVVVVVVVW222222q/xKqqqqqqqqqqq qqqoAAfRgAAAAAABVVVVtttttttttttttttttttttttgAB8yAAAAAAAFVVVVX3lVVVW222222222 222222AAHxgAAAAAAAVVVVVe0qqqqqqqqqtttttttsAAPKAAAAAAAFVVVVX09VVVVVVVVVVVVVVb bbbbbbb5Wqqqqqqqqqqqqqqq9/f3AA+iAAAAAAACqqqq22222222222222222222222AAHqgAAAA AAAqqqqq9tVVVVbbbbbbbbbbbbbbbAAD4sAAAAAAAKqqqqvZ1VVVVVVVVVttttttsAAPSAAAAAAA BVVVVV9NVVVVVVVVVVVVVVVttttttt7vtVVVVVVVVVVVVVVXv7+/v7+4A9eAAAAAAAFVVVVbbbbb bbbbbbbbbbbbbbbbbYAAfMAAAAAAABVVVVV93VVVVW3tPJ5OeTyeTm2222222222222PKAB8UAAA AAAAFVVVVXmqqqqqqqqqq9nt25znOc5tttttgAB6Q8oAAAAAACqqqqr6Wqqqqqqqqqqqqqqq9nr5 H169evXr1VVVXzeqqqqqr49VVVttttttttgAB64AAAAAAAKqqqqvNt25z169evVVVVVVVVVVXx6q qq9/f3AA+XAAAAAAACqqqqr7qqqqqvG287nOc5zm222222222222w8oAPUAAAAAAABVVVVV41VVV VVVVVVebbtznOc5wAKqqqqvgqvLVVVVVVVVVVVVVV3d3d3d3d3d993d3d3d3d3d3d3d3d3d3d3d3 d3d3d3d319evZVV9evXr169evT3YAAB3AAAAKqqqqvW1VVVVVVVVVVVVVVXXXXXXXXXXXXXXXXid uc5znOAAAAAdwAqqqqq+Wqqqqqqqqqqqqqqqu7u7u7u7rrrr7nrrrrrrrrrrrrrrrxO3Oc5znAAA AFV5aqqr4mqqqqqqqqqqqqqqq7u7u7u7u7u/G93d3d3d3d3d3d3d3d3d3d9fXr2VVfXr169evXr1 VVVVV+d1X4Oqqqqqqqqqqqqqu7u7u7u7u7vxXd3d3d3d3d3d3d3d3d3d3d3d3dddddddddeI87nO c5zgA92AAAO4AAACqqqqr1tVVVVVVVVVVVVVVV3d3d3d3dddddeJ25znOc4AAAAB3AFVVVVXytVV VVVVVVVVVVVVV3d3d3d3d3d+Q7u7u7u7u7u7xO3Oc5znAAAAKq8tVVX6NVVVVVVVVVVVVVVVd3d3 d3d3d3fu/d3d3d3d3d3d3d3d3d3d3d9fXr2ec5znACqqqqr4GqvLVVVVVVVVVVVVVd3d3d3d3d3f ie7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u+36evXr7FVeAHuoAAA7gAAAVVVVVesqqqqqqqqqqqqqq qu7u7u7u7u7vt76evXsqq+vXr0AAAAdwCqqqqr9Uqqqqqqqqqqqqqqqu7u7u7u7u7v4Hu7u7u7u7 u7u+nr17Kqvr169evXr16AAKqvLVVXp6qqqqqqqqqqqqqqru7u7u7u7u78Z3d3d3d3d3d3d3d3d3 d3d3d9fXr2VVfXr169evVVVVVXwFVXlqqqqqqqqqqqqq7u7u7u7u7u+97u7u7u7u7u7u7u7u7u7u uuuuuuuuuuuuuuuuvQ9DxHnc5znOcAe6AAAB3AAABVVVVV+x1VVVVVVVVVVVVVVXd3XXXXXXXXXX XX4XXXiduc5znOAAAAAdwFVVVVXydVVVVVVVVVVVVVVV3d3d3d3d3d/Ad3d3d3XXXXXXXXXXiduc 5znOAAABVVeWqq+Hqqqqqqqqqqqqqqqu7u7u7u7u7v3bu7u7u7u7u7u7u7u7u7u666668x25znOc 4BVVVVV7/VVeWqqqqqqqqqqqqu7u7u7u7u7v2vu7u7u7u7u7u7u7u7u7u7u7u7u7u7u7vt+37foP O5znOc4B7mAAADuAAAFVVVVX0FVVVVVVVVVVVVVVV3d3d3d3d3d/Gd3fT169nnOc5wAAAADuBVVV VV8lVVVVVVVVVVVVVVVd3d3d3d3d3fv/d3d3d3d3d3d3fT169lVeAAACqqvLVV8NVVVVVVVVVVVV VVVd3d3d3d3d3fuvd3d3d3d3d3d3d3d3d3d3d3d9fXr2VVfXr16VVVVVe/VVV5aqqqqqqqqqqqru 7u7u7u7u78R3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d32/b9v2/T169fYqq+vXr16/AevXoAAAdwAA BVVVVV8/VVVVVVVVVVVVVVVddddddddddddddde466668TtznOc5wAAAADuCqqqqr1NVVVVVVVVV VVVVVV3d3d3d3d3d+P666666666666666666668TtznOc5wAAAqqq8tVfC1VVVVVVVVVVVVVVXd3 d3d3d3d34vu7u7u7u7u7u7u7u7u7u7u7u76+vXsqq+vXr1VVVVV+Cqqq/B1VVVVVVVVVVVd3d3d3 d3d3fed3d3d3d3d3d3d3d3d3d3d3d3d3d3ddddeh6Hoeh6HiPO5znOc4HuQAAADuAAAVVVVVfPVV VVVVVVVVVVVVVXd3d3d3d3d35Lu7u+nr17KP6eCA7AABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAA BsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbA ABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGyAAb KquwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAAB sAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAA BsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbI ABsqq7AABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABsAAGwAAbAABs AAGwAAbABlFPXr169evQAAAO4VVVVVepqqqqqqqqqqqr8VVVVd3d3d3d3d3fv3d3d3d3d3d3d3d3 09evZVV/xfPPPPPPPPPPNtttgA7h8KAAAAAAAFVVVVX1tVVVVVVVVVVVV5tu3Oc5znNtgAB76AHc AAAAAFVVVVX3lVVVVVVVVVVVVVVV3d3d9PPPPsQ+5hRX39/f3/Ae/v7+/v7+/v7+/nnnnnnnnnnn nnnnnw8888888888888888888qqqqq/06qqqqqqqqqqqqqqr39wAHuAPR9H2fk8nk8nk8nk8m222 2222222222228NsAAPkQAAAAAAAqqqqq+1qqqqqqqvp557Ie6iIGFFff39/f39/f39/PPPPPPPPP Kqqq+PV9Eqqqqqqqq22222222222AAH1oAAAAAB5vR9HtznOc5zbAAD3wAHcAAAAAKqqqqvYVVVV VVVVVVVVVVVXd3d3fTzzz7FVXzzz8q888888888888822222228NttttttttgAB86AAAAAAAFVVV VX4FVV47duc5znObbbbbbbbbbbbbbbbw2AAHyAAAAAAAAVVVVVflaqqqqqqq8du3Oc5znNtttttt ttgAO58GAAAAAAAFVVVVXsqqqqqqqqqqqqqvNt25znOc5sAAPewAO4AAAAAqqqqq/D1VVVVVVVVV VVVVVXd3t7e3t7fMVfG9evXr169V80qqqqqqqqqvhbbbbbbbbAAD1YAAAAAAAVVVVVff1VV9PPPZ QT8MCiBgUTzzzzzzzzzzzzzzzzzzzzbbbbbeGAAHyAAPVAAAAABVVVVV9pVVVVVVVV47duc5znOb bbbbbbbYAB3emAAAAAAACqqqqr6uqqqqqqqqqqqqq823bnOc5zmAAHvQADuAAAAAVVVVVfd1VVVV VVVVVVVVVVXd3t7e3t7e3zFXxvXr169evV8lVVVVVVVVVXw22222222AAHzgAAAAAAAVVVVVe3qq q8du3Oc5znNttttttttttttttt4AAD44AAAAAAAKqqqqva1VVVVVVVXjt25znOc5tttttttsAAd/ SgAAAAAABVVVVV+41VVVVVVVVVVVVV9fPPZ5znOcAAHvIAB3AAAAAVVVVVefVVVVVVVVVVVVVVVd 3d3d3d9PPPPxAKevkPkPkPkvXr169evXyVVVVVVVVVVXwqq2222wB8oB82AAAAAAAFVVVVX31VVV 47fI+vXr169eqqqqqqqqqqqqqqqr5eqqqqqqqqqqqqqqrAAD2oAAAA8m/Ec5znOc2222222wAA7g AAAAAABVVVVV9TVVVVVVVVVVVVVV9fPPZVVqqqqq+cVVVVVfCqqqqqrbbbbbYAAeeAAAAAAAFVVV eO3bnOc5zm2222222222222228NttttttgAB80AAAAAAAFVVVVX3tVVVeO3bnOc5zm2222222222 22223cAA+NAAAAAAACqqqqr7Oqqqqqqqqr6+eeyKH7mCiBh8nk5zybbbbbbbAAD0vcAHqAAAAABV VVVV9RVVVVVVVVVVVVVVfXzz2VV9VVVVV8tVVVVVfCqqqqqttttttgAB9GAAAAAAAFVVVXjt25zn Oc5tttttttttttttttvDbbbbbbAAD5kAAAAAAAKqqqqvvKqqqvHbtznOc5zbbbbbbbbbbbbbbO4A D4wAAAAAAAKqqqqvaVVVVVVVVVX1889lVXzzzzzzzzzzzYAAd3cAAAAAAAqqqqq+nqqqqqqqqqqq qqqr6+eewoH3QqB91lVXZFQ9kFTzzzzzzzzzzzzz8z88888888888888888/C7bbbbbbbbbbbbbA ADzwAAPq/ZAAAAFVVVV47duc5znObbbbbbbbbbbbbbbbw222222AAHqgAAAAAAAqqqqq9tVVVVeO 3bnOc5zm2222222222222x3AA+LAAAAAAACqqqqr8dVVVVVVVVVX1889nnOc5zbbbbbYAAeU7gAA AAAAKqqqqvpqqqqqqqqqqqqqqqvr557Kr69VVVVfK1VVVVVfCqqqqq22222wAA9eAAAAAAAFVVVV eO3bnOc5zm2222222222222228NttttsAAPmAAAAAAAAqqqqq+7qqqqrx27c5znOc22222222222 22w7gA+KAAAAAAACqqqqrzVVVVVVVVVVfXzz2VVfPPPPPPPPPMAAPSDuAAAAAABVVVVV9LVVVVVV VVVVVVVVVfXzz2VVfPPPPPPPPPPPwPnlVVVVVfCqqqqqqqqvf39/f39wB64AAAAAAAKqqqqvHbtz nOc5zbbbbbbbbbbbbbbbeG2222wAA+XAAAAAAACqqqqr7qqqqqrx27c5znOc2222222222222DuA HqAAAAAAAAqqqqq8aqqqqqqqqqrzbduc5znObbbbbAAD4IO4AAAAAAKqqqqvvqqqqqqqqqqqqqqq rx23nc5znOc222229322222222228NtttttttttttsAAPXAAAAAAABVVVVVeO3bnOc5zm2222222 222222228NtttsAAPlgAAAAAAAqqqqq+5qqqqqvHbtznOc5zbbbbbbbbbbbbA7gD4kAAAAAAAKqq qqvsqqqqqqqqqqq823bnOc5zm2222AAH4wHcAAAAAAKqqqqvpKqqqqqqqqqqqqqqrvp5559ivr16 9VVVf4dVVVVVVXwqqqqrbbbbYAAetAAAAAAACqqqqrq8du3Oc5znNttttttttttttttt4bbbbAAD 5UAAAAAAA9eqqqqqvyFVVVVVfTzz2VVfPPPNtttttttttgO4B8QAAAAAAAFVVVVX2NVVVVVVVVVV X1889lVXzzzzzzzwAAfAgdwAAAAABVVVVV+Sqqqqqqqqqqqqqqqu76eeefYqq+eeeeeeefl3nnm2 222222228NttttttttttsAAPWAAAAAAABVVVVV6FeO3bnOc5zm2222222222222228NttsAAPlAA AAAAAAqqqqq+4qqqqqq8du3Oc5znNttttttttttsA7gPTgAAAAAABVVVVV9hVVVVVVVVVVVebbtz nOc5zbbbAAD4AB3AAAAAAKqqqqvvaqqqqqqqqqqqqqqrrrrx23nc5znOc2223um222222222228N ttttttttttgAB9CAAAAAAAFVVVVX4VXjt25znOc5tttttttttttttttvDbbYAAfJgAAAAAABVVVV V9vVVVVVVeO3bnOc5zm2222222222wB3A+HAAAAAAACqqqqr6+qqqqqqqqqqqvN557CL+fe6B/54 VdhV2BHZDYVdhV2FXYBdk2FXYVdhV2BXbYVdhV2FXYVdtgV2FXYVdhV2TYBdhV2FXYVdkNgR2FXY VdhV2R2AHYVdhV2FXZA2BTYVdhV2FXZE2ATYVdhV2FXZB2BDYVdhV2FXZF2ADYVdhV2FXZANgXYV dhV2FXZENgHYVdhV2FXZBNgTYVdhV2FXZFNgDYVdhV2FXZAdgdhV2FXYVdkR2A2FXYVdhV2QXYNh V2FXYVdkVxhV2FXYVdhV2NlF2FXYVdhV2HZUdhV2FXYVdhNlB2FXYVdhV2F2VTYVdhV2FXYQ2UTY VdhV2FXYU2VDYVdhV2FXYR2UDYVdhV2FXYV2VdhV2FXYVdhA2UdhV2FXYVdhQ2VNhV2FXYVdhE2U NhV2FXYVdhU2V2FXYVdhV2EHZTYVdhV2FXYUdl2FXYVdhV2EXZ2FXYVdhV2FXYVdhV2FXYVdnYRd hV2FXYVdl2FHYVdhV2FXZTYQdhV2FXYVdldhU2FXYVdhV2UNhE2FXYVdhV2VNhQ2FXYVdhV2UdhA 2FXYVdhV2VdhXYVdhV2FXZQNhHYVdhV2FXZUNhTYVdhV2FXZRNhDYVdhV2FXZVNhdhV2FXYVdlB2 E2FXYVdhV2VHYdhV2FXYVdlF2NhV2FXYVdhVxkV2FXYVdhV2DZBdhV2FXYVdgNkR2FXYVdhV2B2Q HYVdhV2FXYA2RTYVdhV2FXYE2QTYVdhV2FXYB2RDYVdhV2FXYF2QDYVdhV2FXYANkXYVdhV2FXYE NkHYVdhV2FXYBNkTYVdhV2FXYFNkDYVdhV2FXYAdkdhV2FXYVdgR2Q2FXYVdhV2AXZNhV2FXYVdg V22FXYVdhV2FXbYFdhV2FXYVdk2AXYVdhV2FXZDYEdhV2FXYVdkdgB2FXYVdhV2QNgU2FXYVdhV2 RNgE2FXYVdhV2QdgQ2FXYVdhV2RdgA2FXYVdhV2QDYF2FXYVdhV2RDYB2FXYVdhV2QTYE2FXYVdh V2RTYA2FXYVdhV2QHYHYVdhV2FXZEdgNhV2FXYVdkF2DYVdhV2FXZFcYVdhV2FXYVdjZRdhV2FXY Vdh2VHYVdhV2FXYTZQdhV2FXYVdhdlU2FXYVdhV2ENlE2FXYVdhV2FNlQ2FXYVdhV2EdlA2FXYVd hV2FdlXYVdhV2FXYQNlHYVdhV2FXYUNlTYVdhV2FXYRNlDYVdhV2FXYVNldhV2FXYVdhB2U2FXYV dhV2FHZdhV2FXYVdhF2dhV2FXYVdhV2FXYVdhV2FXZ2EXYVdhV2FXZdhR2FXYVdhV2U2EHYVdhV2 FXZXYVNhV2FXYVdlDYRNhV2FXYVdlTYUNhV2FXYVdlHYQNhV2FXYVdlXYV2FXYVdhV2UDYR2FXYV dhV2VDYU2FXYVdhV2UTYQ2FXYVdhV2VTYXYVdhV2FXZQdhNhV2FXYVdlR2HYVdhV2FXZRdjYVdhV 2FXYVcZFdhV2FXYVdg2QXYVdhV2FXYDZEdhV2FXYVdgdkB2FXYVdhV2ANkU2FXYVdhV2BNkE2FXY VdhV2AdkQ2FXYVdhV2BdkA2FXYVdhV2ADZF2FXYVdhV2BDZB2FXYVdhV2ATZE2FXYVdhV2BTZA2F XYVdhV2AHZHYVdhV2FXYEdkNhV2FXYVdgF2TYVdhV2FXYFdthV2FXYVdhV22BXYVdhV2FXZNgF2F XYVdhV2Q2BHYVdhV2FXZHYAdhV2FXYVdkDYFNhV2FXYVdkTYBNhV2FXYVdkHYENhV2FXYVdkXYV+ xEB+59z7n3Pufc9/f39/f39/f39/f39/fz/H88888888+P555555555555555555555555555555 5555555VVVVV9nqqqqqqq+8VVVVVttttsHj+H+H+H53Oc5znNttvc9tttttttttttvDbbbbbbbbb bAAD6AAAAAAAAKqqqqvwarx27c5znOc2222222222222223httgAB8kAAAAAAAFVVVVX21VVVVVV eO3bnOc5zm2222222222AHcHwwAAAAAAAVVVVVfXVVVVVVVVVVVVebbtznOc5zbbAAD34AdwAAAA AKqqqqvY1VVVVVVVVVVVVVVXd3d9PK+N69evXr16qr5Sqqqqqqqq+FVVbbbbbbAAD58AAAAAAAKq qqqvcVV47duc5znObbbbbbbbbbbbbbbbw22AAHqQAAAAAAPXr16qqqqq/H1VVVVVVfTzz2AU9xEQ MqCe/v7+/v7+/v7+/v7+/v7+/v7+/v5555555555+EqvotVVVVVVVVVVVVVVWAAH1wAAAAA9evXr 6+/v7AKe5lQT39/f3888888888888888/N/PPPPPNtu+22222222222222222AAHsQAAAAAAAqq8 fR9H0fO5znOc5tt7lttttttttttttt4bbbbbbbbbYAAfPAAAAAAABVVVVV+Yqq88/HAAB5555555 555555555555555555555555+F88wAA+RAAAAAAACqqqqr7Wqqqqqqq8du3Oc5znNttttttttsAD uPhAAAAAAAAqqqqq+sqqqqqqqqqqqqrzbduc5znObYAAe+AA7gAAAABVVVVV7Cqqqqqqqqqqqqqq q7u7u76eeefYr69evVXydVVVVVVVVXwqqqqrbYAAfOgAAAAAABVVVVV+BVVeO3bnOc5zm2222222 222222228NgAB8gAAAAAAAFVVVVX77VVVVVVVX0889lVXzzzzbbbbbbYADufBgAAAAAABVVVVV7K qqqqqqqqqqqqrzbduc5znObAAD3sADuAAAAAKqqqqvx9VVVVVVVVVVVVVVV3d3d3fTzzz7FVXzz8 p8888888882222222223httttttttgAB6sAAAAAAAKqqqqvv6qq8du3Oc5znNttttttttttttttt 4YAAfHgAAAAAABVVVVV9pVVVVVVVV9PPPZQX3wKB7+/v7+/v7+/v7+/v55555VVVVfHvoVVVVVVV VVVbbbbbbbbYAAeyAAAAAADzej6PbnOc5zmAAHvQADuAAAAAVVVVVfd1VVVVVVVVVVVVVVXd3d3d 30888+xVV8/KPPPPPPPPPPPPPPPPPPNttttt4bbbbbbbbAAD5wAAAAAAAKqqqqvb1VVeO3bnOc5z m2222222222222228AAB8cAAAAAAAFVVVVXtaqqqqqqqrx27c5znOc22222222AAO/pQAAAAAAAq qqqq+qqqqqqqqqqqqqqrzbduc5znOAAD3kAA7gAAAAKqqqqvPqqqqqqqqqqqqqqqu7u7u729vmKv jevXr169evjVVVVVVVVVVfCq22222wAA+bAAAAAAACqqqqr76qqq8a+R9evXr169VVVVVVVVVVVV VVVXy9VVVVVVVVVVVVVVtgAB7UAAAAeTfiOc5znObbbbbbbYAAdwAAAAAAAqqqqq+pqqqqqqqqqq qqqq+vnnsqvr1VVVVV84qqqqq+FVVVVVttttttsAAPPAAAAAAACqqqvHbtznOc5zaqqqqqqqqqvh VVVVXv7+/v7+4A+aAAAAAAACqqqqr72qqqvHbtznOc5zbbbbbbbbbbbbbbbuAAfGgAAAAAABVVVV V+81VVVVVVVVfXzz2VVfPPPPPPPPPNtgAB4dwAAAAAABVVVVV9RVVVVVVVVVVVVVVfXzz2VVfPPP PPPPPPPPPPPlqqqqqr4VVVVVVVVVV7+/uAB9GAAAAAAAFVVVXjt25znOc5tttttttttttttttvDb bbbbbAAD5kAAAAAAAKqqqqvvKqqqvHbtznOc5zbbbbbbbbbbbbbbO4AD4wAAAAAAAKqqqqvaVVVV VVVVVXm27c5znOc222222wAA7u4AAAAAABVVVVV9PVVVVVVVVVVVVVVXm27c5znOc22222234vbb bbbbbbeG2222222222222wAA+iAAAAAAACqqqq8du3Oc5znNttttttttttttttt4bbbbbbAAD1QA AAAAAAVVVVVe2qqqqvHbtznOc5zbbbbbbbbbbbbbY7gAfFgAAAAAABVVVVV7OqqqqqqqqqvNt25z nOc5tttttsAAPKdwAAAAAAFVVVVX01VVVVVVVVVVVVVVX1889lfXr16qqqq+Vqqqqqq+FVVVVbbb bbbYAAevAAAAAAACqqqqvHbtznOc5zbbbbbbbbbbbbbbbeG22222AAHzAAAAAAAAVVVVVfd1VVVV 47duc5znObbbbbbbbbbbbbYdwAfFAAAAAAABVVVVV9aqqqqqqqqqvr557Kqvnnnnnnnm2AAHpB3A AAAAAAqqqqq+lqqqqqqqqqqqqqqqvr557Kqvnnnnnnnnnnn4Gqqqqqq+FVVVVVVVVe/v7+4APXAA AAAAABVVVVV47duc5znObbbbbbbbbbbbbbbbw22222AAHy4AAAAAAAVVVVVfdVVVVVeO3bnOc5zm 222222222222wdwA9QAAAAAAAFVVVVXjVVVVVVVVVVebbtznOc5zbbbbYAAfBB3AAAAAABVVVVV9 9VVVVVVVVVVVVVVVeO287nOc5zm22223u+2222222223httttttttttttgAB64AAAAAAAKqqqqrx 27c5zm2222222222222228NtttsAAPlgAAAAAAAqqqqq+5qqqqqtttttttttttttsAAPiQAAAAAA Aqqqqq+yqqqqqqqqqqrbbbbbAAD4EAAAAAAAKqqqqvpKqqqqqqqqqqqqqqrrbbbbbb3Xbbbbbbbb bbbbbbbbbbbbbbYAAetAAAAAAACqqqqrq222222222222222222222AAHyoAAAAAAAVVVVVfl6qq qqq2222222222222AAHxAAAAAAAAVVVVVfY1VVVVVVVVVVbbbbbAAD4AAAAAAAAKqqqqvyVVVVVV VVVVVVVVVV11tttttvdNttttttttttttttttttttttgAB6wAAAAAAAKqqqqvQrbbbbbbbbbbbbbb bbbbbbAAD5QAAAAAAAKqqqqvuKqqqqqttttttttttttsAAPTgAAAAAABVVVVV9hVVVVVVVVVVVbb bbYAAe/gAAAAAABVVVVV/u1VVVVVVVVVVVVVVXXXW22223ue2222222222222222222222wAA+hA AAAAAACqqqqr8KrbbbbbbbbbbbbbbbbbbbYAAfJgAAAAAABVVVVV9vVVVVVVbbbbbbbbbbbbAAD4 cAAAAAAAKqqqqvr6qqqqqqqqqqq2222AAHvwAAAAAAAVVVVVfkaqqqqqqqqqqqqqqrrrrrbbbbfi tttttttttttttttttttttttgAB9AAAAAAAAFVVVVX4NVtttttttttttttttttttgAB8kAAAAAAAF VVVVX21VVVVVVbbbbbbbbbbbYAAfDAAAAAAABVVVVV9dVVVVVVVVVVVVtttgAB76AAAAAAAFVVVV Xsaqqqqqqqqqqqqqqrrrrrrbbbb3LbbbbbbbbbbbbbbbbbbbbbbYAAfPgAAAAAABVVVVV7iqtttt tttttttttttttttgAB6kAAAAAAAKqqqqvy1VVVVVVW2222222222wAA+FAAAAAAACqqqqr62qqqq qqqqqqqq222AAHvgAAAAAAAVVVVVfeVVVVVVVVVVVVVVVXXXXXXW222/29tttttttttttttttttt ttttgAB88AAAAAAAFVVVVX5iqrbbbbbbbbbbbbbbbbbbAAD5EAAAAAAAKqqqqvtaqqqqqqrbbbbb bbbbbAAD4QAAAAAAAKqqqqvrKqqqqqqqqqqqq22wAA97AAAAAAACqqqqr2FVVVVVVVVVVVVVVV11 11111ttt+J22222222222222222222222AAHzoAAAAAAAVVVVVfgVVW22222222222222222wAA+ QAAAAAAACqqqqr8rVVVVVVVW222222222wAA+DAAAAAAACqqqqr2VVVVVVVVVVVVVW2wAA96AAAA AAACqqqqr8PVVVVVVVVVVVVVVV8Xt7e3t7e3t7VV8lVVVVVVVVVVVW22222AAHqwAAAAAAAqqqqq +/qqrbbbbbbbbbbbbbbbbbAAD48AAAAAAAKqqqqvtKqqqqqqqtttttttttsAAPTAAAAAAABVVVVV 9XVVVVVVVVVVVVVbYAAe8gAAAAAABVVVVV93VVVVVVVVVVVVVVVd3t7e3t7e3tVfGqqqqqqqqqqq qrbbbYAAfOAAAAAAABVVVVV7eqqrbbbbbbbbbbbbbbbbYAAfHAAAAAAABVVVVV7Wqqqqqqqq2222 22222AAHpQAAAAAAAqqqqq+qqqqqqqqqqqqqqrYAAe8AAAAAAABVVVVV59VVVVVVVVVVVVVVV3d3 e3t7e3tV8jVVVVVVVVVVVVVW22AAHzYAAAAAAAVVVVVffVVVW2222222222222222AAH40AAAAAA AKqqqqvylVVVVVVVVbbbbbbbbYAAeAAAAAAAAVVVVVfU1VVVVVVVVVVVVVbbbbbbbbb3jbbbbbbb bbbbbbbbbbbbbbbYAAeeAAAAAAAFVV8XxfF8VVVVVVVVVVVVVVVVsAAPmgAAAAAAAqqqqq+9qqqr bbbbbbbbbbbbbbbYAAfGgAAAAAABVVVVV9nVVVVVVVVVtttttttsAAO4AAAAAAAVVVVVfUVVVVVV VVVVVVVVW222222234vbbbbbbbbbbbbbbbbbbbbbbYAAfRgAAAAAABVVVfF8VVVVVVVVVVVVVVVV e4AB8yAAAAAAAFVVVVX3lVVVW222222222222222AAHxgAAAAAAAVVVVVe0qqqqqqqqqttttttts AAPKAAAAAAAFVVVVX09VVVVVVVVVVVVVVbbbbbbbb/c22222222222222222222222AAH0QAAAAA AAVVVVVVVVVVVVVVVVVVVV7+/v7gA9UAAAAAAAFVVVVXtqqqqrbbbbbbbbbbbbbbYAAfFgAAAAAA BVVVVV7OqqqqqqqqqtttttttgAB6QAAAAAAAKqqqqvpqqqqqqqqqqqqqqqtttttttvd9tttttttt ttttttttttttttgAB68AAAAAAAKqqqq2222222222222222222222wAA+YAAAAAAACqqqqr7uqqq qttttttttttttttsAAPigAAAAAAAqqqqq81VVVVVVVVVW222222AAHwQAAAAAAAVVVVVfS1VVVVV VVVVVVVVVW2222229222222222222222222222222AAHrgAAAAAAAqqqqq222222222222222222 2222AAHy4AAAAAAAVVVVVfdVVVVVbbbbbbbbbbbbbbAAD1AAAAAAAAVVVVVeNVVVVVVVVVVttttt sAAPxgAAAAAAAVVVVVffVVVVVVVVVVVVVVVVtttttt7rttttttttttttttttttttttsAAPWgAAAA AABVVVVVbbbbbbbbbbbbbbbbbbbbbYAAfLAAAAAAABVVVVV9zVVVVVbbbbbbbbbbbbbYAAfEgAAA AAABVVVVV9lVVVVVVVVVVW22222AAHwIAAAAAAAVVVVVfSVVVVVVVVVVVVVVXxfF8XtVVVV/hVVV VVVVVVVVbbbbbbYAAetAAAAAAACqqqqrq222222222222222222222AAHyoAAAAAAAVVVVVfl6qq qqq2222222222222AAHxAAAAAAAAVVVVVfY1VVVVVVVVVVbbbbbAAD4AAAAAAAAKqqqqvxNVVVVV VVVVVVVVVV7e1VVVfNqqqqqqqqqqqqtttttgAB6wAAAAAAAKqqqqvQrbbbbbbbbbbbbbbbbbbbbA AD5QAAAAAAAKqqqqvuKqqqqqttttttttttttsAAPTgAAAAAABVVVVV9hVVVVVVVVVVVbbbbYAAe/ gAAAAAABVVVVV97VVVVVVVVVVVVVVVd3VVVXzWqqqqqqqqqqqqrbbbAAD6EAAAAAAAKqqqqvwqtt ttttttttttttttttttgAB8mAAAAAAAFVVVVX29VVVVVVtttttttttttsAAPhwAAAAAAAqqqqq+vq qqqqqqqqqqrbbbYAAe/AAAAAAABVVVVV+Rqqqqqqqqqqqqqqqu7u88qqvlKqqqqqqqqqqqqqttgA B9AAAAAAAAFVVVVX4NVtttttttttttttttttttgAB8kAAAAAAAFVVVVX21VVVVVVbbbbbbbbbbbY AAfDAAAAAAABVVVVV9dVVVVVVVVVVVVtttgAB76AAAAAAAFVVVVXsaqqqqqqqqqqqqqqru7u8888 qv8GqqqqqqqqqqqqqqrAAD58AAAAAAAKqqqqvcVVttttttttttttttttttsAAPUgAAAAAABVVVVV +Wqqqqqqq22222222222AAHwoAAAAAAAVVVVVfW1VVVVVVVVVVVW22wAA98AAAAAAACqqqqr8hVV VVVVVVVVVVVVVd3d3eeeeeeXydVVVVVVVVVVVVVVV7+4AD54AAAAAD169evXr169eqqqqqvyVVXu ICAgge/nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnlVVVVX1Cqqqqqqqqqqqqqqq9/cAB9qAAAH o+jtttttttttgAB8IAAAAAAAFVVVVX1lVVVVVVVVVVVVbbYAAe9gAAAAAABVVVVV7Cqqqqqqqqqq qqqqvi+L29vb29vb2qq+aVVVVVVVVVVVW22222wAA+dAAAAAAACqqqqr8Cqq2/2C7kinChIQNkUu 4A== --001636c5b8482691980469c5e7ba-- From BATV+0eeec199f9e2caacf0de+2089+infradead.org+hch@bombadil.srs.infradead.org Wed May 13 03:10:59 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_64, J_CHICKENPOX_81 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4D8AvAF128576 for ; Wed, 13 May 2009 03:10:58 -0500 X-ASG-Debug-ID: 1242202541-07fa010c0000-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 EBC57BFFE19 for ; Wed, 13 May 2009 01:15:41 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Ep4I9U3WhT24OH5n for ; Wed, 13 May 2009 01:15:41 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M49YM-0007cq-9t for xfs@oss.sgi.com; Wed, 13 May 2009 08:11:02 +0000 Date: Wed, 13 May 2009 04:11:02 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 13/17] xfs: get rid of indirections in the quotaops implementation Subject: Re: [PATCH 13/17] xfs: get rid of indirections in the quotaops implementation Message-ID: <20090513081102.GA21962@infradead.org> References: <20090126073136.384490000@bombadil.infradead.org> <20090126073202.961302000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090126073202.961302000@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: 1242202542 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 26, 2009 at 02:31:49AM -0500, Christoph Hellwig wrote: > Currently we call from the nicely abstracted linux quotaops into a ugly > multiplexer just to split the calls out at the same boundary again. > Rewrite the quota ops handling to remove that obfucation. What's the chance of getting a full review for this one after almost four month? > > Signed-off-by: Christoph Hellwig > > Index: xfs/fs/xfs/linux-2.6/xfs_super.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2009-01-24 18:50:29.764553115 +0100 > +++ xfs/fs/xfs/linux-2.6/xfs_super.c 2009-01-24 18:52:52.180428678 +0100 > @@ -68,7 +68,6 @@ > #include > #include > > -static struct quotactl_ops xfs_quotactl_operations; > static struct super_operations xfs_super_operations; > static kmem_zone_t *xfs_ioend_zone; > mempool_t *xfs_ioend_pool; > @@ -1333,57 +1332,6 @@ xfs_fs_show_options( > return -xfs_showargs(XFS_M(mnt->mnt_sb), m); > } > > -STATIC int > -xfs_fs_quotasync( > - struct super_block *sb, > - int type) > -{ > - return -XFS_QM_QUOTACTL(XFS_M(sb), Q_XQUOTASYNC, 0, NULL); > -} > - > -STATIC int > -xfs_fs_getxstate( > - struct super_block *sb, > - struct fs_quota_stat *fqs) > -{ > - return -XFS_QM_QUOTACTL(XFS_M(sb), Q_XGETQSTAT, 0, (caddr_t)fqs); > -} > - > -STATIC int > -xfs_fs_setxstate( > - struct super_block *sb, > - unsigned int flags, > - int op) > -{ > - return -XFS_QM_QUOTACTL(XFS_M(sb), op, 0, (caddr_t)&flags); > -} > - > -STATIC int > -xfs_fs_getxquota( > - struct super_block *sb, > - int type, > - qid_t id, > - struct fs_disk_quota *fdq) > -{ > - return -XFS_QM_QUOTACTL(XFS_M(sb), > - (type == USRQUOTA) ? Q_XGETQUOTA : > - ((type == GRPQUOTA) ? Q_XGETGQUOTA : > - Q_XGETPQUOTA), id, (caddr_t)fdq); > -} > - > -STATIC int > -xfs_fs_setxquota( > - struct super_block *sb, > - int type, > - qid_t id, > - struct fs_disk_quota *fdq) > -{ > - return -XFS_QM_QUOTACTL(XFS_M(sb), > - (type == USRQUOTA) ? Q_XSETQLIM : > - ((type == GRPQUOTA) ? Q_XSETGQLIM : > - Q_XSETPQLIM), id, (caddr_t)fdq); > -} > - > /* > * This function fills in xfs_mount_t fields based on mount args. > * Note: the superblock _has_ now been read in. > @@ -1466,7 +1414,9 @@ xfs_fs_fill_super( > sb_min_blocksize(sb, BBSIZE); > sb->s_xattr = xfs_xattr_handlers; > sb->s_export_op = &xfs_export_operations; > +#ifdef CONFIG_XFS_QUOTA > sb->s_qcop = &xfs_quotactl_operations; > +#endif > sb->s_op = &xfs_super_operations; > > error = xfs_dmops_get(mp); > @@ -1609,14 +1559,6 @@ static struct super_operations xfs_super > .show_options = xfs_fs_show_options, > }; > > -static struct quotactl_ops xfs_quotactl_operations = { > - .quota_sync = xfs_fs_quotasync, > - .get_xstate = xfs_fs_getxstate, > - .set_xstate = xfs_fs_setxstate, > - .get_xquota = xfs_fs_getxquota, > - .set_xquota = xfs_fs_setxquota, > -}; > - > static struct file_system_type xfs_fs_type = { > .owner = THIS_MODULE, > .name = "xfs", > Index: xfs/fs/xfs/Makefile > =================================================================== > --- xfs.orig/fs/xfs/Makefile 2009-01-21 21:03:27.824295159 +0100 > +++ xfs/fs/xfs/Makefile 2009-01-24 18:52:52.184428210 +0100 > @@ -33,6 +33,7 @@ xfs-$(CONFIG_XFS_QUOTA) += $(addprefix > xfs_qm_syscalls.o \ > xfs_qm_bhv.o \ > xfs_qm.o) > +xfs-$(CONFIG_XFS_QUOTA) += linux-2.6/xfs_quotaops.o > > ifeq ($(CONFIG_XFS_QUOTA),y) > xfs-$(CONFIG_PROC_FS) += quota/xfs_qm_stats.o > Index: xfs/fs/xfs/linux-2.6/xfs_linux.h > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_linux.h 2009-01-21 21:03:27.828295110 +0100 > +++ xfs/fs/xfs/linux-2.6/xfs_linux.h 2009-01-24 18:52:52.191428473 +0100 > @@ -147,17 +147,6 @@ > #define SYNCHRONIZE() barrier() > #define __return_address __builtin_return_address(0) > > -/* > - * IRIX (BSD) quotactl makes use of separate commands for user/group, > - * whereas on Linux the syscall encodes this information into the cmd > - * field (see the QCMD macro in quota.h). These macros help keep the > - * code portable - they are not visible from the syscall interface. > - */ > -#define Q_XSETGQLIM XQM_CMD(8) /* set groups disk limits */ > -#define Q_XGETGQUOTA XQM_CMD(9) /* get groups disk limits */ > -#define Q_XSETPQLIM XQM_CMD(10) /* set projects disk limits */ > -#define Q_XGETPQUOTA XQM_CMD(11) /* get projects disk limits */ > - > #define dfltprid 0 > #define MAXPATHLEN 1024 > > Index: xfs/fs/xfs/linux-2.6/xfs_quotaops.c > =================================================================== > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > +++ xfs/fs/xfs/linux-2.6/xfs_quotaops.c 2009-01-24 18:52:52.192428740 +0100 > @@ -0,0 +1,157 @@ > +/* > + * Copyright (c) 2008, Christoph Hellwig > + * 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_dmapi.h" > +#include "xfs_sb.h" > +#include "xfs_inum.h" > +#include "xfs_ag.h" > +#include "xfs_mount.h" > +#include "xfs_quota.h" > +#include "xfs_log.h" > +#include "xfs_trans.h" > +#include "xfs_bmap_btree.h" > +#include "xfs_inode.h" > +#include "quota/xfs_qm.h" > +#include > + > + > +STATIC int > +xfs_quota_type(int type) > +{ > + switch (type) { > + case USRQUOTA: > + return XFS_DQ_USER; > + case GRPQUOTA: > + return XFS_DQ_GROUP; > + default: > + return XFS_DQ_PROJ; > + } > +} > + > +STATIC int > +xfs_fs_quota_sync( > + struct super_block *sb, > + int type) > +{ > + struct xfs_mount *mp = XFS_M(sb); > + > + if (!XFS_IS_QUOTA_RUNNING(mp)) > + return -ENOSYS; > + return -xfs_sync_inodes(mp, SYNC_DELWRI); > +} > + > +STATIC int > +xfs_fs_get_xstate( > + struct super_block *sb, > + struct fs_quota_stat *fqs) > +{ > + struct xfs_mount *mp = XFS_M(sb); > + > + if (!XFS_IS_QUOTA_RUNNING(mp)) > + return -ENOSYS; > + return xfs_qm_scall_getqstat(mp, fqs); > +} > + > +STATIC int > +xfs_fs_set_xstate( > + struct super_block *sb, > + unsigned int uflags, > + int op) > +{ > + struct xfs_mount *mp = XFS_M(sb); > + unsigned int flags = 0; > + > + if (sb->s_flags & MS_RDONLY) > + return -EROFS; > + if (!XFS_IS_QUOTA_RUNNING(mp)) > + return -ENOSYS; > + if (!capable(CAP_SYS_ADMIN)) > + return -EPERM; > + > + if (uflags & XFS_QUOTA_UDQ_ACCT) > + flags |= XFS_UQUOTA_ACCT; > + if (uflags & XFS_QUOTA_PDQ_ACCT) > + flags |= XFS_PQUOTA_ACCT; > + if (uflags & XFS_QUOTA_GDQ_ACCT) > + flags |= XFS_GQUOTA_ACCT; > + if (uflags & XFS_QUOTA_UDQ_ENFD) > + flags |= XFS_UQUOTA_ENFD; > + if (uflags & (XFS_QUOTA_PDQ_ENFD|XFS_QUOTA_GDQ_ENFD)) > + flags |= XFS_OQUOTA_ENFD; > + > + switch (op) { > + case Q_XQUOTAON: > + return -xfs_qm_scall_quotaon(mp, flags); > + case Q_XQUOTAOFF: > + if (!XFS_IS_QUOTA_ON(mp)) > + return -EINVAL; > + return -xfs_qm_scall_quotaoff(mp, flags); > + case Q_XQUOTARM: > + if (XFS_IS_QUOTA_ON(mp)) > + return -EINVAL; > + return -xfs_qm_scall_trunc_qfiles(mp, flags); > + } > + > + return -EINVAL; > +} > + > +STATIC int > +xfs_fs_get_xquota( > + struct super_block *sb, > + int type, > + qid_t id, > + struct fs_disk_quota *fdq) > +{ > + struct xfs_mount *mp = XFS_M(sb); > + > + if (!XFS_IS_QUOTA_RUNNING(mp)) > + return -ENOSYS; > + if (!XFS_IS_QUOTA_ON(mp)) > + return -ESRCH; > + > + return -xfs_qm_scall_getquota(mp, id, xfs_quota_type(type), fdq); > +} > + > +STATIC int > +xfs_fs_set_xquota( > + struct super_block *sb, > + int type, > + qid_t id, > + struct fs_disk_quota *fdq) > +{ > + struct xfs_mount *mp = XFS_M(sb); > + > + if (sb->s_flags & MS_RDONLY) > + return -EROFS; > + if (!XFS_IS_QUOTA_RUNNING(mp)) > + return -ENOSYS; > + if (!XFS_IS_QUOTA_ON(mp)) > + return -ESRCH; > + if (!capable(CAP_SYS_ADMIN)) > + return -EPERM; > + > + return xfs_qm_scall_setqlim(mp, id, xfs_quota_type(type), fdq); > +} > + > +struct quotactl_ops xfs_quotactl_operations = { > + .quota_sync = xfs_fs_quota_sync, > + .get_xstate = xfs_fs_get_xstate, > + .set_xstate = xfs_fs_set_xstate, > + .get_xquota = xfs_fs_get_xquota, > + .set_xquota = xfs_fs_set_xquota, > +}; > Index: xfs/fs/xfs/linux-2.6/xfs_super.h > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_super.h 2009-01-21 21:03:27.831294794 +0100 > +++ xfs/fs/xfs/linux-2.6/xfs_super.h 2009-01-24 18:52:52.192428740 +0100 > @@ -93,6 +93,7 @@ extern void xfs_blkdev_issue_flush(struc > > extern const struct export_operations xfs_export_operations; > extern struct xattr_handler *xfs_xattr_handlers[]; > +extern struct quotactl_ops xfs_quotactl_operations; > > #define XFS_M(sb) ((struct xfs_mount *)((sb)->s_fs_info)) > > Index: xfs/fs/xfs/linux-2.6/xfs_sync.h > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.h 2009-01-24 17:58:49.029903800 +0100 > +++ xfs/fs/xfs/linux-2.6/xfs_sync.h 2009-01-24 18:52:52.203535043 +0100 > @@ -19,6 +19,7 @@ > #define XFS_SYNC_H 1 > > struct xfs_mount; > +struct xfs_perag; > > typedef struct bhv_vfs_sync_work { > struct list_head w_list; > Index: xfs/fs/xfs/quota/xfs_qm.h > =================================================================== > --- xfs.orig/fs/xfs/quota/xfs_qm.h 2009-01-21 21:03:27.835294745 +0100 > +++ xfs/fs/xfs/quota/xfs_qm.h 2009-01-24 18:52:52.206583965 +0100 > @@ -178,6 +178,16 @@ extern void xfs_qm_dqdetach(xfs_inode_t > extern int xfs_qm_dqpurge_all(xfs_mount_t *, uint); > extern void xfs_qm_dqrele_all_inodes(xfs_mount_t *, uint); > > +/* quota ops */ > +extern int xfs_qm_scall_trunc_qfiles(xfs_mount_t *, uint); > +extern int xfs_qm_scall_getquota(xfs_mount_t *, xfs_dqid_t, uint, > + fs_disk_quota_t *); > +extern int xfs_qm_scall_setqlim(xfs_mount_t *, xfs_dqid_t, uint, > + fs_disk_quota_t *); > +extern int xfs_qm_scall_getqstat(xfs_mount_t *, fs_quota_stat_t *); > +extern int xfs_qm_scall_quotaon(xfs_mount_t *, uint); > +extern int xfs_qm_scall_quotaoff(xfs_mount_t *, uint); > + > /* vop stuff */ > extern int xfs_qm_vop_dqalloc(xfs_mount_t *, xfs_inode_t *, > uid_t, gid_t, prid_t, uint, > @@ -196,10 +206,6 @@ extern void xfs_qm_freelist_append(xfs_ > extern void xfs_qm_freelist_unlink(xfs_dquot_t *); > extern int xfs_qm_freelist_lock_nowait(xfs_qm_t *); > > -/* system call interface */ > -extern int xfs_qm_quotactl(struct xfs_mount *, int, int, > - xfs_caddr_t); > - > #ifdef DEBUG > extern int xfs_qm_internalqcheck(xfs_mount_t *); > #else > Index: xfs/fs/xfs/quota/xfs_qm_bhv.c > =================================================================== > --- xfs.orig/fs/xfs/quota/xfs_qm_bhv.c 2009-01-21 21:03:27.836295012 +0100 > +++ xfs/fs/xfs/quota/xfs_qm_bhv.c 2009-01-24 18:52:52.206583965 +0100 > @@ -235,7 +235,6 @@ struct xfs_qmops xfs_qmcore_xfs = { > .xfs_dqvopchownresv = xfs_qm_vop_chown_reserve, > .xfs_dqstatvfs = xfs_qm_statvfs, > .xfs_dqsync = xfs_qm_sync, > - .xfs_quotactl = xfs_qm_quotactl, > .xfs_dqtrxops = &xfs_trans_dquot_ops, > }; > EXPORT_SYMBOL(xfs_qmcore_xfs); > Index: xfs/fs/xfs/quota/xfs_qm_syscalls.c > =================================================================== > --- xfs.orig/fs/xfs/quota/xfs_qm_syscalls.c 2009-01-21 21:03:27.836295012 +0100 > +++ xfs/fs/xfs/quota/xfs_qm_syscalls.c 2009-01-24 18:52:52.207553991 +0100 > @@ -57,135 +57,16 @@ > # define qdprintk(s, args...) do { } while (0) > #endif > > -STATIC int xfs_qm_scall_trunc_qfiles(xfs_mount_t *, uint); > -STATIC int xfs_qm_scall_getquota(xfs_mount_t *, xfs_dqid_t, uint, > - fs_disk_quota_t *); > -STATIC int xfs_qm_scall_getqstat(xfs_mount_t *, fs_quota_stat_t *); > -STATIC int xfs_qm_scall_setqlim(xfs_mount_t *, xfs_dqid_t, uint, > - fs_disk_quota_t *); > -STATIC int xfs_qm_scall_quotaon(xfs_mount_t *, uint); > -STATIC int xfs_qm_scall_quotaoff(xfs_mount_t *, uint, boolean_t); > STATIC int xfs_qm_log_quotaoff(xfs_mount_t *, xfs_qoff_logitem_t **, uint); > STATIC int xfs_qm_log_quotaoff_end(xfs_mount_t *, xfs_qoff_logitem_t *, > uint); > -STATIC uint xfs_qm_import_flags(uint); > STATIC uint xfs_qm_export_flags(uint); > -STATIC uint xfs_qm_import_qtype_flags(uint); > STATIC uint xfs_qm_export_qtype_flags(uint); > STATIC void xfs_qm_export_dquot(xfs_mount_t *, xfs_disk_dquot_t *, > fs_disk_quota_t *); > > > /* > - * The main distribution switch of all XFS quotactl system calls. > - */ > -int > -xfs_qm_quotactl( > - xfs_mount_t *mp, > - int cmd, > - int id, > - xfs_caddr_t addr) > -{ > - int error; > - > - ASSERT(addr != NULL || cmd == Q_XQUOTASYNC); > - > - /* > - * The following commands are valid even when quotaoff. > - */ > - switch (cmd) { > - case Q_XQUOTARM: > - /* > - * Truncate quota files. quota must be off. > - */ > - if (XFS_IS_QUOTA_ON(mp)) > - return XFS_ERROR(EINVAL); > - if (mp->m_flags & XFS_MOUNT_RDONLY) > - return XFS_ERROR(EROFS); > - return (xfs_qm_scall_trunc_qfiles(mp, > - xfs_qm_import_qtype_flags(*(uint *)addr))); > - > - case Q_XGETQSTAT: > - /* > - * Get quota status information. > - */ > - return (xfs_qm_scall_getqstat(mp, (fs_quota_stat_t *)addr)); > - > - case Q_XQUOTAON: > - /* > - * QUOTAON - enabling quota enforcement. > - * Quota accounting must be turned on at mount time. > - */ > - if (mp->m_flags & XFS_MOUNT_RDONLY) > - return XFS_ERROR(EROFS); > - return (xfs_qm_scall_quotaon(mp, > - xfs_qm_import_flags(*(uint *)addr))); > - > - case Q_XQUOTAOFF: > - if (mp->m_flags & XFS_MOUNT_RDONLY) > - return XFS_ERROR(EROFS); > - break; > - > - case Q_XQUOTASYNC: > - return xfs_sync_inodes(mp, SYNC_DELWRI); > - > - default: > - break; > - } > - > - if (! XFS_IS_QUOTA_ON(mp)) > - return XFS_ERROR(ESRCH); > - > - switch (cmd) { > - case Q_XQUOTAOFF: > - if (mp->m_flags & XFS_MOUNT_RDONLY) > - return XFS_ERROR(EROFS); > - error = xfs_qm_scall_quotaoff(mp, > - xfs_qm_import_flags(*(uint *)addr), > - B_FALSE); > - break; > - > - case Q_XGETQUOTA: > - error = xfs_qm_scall_getquota(mp, (xfs_dqid_t)id, XFS_DQ_USER, > - (fs_disk_quota_t *)addr); > - break; > - case Q_XGETGQUOTA: > - error = xfs_qm_scall_getquota(mp, (xfs_dqid_t)id, XFS_DQ_GROUP, > - (fs_disk_quota_t *)addr); > - break; > - case Q_XGETPQUOTA: > - error = xfs_qm_scall_getquota(mp, (xfs_dqid_t)id, XFS_DQ_PROJ, > - (fs_disk_quota_t *)addr); > - break; > - > - case Q_XSETQLIM: > - if (mp->m_flags & XFS_MOUNT_RDONLY) > - return XFS_ERROR(EROFS); > - error = xfs_qm_scall_setqlim(mp, (xfs_dqid_t)id, XFS_DQ_USER, > - (fs_disk_quota_t *)addr); > - break; > - case Q_XSETGQLIM: > - if (mp->m_flags & XFS_MOUNT_RDONLY) > - return XFS_ERROR(EROFS); > - error = xfs_qm_scall_setqlim(mp, (xfs_dqid_t)id, XFS_DQ_GROUP, > - (fs_disk_quota_t *)addr); > - break; > - case Q_XSETPQLIM: > - if (mp->m_flags & XFS_MOUNT_RDONLY) > - return XFS_ERROR(EROFS); > - error = xfs_qm_scall_setqlim(mp, (xfs_dqid_t)id, XFS_DQ_PROJ, > - (fs_disk_quota_t *)addr); > - break; > - > - default: > - error = XFS_ERROR(EINVAL); > - break; > - } > - > - return (error); > -} > - > -/* > * Turn off quota accounting and/or enforcement for all udquots and/or > * gdquots. Called only at unmount time. > * > @@ -193,11 +74,10 @@ xfs_qm_quotactl( > * incore, and modifies the ondisk dquot directly. Therefore, for example, > * it is an error to call this twice, without purging the cache. > */ > -STATIC int > +int > xfs_qm_scall_quotaoff( > xfs_mount_t *mp, > - uint flags, > - boolean_t force) > + uint flags) > { > uint dqtype; > int error; > @@ -205,8 +85,6 @@ xfs_qm_scall_quotaoff( > xfs_qoff_logitem_t *qoffstart; > int nculprits; > > - if (!force && !capable(CAP_SYS_ADMIN)) > - return XFS_ERROR(EPERM); > /* > * No file system can have quotas enabled on disk but not in core. > * Note that quota utilities (like quotaoff) _expect_ > @@ -375,7 +253,7 @@ out_error: > return (error); > } > > -STATIC int > +int > xfs_qm_scall_trunc_qfiles( > xfs_mount_t *mp, > uint flags) > @@ -383,8 +261,6 @@ xfs_qm_scall_trunc_qfiles( > int error = 0, error2 = 0; > xfs_inode_t *qip; > > - if (!capable(CAP_SYS_ADMIN)) > - return XFS_ERROR(EPERM); > if (!xfs_sb_version_hasquota(&mp->m_sb) || flags == 0) { > qdprintk("qtrunc flags=%x m_qflags=%x\n", flags, mp->m_qflags); > return XFS_ERROR(EINVAL); > @@ -416,7 +292,7 @@ xfs_qm_scall_trunc_qfiles( > * effect immediately. > * (Switching on quota accounting must be done at mount time.) > */ > -STATIC int > +int > xfs_qm_scall_quotaon( > xfs_mount_t *mp, > uint flags) > @@ -426,9 +302,6 @@ xfs_qm_scall_quotaon( > uint accflags; > __int64_t sbflags; > > - if (!capable(CAP_SYS_ADMIN)) > - return XFS_ERROR(EPERM); > - > flags &= (XFS_ALL_QUOTA_ACCT | XFS_ALL_QUOTA_ENFD); > /* > * Switching on quota accounting must be done at mount time. > @@ -517,7 +390,7 @@ xfs_qm_scall_quotaon( > /* > * Return quota status information, such as uquota-off, enforcements, etc. > */ > -STATIC int > +int > xfs_qm_scall_getqstat( > xfs_mount_t *mp, > fs_quota_stat_t *out) > @@ -582,7 +455,7 @@ xfs_qm_scall_getqstat( > /* > * Adjust quota limits, and start/stop timers accordingly. > */ > -STATIC int > +int > xfs_qm_scall_setqlim( > xfs_mount_t *mp, > xfs_dqid_t id, > @@ -595,9 +468,6 @@ xfs_qm_scall_setqlim( > int error; > xfs_qcnt_t hard, soft; > > - if (!capable(CAP_SYS_ADMIN)) > - return XFS_ERROR(EPERM); > - > if ((newlim->d_fieldmask & > (FS_DQ_LIMIT_MASK|FS_DQ_TIMER_MASK|FS_DQ_WARNS_MASK)) == 0) > return (0); > @@ -742,7 +612,7 @@ xfs_qm_scall_setqlim( > return error; > } > > -STATIC int > +int > xfs_qm_scall_getquota( > xfs_mount_t *mp, > xfs_dqid_t id, > @@ -935,30 +805,6 @@ xfs_qm_export_dquot( > } > > STATIC uint > -xfs_qm_import_qtype_flags( > - uint uflags) > -{ > - uint oflags = 0; > - > - /* > - * Can't be more than one, or none. > - */ > - if (((uflags & (XFS_GROUP_QUOTA | XFS_USER_QUOTA)) == > - (XFS_GROUP_QUOTA | XFS_USER_QUOTA)) || > - ((uflags & (XFS_GROUP_QUOTA | XFS_PROJ_QUOTA)) == > - (XFS_GROUP_QUOTA | XFS_PROJ_QUOTA)) || > - ((uflags & (XFS_USER_QUOTA | XFS_PROJ_QUOTA)) == > - (XFS_USER_QUOTA | XFS_PROJ_QUOTA)) || > - ((uflags & (XFS_GROUP_QUOTA|XFS_USER_QUOTA|XFS_PROJ_QUOTA)) == 0)) > - return (0); > - > - oflags |= (uflags & XFS_USER_QUOTA) ? XFS_DQ_USER : 0; > - oflags |= (uflags & XFS_PROJ_QUOTA) ? XFS_DQ_PROJ : 0; > - oflags |= (uflags & XFS_GROUP_QUOTA) ? XFS_DQ_GROUP: 0; > - return oflags; > -} > - > -STATIC uint > xfs_qm_export_qtype_flags( > uint flags) > { > @@ -979,26 +825,6 @@ xfs_qm_export_qtype_flags( > } > > STATIC uint > -xfs_qm_import_flags( > - uint uflags) > -{ > - uint flags = 0; > - > - if (uflags & XFS_QUOTA_UDQ_ACCT) > - flags |= XFS_UQUOTA_ACCT; > - if (uflags & XFS_QUOTA_PDQ_ACCT) > - flags |= XFS_PQUOTA_ACCT; > - if (uflags & XFS_QUOTA_GDQ_ACCT) > - flags |= XFS_GQUOTA_ACCT; > - if (uflags & XFS_QUOTA_UDQ_ENFD) > - flags |= XFS_UQUOTA_ENFD; > - if (uflags & (XFS_QUOTA_PDQ_ENFD|XFS_QUOTA_GDQ_ENFD)) > - flags |= XFS_OQUOTA_ENFD; > - return (flags); > -} > - > - > -STATIC uint > xfs_qm_export_flags( > uint flags) > { > Index: xfs/fs/xfs/xfs_mount.h > =================================================================== > --- xfs.orig/fs/xfs/xfs_mount.h 2009-01-24 18:32:57.980458591 +0100 > +++ xfs/fs/xfs/xfs_mount.h 2009-01-24 18:52:52.208554118 +0100 > @@ -136,7 +136,6 @@ typedef int (*xfs_dqvopchownresv_t)(stru > struct xfs_dquot *, struct xfs_dquot *, uint); > 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); > > typedef struct xfs_qmops { > xfs_qminit_t xfs_qminit; > @@ -154,7 +153,6 @@ typedef struct xfs_qmops { > xfs_dqvopchownresv_t xfs_dqvopchownresv; > xfs_dqstatvfs_t xfs_dqstatvfs; > xfs_dqsync_t xfs_dqsync; > - xfs_quotactl_t xfs_quotactl; > struct xfs_dqtrxops *xfs_dqtrxops; > } xfs_qmops_t; > > @@ -188,8 +186,6 @@ typedef struct xfs_qmops { > (*(ip)->i_mount->m_qm_ops->xfs_dqstatvfs)(ip, statp) > #define XFS_QM_DQSYNC(mp, flags) \ > (*(mp)->m_qm_ops->xfs_dqsync)(mp, flags) > -#define XFS_QM_QUOTACTL(mp, cmd, id, addr) \ > - (*(mp)->m_qm_ops->xfs_quotactl)(mp, cmd, id, addr) > > #ifdef HAVE_PERCPU_SB > > Index: xfs/fs/xfs/xfs_qmops.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_qmops.c 2009-01-21 21:03:27.866294994 +0100 > +++ xfs/fs/xfs/xfs_qmops.c 2009-01-24 18:52:52.208554118 +0100 > @@ -126,7 +126,6 @@ static struct xfs_qmops xfs_qmcore_stub > .xfs_dqvopchownresv = (xfs_dqvopchownresv_t) fs_noerr, > .xfs_dqstatvfs = (xfs_dqstatvfs_t) fs_noval, > .xfs_dqsync = (xfs_dqsync_t) fs_noerr, > - .xfs_quotactl = (xfs_quotactl_t) fs_nosys, > }; > > int > Index: xfs/fs/xfs/xfs_quota.h > =================================================================== > --- xfs.orig/fs/xfs/xfs_quota.h 2009-01-21 21:03:27.866294994 +0100 > +++ xfs/fs/xfs/xfs_quota.h 2009-01-24 18:52:52.211583834 +0100 > @@ -18,6 +18,8 @@ > #ifndef __XFS_QUOTA_H__ > #define __XFS_QUOTA_H__ > > +struct xfs_trans; > + > /* > * The ondisk form of a dquot structure. > */ > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs ---end quoted text--- From jigsawcampaigns@sun.ztfsg.com Wed May 13 08:37:13 2009 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 (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4DDbCSl147733 for ; Wed, 13 May 2009 08:37:13 -0500 X-ASG-Debug-ID: 1242222116-419000280000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sun.ztfsg.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4A2A2FA4CCE for ; Wed, 13 May 2009 06:41:56 -0700 (PDT) Received: from sun.ztfsg.com (jsdlcd.sun.ztfsg.com [74.201.49.29]) by cuda.sgi.com with ESMTP id Xt10hSMlAQKSvuxi for ; Wed, 13 May 2009 06:41:56 -0700 (PDT) Date: Wed, 13 May 2009 08:36:53 -0500 Message-Id: <1242221813.eb40.SUND.5418.1989381MSOSI1:114OSIMS@sun.ztfsg.com> From: "Sun Microsystems" Reply-To: "Sun Microsystems" To: xfs@oss.sgi.com X-ASG-Orig-Subj: Speed up product development and accelerate your workflow Subject: Speed up product development and accelerate your workflow MIME-Version: 1.0 X-Mailer:eBizmailer4.0 List-Unsubscribe: X-Header:zetainteractive20090513085515 Content-Type: multipart/alternative; boundary="---===_OSI_MRIANVNII_16062001_617.1242221813-199212" X-Barracuda-Connect: jsdlcd.sun.ztfsg.com[74.201.49.29] X-Barracuda-Start-Time: 1242222119 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0256 1.0000 -1.8546 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.85 X-Barracuda-Spam-Status: No, SCORE=-1.85 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.25674 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean -----===_OSI_MRIANVNII_16062001_617.1242221813-199212 Content-Type: text/plain; charset="ISO-8859-1" Can't read this email? Click on the link below to read it online. http://sun.ztfsg.com/js40/c2.php?SUND/1989381/5437/T/N/E/http%3A%2F%2Fsun.ztfsg.com/js40/web/sunmicrosysstems/oeabi/web.php%3Fc%3DSUND%26bi%3D1989381%26email%3Dxfs%40oss%2Esgi%2Ecom%26contenttype%3DT ========================================================= SPEED UP PRODUCT DEVELOPMENT AND ACCELERATE YOUR WORKFLOW using Sun Storage 7000 Unified Storage Systems for Manufacturing Achieve new levels of performance, scalability and cost savings. Sun's innovative Unified Storage Systems radically simplify the deployment of network attach storage. Learn how to deliver the necessary I/O throughput for HPC applications http://sun.ztfsg.com/js40/c2.php?SUND/1989381/5438/T/N/E/http%3A%2F%2Fwww.sun.com/offers/details/Reduce_Costs_HPC.xml%3Fcid%3D927751 * Get the latest information in a bi-weekly newsletter, Sun HPC News http://sun.ztfsg.com/js40/c2.php?SUND/1989381/5444/T/N/E/https%3A%2F%2Fcommunications.sun.com/p/OLM2/HPC/hpcnews_regpage.jsp%3Fcid%3D927752 * Try a Sun Storage 7000 Unified Storage System FREE for 60 days. You pay nothing — not even shipping. If you decide to keep it, buy at 20% off. http://sun.ztfsg.com/js40/c2.php?SUND/1989381/5439/T/N/E/http%3A%2F%2Fwww.sun.com/tryandbuy/products.jsp%3Fcatid%3D42853a32-63d5-11d7-905b-a222e7bdf70c%26cid%3D927753 ========================================================= Get the guide to improving workflows http://sun.ztfsg.com/js40/c2.php?SUND/1989381/5438/T/N/E/http%3A%2F%2Fwww.sun.com/offers/details/Reduce_Costs_HPC.xml%3Fcid%3D927751 Talk to an HPC Expert http://sun.ztfsg.com/js40/c2.php?SUND/1989381/5445/T/N/E/https%3A%2F%2Fwww2.sun.de/dct/forms/reg_us_2102_179_0.jsp%3Fcid%3D927754 ========================================================= Subscribe to Sun HPC News http://sun.ztfsg.com/js40/c2.php?SUND/1989381/5444/T/N/E/https%3A%2F%2Fcommunications.sun.com/p/OLM2/HPC/hpcnews_regpage.jsp%3Fcid%3D927752 ========================================================= You are receiving this email from Sun Microsystems because your contact information was provided by Jigsaw. Sun respects your privacy, and you can unsubscribe from these emails http://sun.ztfsg.com/js40/c2.php?SUND/1989381/5440/T/N/E/http%3A%2F%2Fzt03.net/custapps/Sun_Microsystems/sun_microsys.php%3Fttk%3Dxfs%40oss%2Esgi%2Ecom%26skt%3D1989381%26campid%3DSpeed%2520up%2520product%2520development%2520and%2520accelerate%2520your%2520workflow_051309 or find out more about Sun's privacy policy. http://sun.ztfsg.com/js40/c2.php?SUND/1989381/5441/T/N/E/http%3A%2F%2Fwww.sun.com/privacy To update or change your profile in Jigsaw, go to http://sun.ztfsg.com/js40/c2.php?SUND/1989381/5442/T/N/E/http%3A%2F%2Fwww.jigsaw.com Privacy Policy http://sun.ztfsg.com/js40/c2.php?SUND/1989381/5441/T/N/E/http%3A%2F%2Fwww.sun.com/privacy Trademarks http://sun.ztfsg.com/js40/c2.php?SUND/1989381/5443/T/N/E/http%3A%2F%2Fwww.sun.com/suntrademarks/ If you prefer to no longer receive any email from Sun, add yourself to the * Sun Do Not Email List http://sun.ztfsg.com/js40/c2.php?SUND/1989381/5440/T/N/E/http%3A%2F%2Fzt03.net/custapps/Sun_Microsystems/sun_microsys.php%3Fttk%3Dxfs%40oss%2Esgi%2Ecom%26skt%3D1989381%26campid%3DSpeed%2520up%2520product%2520development%2520and%2520accelerate%2520your%2520workflow_051309 Sun Microsystems, Inc., 18 Network Circle, M/S: UMPK18-124, Attn: Global Marketing, Menlo Park, CA 94025 USA (c) 2009 Sun Microsystems, Inc. All rights reserved. -----===_OSI_MRIANVNII_16062001_617.1242221813-199212 Content-Type: text/html; charset="ISO-8859-1" Content-Transfer-Encoding: quoted-printable =0D =0D =0D Sun Storage Cluster — Lustre eSeminar Email 1=0D =0D =0D
=0D Can't read this email? Click here to read it onl= ine.
 
=0D
=0D =0D =0D =0D =0D
3D""3D""=0D =
3D""
=0D =0D 3D"Sun"=0D = =0D =0D Speed up product development and accelerat= e your workflow
using= Sun Storage 7000 Unified Storage Systems
=0D
3D""
= =0D Achieve new levels of performance, scalability and cost sa= vings. Sun's innovative Unified Storage Systems radically simplify the de= ployment of network attach storage.=0D
3D""
3D""
=0D Learn how to de= liver the necessary I/O throughput for HPC applications=0D
3D""
= =0D »
Get the = latest information in a bi-weekly newsletter,
   = Sun HPC News
=0D =0D =0D =0D » Try a Sun Storage 7000 Unified Storage System FREE
    for 60 days
. You pay nothing &mda= sh; not even shipping.
    If you decide to keep it, = buy at 20% off.=0D =0D =0D =0D =0D
3D""
3D""
=0D =0D =0D 3D"Get=0D 3D"Talk=0D =0D
3D""
= =0D =0D =0D =0D = =0D =0D
=0D =0D »=0D Subs= cribe to Sun HPC News=0D =0D
=0D
3D""
=0D =0D =0D =0D =0D =0D =0D
3D""=0D =0D =0D =0D =0D
=0D You are receiving this email from Sun Microsystems because your contact i= nformation was provided by Jigsaw. Sun respects your privacy, and you can= unsubscribe from these emails or find ou= t more about Sun's privacy policy. To update or change your profile in Ji= gsaw, go to www.jigs= aw.com.

=0D Pri= vacy Policy | Trademarks

=0D If you prefer to no longer receive any email from Sun, add yourself to th= e * Sun Do Not Email List *.

=0D =0D Sun Microsystems, Inc., 18 Network Circle, M/S: UMPK18-124, Attn: Global = Marketing, Menlo Park, CA 94025 USA

=0D =0D © 2009 Sun Microsystems, Inc. All rights reserved.=0D
=0D
=0D =0D
=0D =0D

=0D =0D =0D -----===_OSI_MRIANVNII_16062001_617.1242221813-199212-- From sandeen@sandeen.net Wed May 13 12:59:12 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4DHxBRU162623 for ; Wed, 13 May 2009 12:59:12 -0500 X-ASG-Debug-ID: 1242237838-78e101a60000-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 A43D1FA76D5 for ; Wed, 13 May 2009 11:03:58 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id 7dkfgm78BRBwaJ5a for ; Wed, 13 May 2009 11:03:58 -0700 (PDT) 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 n4DHxFY2004269; Wed, 13 May 2009 13:59:15 -0400 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 n4DHxEEr001587; Wed, 13 May 2009 13:59:15 -0400 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 n4DHxD79018448; Wed, 13 May 2009 13:59:14 -0400 Message-ID: <4A0B0A71.5010609@sandeen.net> Date: Wed, 13 May 2009 12:59:13 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: "Vitaly V. Ch" CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair after reboot refuse repair my filesystem Subject: Re: xfs_repair after reboot refuse repair my filesystem References: <6efe08af0905130010g5e21f4d1w9efb4ed200b5b152@mail.gmail.com> In-Reply-To: <6efe08af0905130010g5e21f4d1w9efb4ed200b5b152@mail.gmail.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: 1242237839 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25690 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Vitaly V. Ch wrote: > I try few version of xfs_repair, including 3.0.1 and 2.10.2, but > always receive something like: > > xfs_repair: dir2.c:2133: process_dir2: Assertion `(ino > !=mp->m_sb.sb_rootino && ino != *parent) || (ino == > mp->m_sb.sb_rootino && (ino == *parent || need_root_dotdot == 1))' > failed. > > How I can repair my data? > > compressed metadump attached. > > there was no hardware failure. Hm, which OS/arch? works ok for me on a loopback file, although subsequent repairs do still give me: bogus .. inode number (0) in directory inode 128, clearing inode number [root@inode test]# rpm -qf `which xfs_repair` xfsprogs-3.0.0-2.fc11.x86_64 [root@inode test]# xfs_mdrestore /root/xfs.dump testfile [root@inode test]# xfs_repair testfile Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 entry "" in shortform directory 128 references invalid inode 0 zero length entry in shortform dir 128, junking 3 entries corrected entry count in directory 128, was 3, now 0 corrected directory 128 size, was 69, now 6 bogus .. inode number (0) in directory inode 128, clearing inode number zero length entry in shortform dir 132, junking 2 entries corrected entry count in directory 132, was 2, now 0 corrected directory 132 size, was 59, now 6 bogus .. inode number (0) in directory inode 132, clearing inode number entry "" in shortform directory 133 references invalid inode 0 zero length entry in shortform dir 133, junking 255 entries corrected directory 133 size, was 8, now 6 entry "" in shortform directory 156 references invalid inode 0 zero length entry in shortform dir 156, junking 255 entries corrected directory 156 size, was 8, now 6 bogus .. inode number (0) in directory inode 156, clearing inode number - agno = 1 zero length entry in shortform dir 268435584, resetting to 22 corrected directory 268435584 size, was 31, now 35 directory 268435584 offsets too high corrected entry offsets in directory 268435584 bogus .. inode number (0) in directory inode 268435584, clearing inode number - agno = 2 entry "" in shortform directory 536871040 references invalid inode 0 zero length entry in shortform dir 536871040, junking 2 entries corrected entry count in directory 536871040, was 2, now 0 corrected directory 536871040 size, was 46, now 6 bogus .. inode number (0) in directory inode 536871040, clearing inode number - agno = 3 zero length entry in shortform dir 805306496, junking 255 entries corrected directory 805306496 size, was 8, now 6 - agno = 4 entry "" in shortform directory 1073741952 references invalid inode 0 zero length entry in shortform dir 1073741952, junking 4 entries corrected entry count in directory 1073741952, was 4, now 0 corrected directory 1073741952 size, was 101, now 6 - agno = 5 entry "" in shortform directory 1342177408 references invalid inode 0 zero length entry in shortform dir 1342177408, junking 255 entries corrected directory 1342177408 size, was 8, now 6 - agno = 6 zero length entry in shortform dir 1610612864, junking 255 entries corrected directory 1610612864 size, was 8, now 6 - agno = 7 entry "" in shortform directory 1879048320 references invalid inode 0 zero length entry in shortform dir 1879048320, junking 255 entries corrected directory 1879048320 size, was 8, now 6 - agno = 8 zero length entry in shortform dir 2147483776, junking 255 entries corrected directory 2147483776 size, was 8, now 6 - agno = 9 - agno = 10 - agno = 11 - agno = 12 - agno = 13 - agno = 14 - agno = 15 - 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 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 bogus .. inode number (0) in directory inode 128, clearing inode number bogus .. inode number (0) in directory inode 132, clearing inode number - agno = 1 entry "=(XC j]e P"^)58|x" in shortform directory 268435584 references invalid inode 0 junking entry "=(XC j]e P"^)58|x" in directory inode 268435584 bogus .. inode number (0) in directory inode 268435584, clearing inode number bogus .. inode number (0) in directory inode 156, clearing inode number - agno = 2 bogus .. inode number (0) in directory inode 536871040, clearing inode number - agno = 3 - agno = 4 - agno = 5 - agno = 6 - agno = 7 - agno = 8 - agno = 9 - agno = 10 - agno = 11 - agno = 12 - agno = 13 - agno = 14 - agno = 15 - agno = 16 - agno = 17 - agno = 18 - 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 - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... disconnected dir inode 132, moving to lost+found disconnected dir inode 133, moving to lost+found disconnected dir inode 156, moving to lost+found disconnected dir inode 268435584, moving to lost+found disconnected dir inode 268435585, moving to lost+found disconnected dir inode 536871040, moving to lost+found disconnected dir inode 805306496, moving to lost+found disconnected dir inode 1073741952, moving to lost+found disconnected dir inode 1342177408, moving to lost+found disconnected dir inode 1610612864, moving to lost+found disconnected dir inode 1879048320, moving to lost+found disconnected dir inode 2147483776, moving to lost+found Phase 7 - verify and correct link counts... resetting inode 128 nlinks from 6 to 3 resetting inode 132 nlinks from 4 to 2 resetting inode 268435584 nlinks from 3 to 2 resetting inode 536871040 nlinks from 4 to 2 resetting inode 1073741952 nlinks from 6 to 2 Note - quota info will be regenerated on next quota mount. done From pvlogin@yahoo.com Wed May 13 16:05:55 2009 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_63 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4DL5sN4173269 for ; Wed, 13 May 2009 16:05:54 -0500 X-ASG-Debug-ID: 1242249038-4cf400fe0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web65604.mail.ac4.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 357B3FA9B26 for ; Wed, 13 May 2009 14:10:41 -0700 (PDT) Received: from web65604.mail.ac4.yahoo.com (web65604.mail.ac4.yahoo.com [76.13.9.72]) by cuda.sgi.com with SMTP id pR8V44sdcVzb1KuQ for ; Wed, 13 May 2009 14:10:41 -0700 (PDT) Received: (qmail 18212 invoked by uid 60001); 13 May 2009 21:05:18 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1242248718; bh=AfgOHrctxu+XpbAZUkhLZNyt2NNF12dta12ZFAYDSPQ=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type; b=CDV6yVv7NLR4TYFNJv/7CBEKl2LSnLInHs1qdW7g53CEO582EtPdOXTMWNL1GR3JKgroXKc5ds6oLYQkHcLx6q9/ovwXOsvlY9aau9vC6nAi1RtdDz698j77L/gj8z7aURJJvWzSyrZ08goSf7iNmectEH/vgFVjXD3BALJEJcs= DomainKey-Signature:a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type; b=a/+gWrCPdY1rTDgECiuIJqx58ba8X8wXPVibNno5YhQjNoKN0BKEysGhfZHW3n8Ag6NJxn199xfWFLjcR6DSdxk+8SKq5JfyMuO19Ht9yrGgUZhY8U7ZvuH+A0ORTCnrkP8dGyJkl+fxKtiBx1m2JHZnCKCVmNhrs1MsZHK+jss=; Message-ID: <705795.15734.qm@web65604.mail.ac4.yahoo.com> X-YMail-OSG: pna24XQVM1lPaiUk1cUJF2nVn.Sh_2Ozv41tShqBgXGmGbjJJB4ytEaxgmRseN72LhKz.PZyKYFPvUpfvY1.YLY6zUNmGUzmK.gjQAUtLbaKNOuOx68QUT1Dkvle.oWi3jx3rOOtYSSCM3I3kkYMzfo8t50equ8t.wd5XR6ifDF58ZgsRVVI4PT3o_CnQ8WQcFegBBhKB673vnF1.RD.BFdag8fNO7eWFyW24gisMUURzNvs_TX_cxqBgyU00RQ2BlqZyBYTewsjApBF4t7MJiqPQMn7ew5W6JzEQGW_rfj_iEvMnB0N3I5t6Wv1UkjdK75MMXs1Bam8mXCvCGJQzw-- Received: from [204.15.21.171] by web65604.mail.ac4.yahoo.com via HTTP; Wed, 13 May 2009 14:05:16 PDT X-Mailer: YahooMailRC/1277.43 YahooMailWebService/0.7.289.10 References: <283244.29270.qm@web65608.mail.ac4.yahoo.com> <4A0A0E76.6000701@sandeen.net> <618437.93111.qm@web65601.mail.ac4.yahoo.com> <4A0A55E0.4010202@sandeen.net> Date: Wed, 13 May 2009 14:05:16 -0700 (PDT) From: p v X-ASG-Orig-Subj: Re: file preallocation without unwritten flag being set Subject: Re: file preallocation without unwritten flag being set To: Eric Sandeen Cc: xfs@oss.sgi.com In-Reply-To: <4A0A55E0.4010202@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: web65604.mail.ac4.yahoo.com[76.13.9.72] X-Barracuda-Start-Time: 1242249042 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25702 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean doesn't seem to work - I tried to clear the extflg in the versionnum of the superblock (in every copy of it as well) but it doesn't work. The flag is still set on all extents. xfs_db> version versionnum [0xb4a4+0x8] = V4,NLINK,ALIGN,DIRV2,LOGV2,EXTFLG,MOREBITS,ATTR2 xfs_db> version 0xa4a4 0x8 versionnum [0xa4a4+0x8] = V4,NLINK,ALIGN,DIRV2,LOGV2,MOREBITS,ATTR2 typeset -i agcount=$(xfs_db -c "sb" -c "print" /dev/sda | grep agcount) typeset -i i=0 while [[ $i != $agcount ]] do xfs_db -x -c "sb $i" -c "write versionnum 0xa4a4" /dev/sda i=i+1 done And once I make the file xfs_repair complains and resets the sb flag - my guess is that in the extent allocation path it is hardcoded for the version 4 - any extent allocated beyond file size will get the flag ... Also - 2 questions - 1) what is inode64 and where can I find out all of the undocumented mkfs/mount options (it's unfortunate that such a good fs doesnt' have a correspondingly good documentation) 2) why is the largest extent size limited to xxx blocks(can't find out thenumber - when does the inode get finally flushed? ls -i reports 19 as the inode number but even after unmounting inode 19 in xfs_db still shows a free inode - is it still only in the log???) ? I assumed that xfs_bmap gets me the correct number of extents but now looking at the inode with xfs_db it's obvious that xfs_bmap reports contiguous ranges rather than actual extents in the blockmap tree thx Peter Vajgel ----- Original Message ---- From: Eric Sandeen To: p v Cc: xfs@oss.sgi.com Sent: Tuesday, May 12, 2009 10:08:48 PM Subject: Re: file preallocation without unwritten flag being set p v wrote: > > > I want to avoid any metadata modifications while doing O_DIRECT reads > (the fs is mounted with noatime). Right now I am doing it mostly for > testing - I am seeing a performance degradation going from raw to xfs > on a 10TB filesystem - probably due to my application but I am trying > to narrow it down so I am starting with running randomio benchmark on > raw - then 10TB file, then 10 1TB files, then 100 100GB files, ... you may want to try the inode64 mount option so the allocator is free to roam your whole 10T ... > But in general certain applications can definitely take care of the > preallocated space (db, FB haystack, ...). Ok, so it sounds like you do understand the implications and you want to be able to write into prealloc space without any metadata updates as they are converted to initialized extents... :) > What they require is > minimal fragmentation so they would prefer to preallocate the space > (fill the whole fs with contigous files) and then maintain in-files > app specific metadata (such as valid offsets of initialized data, > ...). What I would really like is to have vxfs equivalent of setext > options - > > setext -r -f chggsize > > And on top of that I would really love to have is vxfs equivalent of > "nomtime" mount option. Then with O_DIRECT I have raw-like > performance. > > With the unwritten mkfs option I could get the setext semantics. So > what's the trick (before I dive into the xfs layout)? I am guessing > that there is no equivalent for nomtime option? well, the unwritten=0 option did get removed: http://git.kernel.org/?p=fs/xfs/xfsprogs-dev.git;a=commitdiff;h=8d537733f52a642d471f6781f32f306241dd4308 TBH I'm not entirely sure why. The unwritten flag is per-filesystem not per-file; you can still clear that feature bit: #define XFS_SB_VERSION_EXTFLGBIT 0x1000 by using xfs_db in -x expert mode to rewrite every superblock's "versionnum" without that bit set. The xfs_db "version" command will give you a more textual representation of what is actually set before & after. You could script the sb rewrites... For what it's worth, your xfs_db tricks below to preallocate seem a bit ... tricky. This should suffice: xfs_io -f /hay/foo xfs_io> resvsp 0 1024g xfs_io> truncate 1024g xfs_io> quit Oh and you're right, there's no "nomtime" option AFAIK. -Eric > Thanks > > Peter Vajgel From sandeen@sandeen.net Wed May 13 16:48:35 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43, 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4DLmZsb176421 for ; Wed, 13 May 2009 16:48:35 -0500 X-ASG-Debug-ID: 1242251321-4a7d023d0000-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 538861D30550 for ; Wed, 13 May 2009 14:48:41 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id DdNLU5o9aFvGimKg for ; Wed, 13 May 2009 14:48:41 -0700 (PDT) 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 n4DLmfem002328; Wed, 13 May 2009 17:48:41 -0400 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 n4DLme3b003858; Wed, 13 May 2009 17:48:40 -0400 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 n4DLmdgQ015317; Wed, 13 May 2009 17:48:39 -0400 Message-ID: <4A0B4037.70402@sandeen.net> Date: Wed, 13 May 2009 16:48:39 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: p v CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: file preallocation without unwritten flag being set Subject: Re: file preallocation without unwritten flag being set References: <283244.29270.qm@web65608.mail.ac4.yahoo.com> <4A0A0E76.6000701@sandeen.net> <618437.93111.qm@web65601.mail.ac4.yahoo.com> <4A0A55E0.4010202@sandeen.net> <705795.15734.qm@web65604.mail.ac4.yahoo.com> In-Reply-To: <705795.15734.qm@web65604.mail.ac4.yahoo.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: 1242251322 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25703 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean p v wrote: > doesn't seem to work - I tried to clear the extflg in the versionnum > of the superblock (in every copy of it as well) but it doesn't work. > The flag is still set on all extents. > > xfs_db> version versionnum [0xb4a4+0x8] = > V4,NLINK,ALIGN,DIRV2,LOGV2,EXTFLG,MOREBITS,ATTR2 xfs_db> version > 0xa4a4 0x8 versionnum [0xa4a4+0x8] = > V4,NLINK,ALIGN,DIRV2,LOGV2,MOREBITS,ATTR2 > > typeset -i agcount=$(xfs_db -c "sb" -c "print" /dev/sda | grep > agcount) typeset -i i=0 while [[ $i != $agcount ]] do xfs_db -x -c > "sb $i" -c "write versionnum 0xa4a4" /dev/sda i=i+1 done > > And once I make the file xfs_repair complains and resets the sb flag > - my guess is that in the extent allocation path it is hardcoded for > the version 4 - any extent allocated beyond file size will get the > flag ... Oh, you'd probably need to do this when there are no files already with the flag, i.e. on a fresh fs I think. > Also - 2 questions - > > 1) what is inode64 and where can I find out all of the undocumented > mkfs/mount options (it's unfortunate that such a good fs doesnt' have > a correspondingly good documentation) all options for mkfs should be doc'd in the mkfs.xfs manpage inode64 is also doc'd in my mount manpage: inode64 Indicates that XFS is allowed to create inodes at any location in the filesystem, including those which will result in inode numbers occupying more than 32 bits of significance. This is provided for backwards compatibil- ity, but causes problems for backup applications that cannot handle large inode numbers. > 2) why is the largest extent size limited to xxx blocks(can't find > out thenumber ... various containers that may limit the max size, I don't remember offhand - when does the inode get finally flushed? ls -i > reports 19 as the inode number but even after unmounting inode 19 in > xfs_db still shows a free inode - is it still only in the log???) ? I > assumed that xfs_bmap gets me the correct number of extents but now > looking at the inode with xfs_db it's obvious that xfs_bmap reports > contiguous ranges rather than actual extents in the blockmap tree hm, some cut & paste examples might be good here to show us exactly what you're seeing. -Eric From sandeen@sandeen.net Wed May 13 16:56:26 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_54,J_CHICKENPOX_64,J_CHICKENPOX_92 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4DLuQnK177176 for ; Wed, 13 May 2009 16:56:26 -0500 X-ASG-Debug-ID: 1242251792-2f89008d0000-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 8A9C1284709 for ; Wed, 13 May 2009 14:56:33 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id f9HVYFZjezAUd00d for ; Wed, 13 May 2009 14:56:33 -0700 (PDT) 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 n4DLuWJT004153 for ; Wed, 13 May 2009 17:56:32 -0400 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 n4DLuVCg006270 for ; Wed, 13 May 2009 17:56:32 -0400 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 n4DLuVTW016737 for ; Wed, 13 May 2009 17:56:31 -0400 Message-ID: <4A0B420E.3070908@sandeen.net> Date: Wed, 13 May 2009 16:56:30 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: xfs mailing list X-ASG-Orig-Subj: [PATCH, RFC] xfstests: random fallocate calls in fsx Subject: [PATCH, RFC] xfstests: random fallocate calls in fsx 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: 1242251793 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25705 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Seems to work for me. Any comments/suggestions? I can probably make it fall back to the xfs ioctl if fallocate isn't supported, if strongly desired. diff --git a/aclocal.m4 b/aclocal.m4 index 52f1c7d..120c1e0 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -511,3 +511,14 @@ AC_DEFUN([AC_PACKAGE_NEED_XFSCTL_MACRO], ]) ]) +AC_DEFUN([AC_PACKAGE_WANT_FALLOCATE], + [ AC_MSG_CHECKING([for fallocate]) + AC_TRY_COMPILE([ +#include + ], [ + fallocate(0, 0, 0, 0); + ], have_fallocate=true + AC_MSG_RESULT(true), + AC_MSG_RESULT(false)) + AC_SUBST(have_fallocate) + ]) diff --git a/configure.in b/configure.in index 32a2496..61adac7 100644 --- a/configure.in +++ b/configure.in @@ -62,6 +62,7 @@ in AC_PACKAGE_WANT_GDBM AC_PACKAGE_WANT_AIO AC_PACKAGE_WANT_DMAPI + AC_PACKAGE_WANT_FALLOCATE ;; esac diff --git a/include/builddefs.in b/include/builddefs.in index 636f632..6a51b99 100644 --- a/include/builddefs.in +++ b/include/builddefs.in @@ -56,6 +56,7 @@ RPM_VERSION = @rpm_version@ ENABLE_SHARED = @enable_shared@ HAVE_DB = @have_db@ HAVE_AIO = @have_aio@ +HAVE_FALLOCATE = @have_fallocate@ HAVE_DMAPI = @have_dmapi@ HAVE_ATTR_LIST = @have_attr_list@ diff --git a/ltp/Makefile b/ltp/Makefile index bcdac84..3b81101 100644 --- a/ltp/Makefile +++ b/ltp/Makefile @@ -25,6 +25,10 @@ LCFLAGS += -DAIO LIBAIO = -laio -lpthread endif +ifeq ($(HAVE_FALLOCATE), true) +LCFLAGS += -DFALLOCATE +endif + default: $(TARGETS) include $(BUILDRULES) diff --git a/ltp/fsx.c b/ltp/fsx.c index e4c528d..fe01f6e 100644 --- a/ltp/fsx.c +++ b/ltp/fsx.c @@ -32,6 +32,9 @@ #ifdef AIO #include #endif +#ifdef FALLOCATE +#include +#endif #ifndef MAP_FILE # define MAP_FILE 0 @@ -65,6 +68,7 @@ int logcount = 0; /* total ops */ #define OP_MAPREAD 5 #define OP_MAPWRITE 6 #define OP_SKIPPED 7 +#define OP_FALLOCATE 8 #undef PAGE_SIZE #define PAGE_SIZE getpagesize() @@ -105,6 +109,11 @@ long numops = -1; /* -N flag */ int randomoplen = 1; /* -O flag disables it */ int seed = 1; /* -S flag */ int mapped_writes = 1; /* -W flag disables */ +#ifdef FALLOCATE +int fallocate_calls = 1; /* -F flag disables */ +#else +int fallocate_calls = 0; /* -F flag disables */ +#endif int mapped_reads = 1; /* -R flag disables it */ int fsxgoodfd = 0; int o_direct; /* -Z */ @@ -202,6 +211,7 @@ logdump(void) { int i, count, down; struct log_entry *lp; + char *falloc_type[3] = {"PAST_EOF", "EXTENDING", "INTERIOR"}; prt("LOG DUMP (%d total operations):\n", logcount); if (logcount < LOGSIZE) { @@ -265,6 +275,14 @@ logdump(void) badoff < lp->args[!!down]) prt("\t******WWWW"); break; + case OP_FALLOCATE: + /* 0: offset 1: length 2: where alloced */ + prt("FALLOCATE %s\tfrom 0x%x to 0x%x", + falloc_type[lp->args[2]], lp->args[0], lp->args[0] + lp->args[1]); + if (badoff >= lp->args[0] && + badoff < lp->args[0] + lp->args[1]) + prt("\t******FFFF"); + break; case OP_SKIPPED: prt("SKIPPED (no operation)"); break; @@ -770,6 +788,64 @@ dotruncate(unsigned size) } } +#ifdef FALLOCATE +/* fallocate is basically a no-op unless extending, then a lot like a truncate */ +void +dofallocate(unsigned offset, unsigned length) +{ + unsigned end_offset; + int keep_size; + + if (length == 0) { + if (!quiet && testcalls > simulatedopcount) + prt("skipping zero length fallocate\n"); + log4(OP_SKIPPED, OP_FALLOCATE, offset, length); + return; + } + + keep_size = random() % 2; + + end_offset = keep_size ? 0 : offset + length; + + if (end_offset > biggest) { + biggest = end_offset; + if (!quiet && testcalls > simulatedopcount) + prt("fallocating to largest ever: 0x%x\n", end_offset); + } + + /* + * last arg: + * 1: allocate past EOF + * 2: extending prealloc + * 3: interior prealloc + */ + log4(OP_FALLOCATE, offset, length, (end_offset > file_size) ? (keep_size ? 1 : 2) : 3); + + if (end_offset > file_size) { + memset(good_buf + file_size, '\0', end_offset - file_size); + file_size = end_offset; + } + + if (testcalls <= simulatedopcount) + return; + + if ((progressinterval && testcalls % progressinterval == 0) || + (debug && (monitorstart == -1 || monitorend == -1 || + end_offset <= monitorend))) + prt("%lu falloc\tfrom 0x%x to 0x%x\n", testcalls, offset, length); + if (fallocate(fd, keep_size ? FALLOC_FL_KEEP_SIZE : 0, (loff_t)offset, (loff_t)length) == -1) { + prt("fallocate: %x to %x\n", offset, length); + prterr("dofallocate: fallocate"); + report_failure(161); + } +} +#else +void +dofallocate(unsigned offset, unsigned length) +{ + return; +} +#endif void writefileimage() @@ -823,7 +899,7 @@ test(void) unsigned long offset; unsigned long size = maxoplen; unsigned long rv = random(); - unsigned long op = rv % (3 + !lite + mapped_writes); + unsigned long op = rv % (3 + !lite + mapped_writes + fallocate_calls); /* turn off the map read if necessary */ @@ -845,22 +921,33 @@ test(void) prt("%lu...\n", testcalls); /* - * READ: op = 0 - * WRITE: op = 1 - * MAPREAD: op = 2 - * TRUNCATE: op = 3 - * MAPWRITE: op = 3 or 4 + * lite !lite + * READ: op = 0 0 + * WRITE: op = 1 1 + * MAPREAD: op = 2 2 + * TRUNCATE: op = - 3 + * MAPWRITE: op = 3 4 + * FALLOCATE: op = - 5 */ if (lite ? 0 : op == 3 && (style & 1) == 0) /* vanilla truncate? */ dotruncate(random() % maxfilelen); else { if (randomoplen) size = random() % (maxoplen+1); + + /* truncate */ if (lite ? 0 : op == 3) dotruncate(size); else { offset = random(); - if (op == 1 || op == (lite ? 3 : 4)) { + /* fallocate */ + if (op == 5) { + offset %= maxfilelen; + if (offset + size > maxfilelen) + size = maxfilelen - offset; + dofallocate(offset, size); + /* write / mapwrite */ + } else if (op == 1 || op == (lite ? 3 : 4)) { offset %= maxfilelen; if (offset + size > maxfilelen) size = maxfilelen - offset; @@ -868,6 +955,7 @@ test(void) domapwrite(offset, size); else dowrite(offset, size); + /* read / mapread */ } else { if (file_size) offset %= file_size; @@ -904,7 +992,7 @@ void usage(void) { fprintf(stdout, "usage: %s", - "fsx [-dnqxALOWZ] [-b opnum] [-c Prob] [-l flen] [-m start:end] [-o oplen] [-p progressinterval] [-r readbdy] [-s style] [-t truncbdy] [-w writebdy] [-D startingop] [-N numops] [-P dirpath] [-S seed] fname\n\ + "fsx [-dnqxAFLOWZ] [-b opnum] [-c Prob] [-l flen] [-m start:end] [-o oplen] [-p progressinterval] [-r readbdy] [-s style] [-t truncbdy] [-w writebdy] [-D startingop] [-N numops] [-P dirpath] [-S seed] fname\n\ -b opnum: beginning operation number (default 1)\n\ -c P: 1 in P chance of file close+open at each op (default infinity)\n\ -d: debug output for all operations\n\ @@ -925,8 +1013,11 @@ usage(void) #ifdef AIO " -A: Use the AIO system calls\n" #endif -" -D startingop: debug output starting at specified operation\n\ - -L: fsxLite - no file creations & no file size changes\n\ +" -D startingop: debug output starting at specified operation\n" +#ifdef FALLOCATE +" -F: Do not use fallocate (preallocation) calls\n" +#endif +" -L: fsxLite - no file creations & no file size changes\n\ -N numops: total # operations to do (default infinity)\n\ -O: use oplen (see -o flag) for every op (default random)\n\ -P: save .fsxlog and .fsxgood files in dirpath (default ./)\n\ @@ -1092,7 +1183,7 @@ main(int argc, char **argv) setvbuf(stdout, (char *)0, _IOLBF, 0); /* line buffered stdout */ - while ((ch = getopt(argc, argv, "b:c:dfl:m:no:p:qr:s:t:w:xyAD:LN:OP:RS:WZ")) + while ((ch = getopt(argc, argv, "b:c:dfl:m:no:p:qr:s:t:w:xyAD:FLN:OP:RS:WZ")) != EOF) switch (ch) { case 'b': @@ -1186,6 +1277,9 @@ main(int argc, char **argv) if (debugstart < 1) usage(); break; + case 'F': + fallocate_calls = 0; + break; case 'L': lite = 1; break; @@ -1331,6 +1425,16 @@ main(int argc, char **argv) } else check_trunc_hack(); +#ifdef FALLOCATE + if (!lite && fallocate_calls) { + if (fallocate(fd, 0, 0, 1) && errno == EOPNOTSUPP) { + warn("main: filesystem does not support fallocate, disabling"); + fallocate_calls = 0; + } else + ftruncate(fd, 0); + } +#endif + while (numops == -1 || numops--) test(); From SRS0+UXG9+67+fromorbit.com=david@internode.on.net Wed May 13 17:28:22 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4DMSLXI178589 for ; Wed, 13 May 2009 17:28:21 -0500 X-ASG-Debug-ID: 1242253706-2fa700f80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 696B728490C for ; Wed, 13 May 2009 15:28:27 -0700 (PDT) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id yglerNb81Vr8dzfG for ; Wed, 13 May 2009 15:28:27 -0700 (PDT) Received: from discord (unverified [121.44.1.36]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 14757-1927428 for multiple; Thu, 14 May 2009 07:58:25 +0930 (CST) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1M4Mw3-0003OI-MZ; Thu, 14 May 2009 08:28:23 +1000 Date: Thu, 14 May 2009 08:28:23 +1000 From: Dave Chinner To: p v Cc: Eric Sandeen , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: file preallocation without unwritten flag being set Subject: Re: file preallocation without unwritten flag being set Message-ID: <20090513222823.GL16929@discord.disaster> References: <283244.29270.qm@web65608.mail.ac4.yahoo.com> <4A0A0E76.6000701@sandeen.net> <618437.93111.qm@web65601.mail.ac4.yahoo.com> <4A0A55E0.4010202@sandeen.net> <705795.15734.qm@web65604.mail.ac4.yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <705795.15734.qm@web65604.mail.ac4.yahoo.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1242253708 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25706 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, May 13, 2009 at 02:05:16PM -0700, p v wrote: > > doesn't seem to work - I tried to clear the extflg in the > versionnum of the superblock (in every copy of it as well) but it > doesn't work. The flag is still set on all extents. Sure - that xfs_db command only clears it from the superblock so that *new* preallocations don't have the unwritten bit set. it doesn't change existing allocations. > And once I make the file xfs_repair complains and resets the sb > flag - my guess is that in the extent allocation path it is > hardcoded for the version 4. More likely is that repair is seeing an existing unwritten extent and setting the flag on the superblock. > - any extent allocated beyond file size will get the flag . Allocation beyond EOF does not use unwritten extents unless it is preallocation. > Also - 2 questions - > > 1) what is inode64 and where can I find out all of the > undocumented mkfs/mount options (it's unfortunate that such a good > fs doesnt' have a correspondingly good documentation) All the options should be documented. Try 'man mkfs.xfs', 'man 8 mount' and Documentation/filesystems/xfs.txt > 2) why is the largest extent size limited to xxx blocks 2^21 blocks. Limited to that because there are 21 bits for the extent size in the on disk extent record. > (can't find > out thenumber - when does the inode get finally flushed? ls -i > reports 19 as the inode number but even after unmounting inode 19 > in xfs_db still shows a free inode - is it still only in the > log???) Might be, or you are seeing stale cached block device data (xfs_db operates in a different address space to a mounted filesystem). Try dropping the page cache and then re-read. > ? I assumed that xfs_bmap gets me the correct number of > extents but now looking at the inode with xfs_db it's obvious that > xfs_bmap reports contiguous ranges rather than actual extents in > the blockmap tree. Sure it does. You can tell how many extents a specific range is from their maximum size (e.g. one extent per 8GB for a 4k block size filesystem). Cheers, Dave. -- Dave Chinner david@fromorbit.com From pvlogin@yahoo.com Wed May 13 18:51:42 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.1 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4DNpgwb181823 for ; Wed, 13 May 2009 18:51:42 -0500 X-ASG-Debug-ID: 1242258708-055e03a00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web65615.mail.ac4.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id A52701D30AD0 for ; Wed, 13 May 2009 16:51:48 -0700 (PDT) Received: from web65615.mail.ac4.yahoo.com (web65615.mail.ac4.yahoo.com [76.13.9.83]) by cuda.sgi.com with SMTP id f3AWVkY1iy5OaySD for ; Wed, 13 May 2009 16:51:48 -0700 (PDT) Received: (qmail 64069 invoked by uid 60001); 13 May 2009 23:51:48 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1242258708; bh=9JQ81/i+DcjQjWIPuJOK/RszOjm2huBwO1OY7FOb4P4=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type; b=Wd108yZlH2ih7G8JR8zgI+0ZMbiAVbF1WWxJHJ1+/6w6NmpaHCjGgvo3BGcYUPONIQTgzI+FEpz7shi61ZJMI1QIzcyte9dph/SGdFSZUmd+02SqKWZcertV3ctoQDZT8hFtnlpquH44cl1343NqygopZR/fXgkNHHkKtT7eNCA= DomainKey-Signature:a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type; b=zAaIvNV1fx8WY0wuJN9MeTH4qYNG0IFj/c278oAwWTs2JLZEvT33nCOxxRanBoNwW3SagZscXRmxKvAQDUNQE71fxZL6YwE7ceB9JQaf+uAu4rPrWAduTdpSa5DL2pZZthXBAIdGys12T4oqZ7ShAGrCx65odhbyTLPyuTr2E6Y=; Message-ID: <502709.63746.qm@web65615.mail.ac4.yahoo.com> X-YMail-OSG: hMLBcR8VM1kPPqb6oH1R1bx3ACFT5VbDiQtXJqsFIMXKUfATU6yWUXzEv_y1FqMEH82J12q4JeckQAb479MpJlwLh0gOdPb6AJMa_PDGtQ7FzutHWlrCIUApHwQ9xucJJHyarg8FwXgV8tbsqRBLrR3_AvUphe.NDEqh5SFruhgBWaO_bh00zLhydBajpA9nvxgLa8bIxrJBFJ1Bz6bx73gaCmJiH9S90mHfgDTSX_S.Rdr3L0Icu9CkvFY4iAGj5FxiG1_zZofb6ispvvGV3NH1lL11fNLKGTQ1pdyS9ZBFEO4BffV_tBZdq_AyHFbHpFmIvjEIHb7ybk1xkXJOKUCQ Received: from [204.15.21.171] by web65615.mail.ac4.yahoo.com via HTTP; Wed, 13 May 2009 16:51:48 PDT X-Mailer: YahooMailRC/1277.43 YahooMailWebService/0.7.289.10 References: <283244.29270.qm@web65608.mail.ac4.yahoo.com> <4A0A0E76.6000701@sandeen.net> <618437.93111.qm@web65601.mail.ac4.yahoo.com> <4A0A55E0.4010202@sandeen.net> <705795.15734.qm@web65604.mail.ac4.yahoo.com> <20090513222823.GL16929@discord.disaster> Date: Wed, 13 May 2009 16:51:48 -0700 (PDT) From: p v X-ASG-Orig-Subj: Re: file preallocation without unwritten flag being set Subject: Re: file preallocation without unwritten flag being set To: Dave Chinner Cc: Eric Sandeen , xfs@oss.sgi.com In-Reply-To: <20090513222823.GL16929@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: web65615.mail.ac4.yahoo.com[76.13.9.83] X-Barracuda-Start-Time: 1242258709 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= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25712 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I did it on a fresh filesystem (of course). It didn't make a difference - sb flags cleared, extent flags set, xfs_repair unhappy. I tried to repro again and do cut/paste of my steps but I lost the machine. The only difference this time was that I was going to do it with the default mkfs and mount options. I created the fs, cleared extflg from the superblocks and run xfs_io to resvsp the space. Then I run truncate and truncate decided to initialize the extents to zero and since it's 10TB it's going to take a while (can't reset as it's a remote machine and xfs_io is looping in the kernel ...). It didn't do it before and if I remember right the only differences were mkfs with 2048 size inodes and mount options with noatime,nodiratime,inode64,allocsize=1g. Anyway - I'll try it again on a different machine and send the steps. However the fact that it did try to zero the reserved space tells me that the extent flags were not set this time - and unfortunatelly it also means that it won't work - unless I do the previous workaround and instead of calling truncate from xfs_io I'll do the xfs_db and set the inode size directly - in fact now I remember that was exactly the reason why the original steps were so tricky - truncate up would zero extents but xfs_db will set the inode size to whatever without any problem. Thanks for the info regarding the max extent size. The man pages I am looking at (FC4, Centos5) don't have the xfs options like allocsize, inode64. Probably should download the latest versions ... I am a little bit lost about the comment regarding the page caches. I unmounted the filesystem before running xfs_db. Shouldn't that flush pages, buffers, ...? I assume that xfs_db goes directly to the device so if the fs was unmounted then the device should be up to date? thx Peter Vajgel ----- Original Message ---- From: Dave Chinner To: p v Cc: Eric Sandeen ; xfs@oss.sgi.com Sent: Wednesday, May 13, 2009 3:28:23 PM Subject: Re: file preallocation without unwritten flag being set On Wed, May 13, 2009 at 02:05:16PM -0700, p v wrote: > > doesn't seem to work - I tried to clear the extflg in the > versionnum of the superblock (in every copy of it as well) but it > doesn't work. The flag is still set on all extents. Sure - that xfs_db command only clears it from the superblock so that *new* preallocations don't have the unwritten bit set. it doesn't change existing allocations. > And once I make the file xfs_repair complains and resets the sb > flag - my guess is that in the extent allocation path it is > hardcoded for the version 4. More likely is that repair is seeing an existing unwritten extent and setting the flag on the superblock. > - any extent allocated beyond file size will get the flag . Allocation beyond EOF does not use unwritten extents unless it is preallocation. > Also - 2 questions - > > 1) what is inode64 and where can I find out all of the > undocumented mkfs/mount options (it's unfortunate that such a good > fs doesnt' have a correspondingly good documentation) All the options should be documented. Try 'man mkfs.xfs', 'man 8 mount' and Documentation/filesystems/xfs.txt > 2) why is the largest extent size limited to xxx blocks 2^21 blocks. Limited to that because there are 21 bits for the extent size in the on disk extent record. > (can't find > out thenumber - when does the inode get finally flushed? ls -i > reports 19 as the inode number but even after unmounting inode 19 > in xfs_db still shows a free inode - is it still only in the > log???) Might be, or you are seeing stale cached block device data (xfs_db operates in a different address space to a mounted filesystem). Try dropping the page cache and then re-read. > ? I assumed that xfs_bmap gets me the correct number of > extents but now looking at the inode with xfs_db it's obvious that > xfs_bmap reports contiguous ranges rather than actual extents in > the blockmap tree. Sure it does. You can tell how many extents a specific range is from their maximum size (e.g. one extent per 8GB for a 4k block size filesystem). Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Wed May 13 19:17:37 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_26, 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4E0Hbhw182433 for ; Wed, 13 May 2009 19:17:37 -0500 X-ASG-Debug-ID: 1242260263-2fae015f0000-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 F00241D30C01 for ; Wed, 13 May 2009 17:17:43 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 6P9cg04xdKuDKAUZ for ; Wed, 13 May 2009 17:17:43 -0700 (PDT) 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 3E580A9B0CE; Wed, 13 May 2009 19:17:45 -0500 (CDT) Message-ID: <4A0B6325.8000706@sandeen.net> Date: Wed, 13 May 2009 19:17:41 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: p v CC: Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: file preallocation without unwritten flag being set Subject: Re: file preallocation without unwritten flag being set References: <283244.29270.qm@web65608.mail.ac4.yahoo.com> <4A0A0E76.6000701@sandeen.net> <618437.93111.qm@web65601.mail.ac4.yahoo.com> <4A0A55E0.4010202@sandeen.net> <705795.15734.qm@web65604.mail.ac4.yahoo.com> <20090513222823.GL16929@discord.disaster> <502709.63746.qm@web65615.mail.ac4.yahoo.com> In-Reply-To: <502709.63746.qm@web65615.mail.ac4.yahoo.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: 1242260263 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.25712 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean p v wrote: > > I did it on a fresh filesystem (of course). It didn't make a > difference - sb flags cleared, extent flags set, xfs_repair unhappy. Strange, I don't see that when I test. # dd if=/dev/urandom of=fsfile bs=1M count=64 # mkfs.xfs /dev/loop0 # for I in `seq 0 3`; do xfs_db -x /dev/loop0 -c "sb $I" -c "write versionnum 0xa4a4"; done # mount /dev/loop0 mnt/ # xfs_io -f -c "truncate 1m" -c "resvsp 0 1m" mnt/file # hexdump -C mnt/file | more 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00014000 09 d6 99 0d a7 43 a2 c9 95 ca 88 f6 4a 0c 93 8e |.....C......J...| 00014010 ab b5 1a 1f c2 f3 2f 39 30 cc 8f 67 04 65 dd f1 |....../90..g.e..| # xfs_repair /dev/loop0 # xfs_db -c "version" /dev/loop0 versionnum [0xa4a4+0x8] = V4,NLINK,ALIGN,DIRV2,LOGV2,MOREBITS,ATTR2 > I tried to repro again and do cut/paste of my steps but I lost the > machine. The only difference this time was that I was going to do it > with the default mkfs and mount options. I created the fs, cleared > extflg from the superblocks and run xfs_io to resvsp the space. Then > I run truncate and truncate decided to initialize the extents to zero > and since it's 10TB it's going to take a while (can't reset as it's a > remote machine and xfs_io is looping in the kernel ...). It didn't do > it before and if I remember right the only differences were mkfs with > 2048 size inodes and mount options with > noatime,nodiratime,inode64,allocsize=1g. Anyway - I'll try it again > on a different machine and send the steps. However the fact that it > did try to zero the reserved space tells me that the extent flags > were not set this time - and unfortunatelly it also means that it > won't work - unless I do the previous workaround and instead of > calling truncate from xfs_io I'll do the xfs_db and set the inode > size directly - in fact now I remember that was exactly the reason > why the original steps were so tricky - truncate up would zero > extents but xfs_db will set the inode size to whatever without any > problem. try truncate then resvsp; TBH not sure why it should matter though :) > Thanks for the info regarding the max extent size. > > The man pages I am looking at (FC4, Centos5) don't have the xfs > options like allocsize, inode64. Probably should download the latest > versions ... those man pages are pretty old, yup. > I am a little bit lost about the comment regarding the page caches. I > unmounted the filesystem before running xfs_db. Shouldn't that flush > pages, buffers, ...? I assume that xfs_db goes directly to the device > so if the fs was unmounted then the device should be up to date? The device is uptodate but the bdev address space may not be. Unmounting will flush the filesytem address space, but not the block device address space. So yes unmount pushes everything to the disk, but the bdev address space still has other cached data. echo 3 > /proc/sys/vm/drop_caches will force you to reread from disk. (xfs_db uses buffered IO AFAIK) -Eric From SRS0+xPli+68+fromorbit.com=david@internode.on.net Wed May 13 19:34:20 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4E0YJDl182857 for ; Wed, 13 May 2009 19:34:19 -0500 X-ASG-Debug-ID: 1242261264-2f9603520000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9932928511B for ; Wed, 13 May 2009 17:34:25 -0700 (PDT) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id ZNWNhhrQp1WqG9Af for ; Wed, 13 May 2009 17:34:25 -0700 (PDT) Received: from discord (unverified [121.44.1.36]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 15225-1927428 for multiple; Thu, 14 May 2009 10:04:24 +0930 (CST) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1M4Oty-0003Yf-B2; Thu, 14 May 2009 10:34:22 +1000 Date: Thu, 14 May 2009 10:34:22 +1000 From: Dave Chinner To: Eric Sandeen Cc: p v , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: file preallocation without unwritten flag being set Subject: Re: file preallocation without unwritten flag being set Message-ID: <20090514003422.GM16929@discord.disaster> References: <283244.29270.qm@web65608.mail.ac4.yahoo.com> <4A0A0E76.6000701@sandeen.net> <618437.93111.qm@web65601.mail.ac4.yahoo.com> <4A0A55E0.4010202@sandeen.net> <705795.15734.qm@web65604.mail.ac4.yahoo.com> <20090513222823.GL16929@discord.disaster> <502709.63746.qm@web65615.mail.ac4.yahoo.com> <4A0B6325.8000706@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A0B6325.8000706@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1242261266 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25714 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, May 13, 2009 at 07:17:41PM -0500, Eric Sandeen wrote: > p v wrote: > > with the default mkfs and mount options. I created the fs, cleared > > extflg from the superblocks and run xfs_io to resvsp the space. Then > > I run truncate and truncate decided to initialize the extents to zero > > and since it's 10TB it's going to take a while (can't reset as it's a > > remote machine and xfs_io is looping in the kernel ...). It didn't do ...... > > try truncate then resvsp; TBH not sure why it should matter though :) Uninitialised extents beyond EOF get zeroed when EOF is moved. if you set the set before preallocation, then there are no extents to zero. FWIW, if they have the unwritten flag, this zeroing does not occur. > > I am a little bit lost about the comment regarding the page caches. I > > unmounted the filesystem before running xfs_db. Shouldn't that flush > > pages, buffers, ...? I assume that xfs_db goes directly to the device > > so if the fs was unmounted then the device should be up to date? > > The device is uptodate but the bdev address space may not be. > > Unmounting will flush the filesytem address space, but not the block > device address space. Not exactly the problem, though. XFS opens it's own device address space when mounting - not the address space you get by opening /dev/sdX. xfs_db uses the address space associated with /dev/sdX. hence if you do: # xfs_db /dev/sdc .... # mount /dev/sdc # unmount /dev/sdc # xfs_db /dev/sdc The second invocation of xfs_db will not see any of the changes that occured to the filesystem because it will read from the buffers cached on /dev/sdc during the first invocation. This is the same problem Grub has.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Wed May 13 19:41:16 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4E0fFlX183032 for ; Wed, 13 May 2009 19:41:15 -0500 X-ASG-Debug-ID: 1242261682-2f9903570000-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 3E67628513F for ; Wed, 13 May 2009 17:41:22 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id Dpws71Undeunx6KK for ; Wed, 13 May 2009 17:41:22 -0700 (PDT) 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 DF57E9E20CC; Wed, 13 May 2009 19:41:25 -0500 (CDT) Message-ID: <4A0B68B2.70208@sandeen.net> Date: Wed, 13 May 2009 19:41:22 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Dave Chinner CC: p v , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: file preallocation without unwritten flag being set Subject: Re: file preallocation without unwritten flag being set References: <283244.29270.qm@web65608.mail.ac4.yahoo.com> <4A0A0E76.6000701@sandeen.net> <618437.93111.qm@web65601.mail.ac4.yahoo.com> <4A0A55E0.4010202@sandeen.net> <705795.15734.qm@web65604.mail.ac4.yahoo.com> <20090513222823.GL16929@discord.disaster> <502709.63746.qm@web65615.mail.ac4.yahoo.com> <4A0B6325.8000706@sandeen.net> <20090514003422.GM16929@discord.disaster> In-Reply-To: <20090514003422.GM16929@discord.disaster> 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: 1242261683 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25714 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: >> Unmounting will flush the filesytem address space, but not the block >> device address space. > > Not exactly the problem, though. XFS opens it's own device address space > when mounting - not the address space you get by opening /dev/sdX. > xfs_db uses the address space associated with /dev/sdX. hence > if you do: > > # xfs_db /dev/sdc > .... > # mount /dev/sdc > > # unmount /dev/sdc > # xfs_db /dev/sdc > > The second invocation of xfs_db will not see any of the changes that > occured to the filesystem because it will read from the buffers > cached on /dev/sdc during the first invocation. > > This is the same problem Grub has.... We meant the same thing, even if I said it wrong ;) -Eric From vitaly.v.ch@gmail.com Thu May 14 03:50:19 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4E8oJIU207097 for ; Thu, 14 May 2009 03:50:19 -0500 X-ASG-Debug-ID: 1242291025-38d103c30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f226.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A1C77285E1E for ; Thu, 14 May 2009 01:50:25 -0700 (PDT) Received: from mail-bw0-f226.google.com (mail-bw0-f226.google.com [209.85.218.226]) by cuda.sgi.com with ESMTP id ynkq5GqjlRTdsw5G for ; Thu, 14 May 2009 01:50:25 -0700 (PDT) Received: by bwz26 with SMTP id 26so1130527bwz.20 for ; Thu, 14 May 2009 01:50:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=iK3lWkohDUNx2FHBeAcIwpOksko8wp76TaUEO8ie3NM=; b=Qnkqpg2VeQMpbaUACunOAvDncz3pt6/shO/eIUifnRGK2nIaFee7oh4GvZKu2F2xDb F6Z38H6sadY8daTviA1JW5VCy1JsJii86sq4KcBfrvu3V8RAv1Ermqwjue3R2QiIoCIN Rg0D/THV/H4iCg52dab/QueTU0cYKsM2X40s8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=aqOzeFWRNOu3H98a79hoBMPuqwZbvtcL4bbmwU/5VoBPOEcdEv9GJ7CNejrzYD0z6v djRnAc6nKztFhoD9HSS9Pz8JbpruFPoU+VdV9Hn1HgVkS9URP8TR2gd7pup/2/ND+hrq g82t+len8HpRpMha1qLcGIovm4iPHOgOCj6q8= MIME-Version: 1.0 Received: by 10.204.31.201 with SMTP id z9mr1889933bkc.79.1242291024326; Thu, 14 May 2009 01:50:24 -0700 (PDT) In-Reply-To: <4A0B0A71.5010609@sandeen.net> References: <6efe08af0905130010g5e21f4d1w9efb4ed200b5b152@mail.gmail.com> <4A0B0A71.5010609@sandeen.net> Date: Thu, 14 May 2009 11:50:24 +0300 Message-ID: <6efe08af0905140150g623d5564i5f5a06b5bf8543a5@mail.gmail.com> X-ASG-Orig-Subj: Re: xfs_repair after reboot refuse repair my filesystem Subject: Re: xfs_repair after reboot refuse repair my filesystem From: "Vitaly V. Ch" To: Eric Sandeen Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail-bw0-f226.google.com[209.85.218.226] X-Barracuda-Start-Time: 1242291026 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4196 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= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25745 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hm, I xfs was create under debian on ARM. I try repair under Slackware 12.2 on x86 \\wbr Vitaly From tytso@mit.edu Thu May 14 07:53:58 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4ECrw7O220293 for ; Thu, 14 May 2009 07:53:58 -0500 X-ASG-Debug-ID: 1242305645-6c5201630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from thunker.thunk.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F22601D32555 for ; Thu, 14 May 2009 05:54:05 -0700 (PDT) Received: from thunker.thunk.org (thunk.org [69.25.196.29]) by cuda.sgi.com with ESMTP id N8OAxBEWK9G386WH for ; Thu, 14 May 2009 05:54:05 -0700 (PDT) Received: from root (helo=closure.thunk.org) by thunker.thunk.org with local-esmtp (Exim 4.50 #1 (Debian)) id 1M4aRo-0006kw-RD; Thu, 14 May 2009 08:54:04 -0400 Received: from tytso by closure.thunk.org with local (Exim 4.69) (envelope-from ) id 1M4aRo-0000ri-0G; Thu, 14 May 2009 08:54:04 -0400 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Questions about xfstests regarding porting it to test ext4 filesystems Subject: Questions about xfstests regarding porting it to test ext4 filesystems From: "Theodore Ts'o" Phone: (781) 391-3464 Message-Id: Date: Thu, 14 May 2009 08:54:04 -0400 X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@mit.edu X-SA-Exim-Scanned: No (on thunker.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: thunk.org[69.25.196.29] X-Barracuda-Start-Time: 1242305645 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25761 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I've been playing around with xfstests (aka xfsqa) and have some questions: 1) What is the best mailing list to use for discussions about xfstests? I'm *not* subscribed to xfs@oss.sgi.com, since I'm concerned about traffic levels... I'm on too many high-volume mailing lists already. 2) Why is the TESTDIR have to be a persistent xfs volume? I noticed that when testing UDF and NFS, the scratch volume is used (and $testdir is set to the point at the scratch directory). Is there some fundamental reason why there must be an XFS volume mounted, even if the fundamental intention is to test some other filesystem type, whether it's UDF, NFS, or Ext4? 3) How much latitude/interest is there in modifying xfstests to be a bit more filesystem independent? I understand the primary purpose of xfstests has to be to support XFS development, but looking at the scripts, there is a *huge* amount of XFS-specific assumptions all over the shell scripts. As a result I'm still of two minds whether it will be less work to start from scratch to develop a test suite for ext4 (and from the beginning try to make it filesystem independent) or to try to hack xfstests and try to make it more filesystem indpendent. A lot of this depends on the time/interest with the xfstests upstream in working with me. (And assuming we get the licensing issues dealt with --- hence my interest and time spent in trying to clarify the licensing situation with the fsx program.) If there isn't a whole lot of interest in trying to make xfstests more portable, that's fine. It may be that I'm better off starting from scratch. There does seem to be a lot of work and experience represented in the xfstest suite, though, so I would like to try exploring the possibility of expanding its scope to also support testing other filesystems (such as ext4, btrfs, etc.) (I'm not on the xfs mailing list, so please keep me cc'ed, thanks.) - Ted From sandeen@sandeen.net Thu May 14 11:24:05 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4EGO4Fq232204 for ; Thu, 14 May 2009 11:24:05 -0500 X-ASG-Debug-ID: 1242318251-2f3e035d0000-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 2C4212878F6 for ; Thu, 14 May 2009 09:24:11 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id ljWOX15PrRQBTnnv for ; Thu, 14 May 2009 09:24:11 -0700 (PDT) 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 74619A9B0CE; Thu, 14 May 2009 11:24:15 -0500 (CDT) Message-ID: <4A0C45AA.3040307@sandeen.net> Date: Thu, 14 May 2009 11:24:10 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: "Theodore Ts'o" CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Questions about xfstests regarding porting it to test ext4 filesystems Subject: Re: Questions about xfstests regarding porting it to test ext4 filesystems 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: 1242318252 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0056 1.0000 -1.9846 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.98 X-Barracuda-Spam-Status: No, SCORE=-1.98 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25775 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Theodore Ts'o wrote: > I've been playing around with xfstests (aka xfsqa) and have some > questions: > > 1) What is the best mailing list to use for discussions about xfstests? > I'm *not* subscribed to xfs@oss.sgi.com, since I'm concerned about > traffic levels... I'm on too many high-volume mailing lists already. This one is fine. it's not that high-volume but as you've found you don't have to subscribe, anyway. :) > 2) Why is the TESTDIR have to be a persistent xfs volume? I noticed > that when testing UDF and NFS, the scratch volume is used (and $testdir > is set to the point at the scratch directory). Is there some > fundamental reason why there must be an XFS volume mounted, even if the > fundamental intention is to test some other filesystem type, whether > it's UDF, NFS, or Ext4? Hm I'll have to dig, not certain. I thought that TESTDIR would usually be used for non-destructive testing, general IO etc, while SCRATCHDIR would usually be used for any test that required lots of repeatability, and could therefore be more fs-specific. But that's handwaving. > 3) How much latitude/interest is there in modifying xfstests to be a bit > more filesystem independent? I talked about just this at LSF last month and there seemed to be a bit of interest, it was the best plan we had coming out of the talk. I also talked about a fledgling effort from RH, http://git.fedoraproject.org/git/?p=tafs.git;a=summary > I understand the primary purpose of > xfstests has to be to support XFS development, but looking at the > scripts, there is a *huge* amount of XFS-specific assumptions all over > the shell scripts. As a result I'm still of two minds whether it will > be less work to start from scratch to develop a test suite for ext4 (and > from the beginning try to make it filesystem independent) or to try to > hack xfstests and try to make it more filesystem indpendent. Yep, agreed. I think it's worth evaluating whether the xfstests harness is within reach of the goal, though. But you may be right about how much work it is to get there. Really the value to other filesystems is in the tests (those which are or could be made generic), more than the harness, I'd say. > A lot of > this depends on the time/interest with the xfstests upstream in working > with me. (And assuming we get the licensing issues dealt with --- hence > my interest and time spent in trying to clarify the licensing situation > with the fsx program.) and at least as importantly, the rest of the scripts, but we're making progress on that. > If there isn't a whole lot of interest in trying to make xfstests more > portable, that's fine. It may be that I'm better off starting from > scratch. There does seem to be a lot of work and experience represented > in the xfstest suite, though, so I would like to try exploring the > possibility of expanding its scope to also support testing other > filesystems (such as ext4, btrfs, etc.) There is interest, it's what we decided at least preliminarily at LSF, and now it's the "find time and see if it's feasible" part I guess. -Eric > (I'm not on the xfs mailing list, so please keep me cc'ed, thanks.) > > - Ted From MAILER-DAEMON@oss.sgi.com Thu May 14 12:02:47 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4EH2k1u234249 for ; Thu, 14 May 2009 12:02:46 -0500 X-ASG-Debug-ID: 1242320858-64ad00bf0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from WA2EHSNDR006.bigfish.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 09D4AFAEB50 for ; Thu, 14 May 2009 10:07:38 -0700 (PDT) Received: from WA2EHSNDR006.bigfish.com (smtp-cpk.frontbridge.com [204.231.192.41]) by cuda.sgi.com with ESMTP id wx9pGM2UL56w6TZh for ; Thu, 14 May 2009 10:07:38 -0700 (PDT) Received: from VA3EHSOBE002.bigfish.com (10.2.40.3) by WA2EHSNDR006.bigfish.com (10.2.40.26) with Microsoft SMTP Server (TLS) id 8.1.340.0; Thu, 14 May 2009 17:02:52 +0000 Received: from mail30-va3-R.bigfish.com (10.7.14.241) by VA3EHSOBE002.bigfish.com (10.7.40.22) with Microsoft SMTP Server id 8.1.340.0; Thu, 14 May 2009 17:02:49 +0000 Received: from mail30-va3 (localhost.localdomain [127.0.0.1]) by mail30-va3-R.bigfish.com (Postfix) with ESMTP id 1C3BAEF03F8 for ; Thu, 14 May 2009 17:02:49 +0000 (UTC) From: Virus@oss.sgi.com, Scanner@oss.sgi.com To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Undeliverable message returned to sender Subject: Undeliverable message returned to sender X-FB-Bounce: kSnDDutw5hCRau1a/pqfAA== Message-ID: <20090514170249.1C3BAEF03F8@mail30-va3-R.bigfish.com> Date: Thu, 14 May 2009 17:02:49 +0000 MIME-Version: 1.0 Content-Type: text/plain X-Barracuda-Connect: smtp-cpk.frontbridge.com[204.231.192.41] X-Barracuda-Start-Time: 1242320859 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4840 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= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25778 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This message was created automatically by mail delivery software. A message you sent was virus infected. The message could not be cleaned. Virus Scan Report: ------------------ Cambau_takuzo.exe infected by: virus.win32.parite.b -> REJECT Delivery failed for the following recipient(s): takuzo@sm.sony.co.jp For more information about this virus, visit http://www.antivirus.com/vinfo/virusencyclo/ ----- Original Message Header ----- X-MS-Exchange-Organization-Antispam-Report: OrigIP: 200.207.52.9;Service: EHS Received: by mail30-va3 (MessageSwitch) id 1242320567960884_24457; Thu, 14 May 2009 17:02:47 +0000 (UCT) Received: from sm.sony.co.jp (mail.portofelizsa.com.br [200.207.52.9]) by mail30-va3.bigfish.com (Postfix) with ESMTP id 195D2BC8046 for ; Thu, 14 May 2009 17:02:17 +0000 (UTC) From: linux-xfs@oss.sgi.com To: takuzo@sm.sony.co.jp Subject: Re: Grana Date: Thu, 14 May 2009 13:59:07 -0300 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0016_000071F6.00006F13" X-Priority: 3 X-MSMail-Priority: Normal Message-Id: <20090514170217.195D2BC8046@mail30-va3.bigfish.com> From BATV+d1518602245c537660c2+2090+infradead.org+hch@bombadil.srs.infradead.org Thu May 14 12:15:52 2009 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 (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4EHFpMD234940 for ; Thu, 14 May 2009 12:15:51 -0500 X-ASG-Debug-ID: 1242321359-742501960000-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 837BD288001 for ; Thu, 14 May 2009 10:15:59 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Peu3gy7Y5ObwlaFx for ; Thu, 14 May 2009 10:15:59 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M4eXH-0007jo-4R; Thu, 14 May 2009 17:15:59 +0000 Message-Id: <20090514171559.029154000@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Thu, 14 May 2009 13:12:39 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: david@fromorbit.com X-ASG-Orig-Subj: [PATCH 6/7] xfs: use generic inode iterator in xfs_qm_dqrele_all_inodes Subject: [PATCH 6/7] xfs: use generic inode iterator in xfs_qm_dqrele_all_inodes References: <20090514171233.942489000@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-quota-sync-iterators 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: 1242321359 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Use xfs_inode_ag_iterator instead of opencoding the inode walk in the quota code. Mark xfs_inode_ag_iterator and xfs_sync_inode_valid non-static to allow using them from the quota code. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/quota/xfs_qm_syscalls.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_qm_syscalls.c 2009-05-13 14:52:54.087659167 +0200 +++ xfs/fs/xfs/quota/xfs_qm_syscalls.c 2009-05-13 14:57:36.531661369 +0200 @@ -846,105 +846,55 @@ xfs_qm_export_flags( } -/* - * Release all the dquots on the inodes in an AG. - */ -STATIC void -xfs_qm_dqrele_inodes_ag( - xfs_mount_t *mp, - int ag, - uint flags) +STATIC int +xfs_dqrele_inode( + struct xfs_inode *ip, + struct xfs_perag *pag, + int flags) { - xfs_inode_t *ip = NULL; - xfs_perag_t *pag = &mp->m_perag[ag]; - int first_index = 0; - int nr_found; - - do { - /* - * use a gang lookup to find the next inode in the tree - * as the tree is sparse and a gang lookup walks to find - * the number of objects requested. - */ - read_lock(&pag->pag_ici_lock); - nr_found = radix_tree_gang_lookup(&pag->pag_ici_root, - (void**)&ip, first_index, 1); - - if (!nr_found) { - read_unlock(&pag->pag_ici_lock); - break; - } - - /* - * Update the index for the next lookup. Catch overflows - * into the next AG range which can occur if we have inodes - * in the last block of the AG and we are currently - * pointing to the last inode. - */ - first_index = XFS_INO_TO_AGINO(mp, ip->i_ino + 1); - if (first_index < XFS_INO_TO_AGINO(mp, ip->i_ino)) { - read_unlock(&pag->pag_ici_lock); - break; - } - - /* skip quota inodes */ - if (ip == XFS_QI_UQIP(mp) || ip == XFS_QI_GQIP(mp)) { - ASSERT(ip->i_udquot == NULL); - ASSERT(ip->i_gdquot == NULL); - read_unlock(&pag->pag_ici_lock); - continue; - } + int error; - /* - * If we can't get a reference on the inode, it must be - * in reclaim. Leave it for the reclaim code to flush. - */ - if (!igrab(VFS_I(ip))) { - read_unlock(&pag->pag_ici_lock); - continue; - } + /* skip quota inodes */ + if (ip == XFS_QI_UQIP(ip->i_mount) || ip == XFS_QI_GQIP(ip->i_mount)) { + ASSERT(ip->i_udquot == NULL); + ASSERT(ip->i_gdquot == NULL); read_unlock(&pag->pag_ici_lock); + return 0; + } - /* avoid new inodes though we shouldn't find any here */ - if (xfs_iflags_test(ip, XFS_INEW)) { - IRELE(ip); - continue; - } + error = xfs_sync_inode_valid(ip, pag); + if (error) + return 0; - xfs_ilock(ip, XFS_ILOCK_EXCL); - if ((flags & XFS_UQUOTA_ACCT) && ip->i_udquot) { - xfs_qm_dqrele(ip->i_udquot); - ip->i_udquot = NULL; - } - if (flags & (XFS_PQUOTA_ACCT|XFS_GQUOTA_ACCT) && - ip->i_gdquot) { - xfs_qm_dqrele(ip->i_gdquot); - ip->i_gdquot = NULL; - } - xfs_iput(ip, XFS_ILOCK_EXCL); + xfs_ilock(ip, XFS_ILOCK_EXCL); + if ((flags & XFS_UQUOTA_ACCT) && ip->i_udquot) { + xfs_qm_dqrele(ip->i_udquot); + ip->i_udquot = NULL; + } + if (flags & (XFS_PQUOTA_ACCT|XFS_GQUOTA_ACCT) && ip->i_gdquot) { + xfs_qm_dqrele(ip->i_gdquot); + ip->i_gdquot = NULL; + } + xfs_iput(ip, XFS_ILOCK_EXCL); + IRELE(ip); - } while (nr_found); + return 0; } + /* * Go thru all the inodes in the file system, releasing their dquots. + * * Note that the mount structure gets modified to indicate that quotas are off - * AFTER this, in the case of quotaoff. This also gets called from - * xfs_rootumount. + * AFTER this, in the case of quotaoff. */ void xfs_qm_dqrele_all_inodes( struct xfs_mount *mp, uint flags) { - int i; - ASSERT(mp->m_quotainfo); - for (i = 0; i < mp->m_sb.sb_agcount; i++) { - if (!mp->m_perag[i].pag_ici_init) - continue; - xfs_qm_dqrele_inodes_ag(mp, i, flags); - } + xfs_inode_ag_iterator(mp, xfs_dqrele_inode, flags, -1); } /*------------------------------------------------------------------------*/ Index: xfs/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-05-13 14:52:54.093659302 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-05-13 14:57:18.322814622 +0200 @@ -141,7 +141,7 @@ restart: return last_error; } -STATIC int +int xfs_inode_ag_iterator( struct xfs_mount *mp, int (*execute)(struct xfs_inode *ip, @@ -166,7 +166,7 @@ xfs_inode_ag_iterator( } /* must be called with pag_ici_lock held and releases it */ -STATIC int +int xfs_sync_inode_valid( struct xfs_inode *ip, struct xfs_perag *pag) Index: xfs/fs/xfs/linux-2.6/xfs_sync.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.h 2009-05-13 14:52:54.100659565 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.h 2009-05-13 14:57:18.331814510 +0200 @@ -56,4 +56,10 @@ void xfs_inode_set_reclaim_tag(struct xf void xfs_inode_clear_reclaim_tag(struct xfs_inode *ip); void __xfs_inode_clear_reclaim_tag(struct xfs_mount *mp, struct xfs_perag *pag, struct xfs_inode *ip); + +int xfs_sync_inode_valid(struct xfs_inode *ip, struct xfs_perag *pag); +int xfs_inode_ag_iterator(struct xfs_mount *mp, + int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), + int flags, int tag); + #endif From BATV+d1518602245c537660c2+2090+infradead.org+hch@bombadil.srs.infradead.org Thu May 14 12:15:52 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4EHFodU234926 for ; Thu, 14 May 2009 12:15:51 -0500 X-ASG-Debug-ID: 1242321358-742602060000-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 53D79287FFC for ; Thu, 14 May 2009 10:15:58 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Sg8IVKeQlyliJGZY for ; Thu, 14 May 2009 10:15:58 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M4eXF-0007cI-SN; Thu, 14 May 2009 17:15:57 +0000 Message-Id: <20090514171233.942489000@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Thu, 14 May 2009 13:12:33 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: david@fromorbit.com X-ASG-Orig-Subj: [PATCH 0/7] inode sync refactoring Subject: [PATCH 0/7] inode sync refactoring 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: 1242321358 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a respin of Dave's xfs_sync_inodes refactoring plus a couple of new patches. The major difference to the original series is sorting out the pag_ici_lock locking which was busted in many ways. We now held the lock exactly as long as the current code, to do that I had to give up on the lookup vs execute split for the callbacks which actually improved the code flow a bit, at the expense of exposing the lock to the callbacks. The other change is that inode flushing still uses the same old algorithm instead of bringing over the optimizations from xfs_fs_write_inode which caused some spurious regressions in test 183 for me. I still plan to get these two paths unified, but let's leave that for a separate patch. From BATV+d1518602245c537660c2+2090+infradead.org+hch@bombadil.srs.infradead.org Thu May 14 12:15:52 2009 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 (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4EHFpKC234941 for ; Thu, 14 May 2009 12:15:52 -0500 X-ASG-Debug-ID: 1242321359-74b501bf0000-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 A7D08287FFC for ; Thu, 14 May 2009 10:15:59 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id SHu2LuFmVAfQjWDF for ; Thu, 14 May 2009 10:15:59 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M4eXH-0007lG-AV; Thu, 14 May 2009 17:15:59 +0000 Message-Id: <20090514171559.231368000@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Thu, 14 May 2009 13:12:40 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: david@fromorbit.com X-ASG-Orig-Subj: [PATCH 7/7] xfs: split xfs_sync_inodes Subject: [PATCH 7/7] xfs: split xfs_sync_inodes References: <20090514171233.942489000@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-split-xfs_sync_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: 1242321359 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfs_sync_inodes is used to write back either file data or inode metadata. In generally we always do these separately, except for one fishy case in xfs_fs_put_super that does both. So separate xfs_sync_inodes into separate xfs_sync_data and xfs_sync_attr functions. In xfs_fs_put_super we first call the data sync and then the attr sync as that was the previous order. The moved log force in that path doesn't make a different because we will force the log again as part of the real unmount process. The filesystem readonly checks are not performed by the new function but instead moved into the callers, given that most callers alredy have it further up in the stack. Also add debug checks that we do not pass in incorrect flags in the new xfs_sync_data and xfs_sync_attr function and fix the one place that did pass in a wrong flag. Also remove a comment mentioning xfs_sync_inodes that has been incorrect for a while because we always take either the iolock or ilock in the sync path these days. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2009-05-14 19:09:00.178792110 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_super.c 2009-05-14 19:09:05.278808755 +0200 @@ -1070,7 +1070,18 @@ xfs_fs_put_super( int unmount_event_flags = 0; xfs_syncd_stop(mp); - xfs_sync_inodes(mp, SYNC_ATTR|SYNC_DELWRI); + + if (!(sb->s_flags & MS_RDONLY)) { + /* + * XXX(hch): this should be SYNC_WAIT. + * + * Or more likely no needed at all because the VFS is already + * calling ->sync_fs after shutting down all filestem + * operations and just before calling ->put_super. + */ + xfs_sync_data(mp, 0); + xfs_sync_attr(mp, 0); + } #ifdef HAVE_DMAPI if (mp->m_flags & XFS_MOUNT_DMAPI) { Index: xfs/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-05-14 19:09:04.687659175 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-05-14 19:09:05.279808603 +0200 @@ -265,29 +265,40 @@ xfs_sync_inode_attr( return error; } +/* + * Write out pagecache data for the whole filesystem. + */ int -xfs_sync_inodes( - xfs_mount_t *mp, - int flags) +xfs_sync_data( + struct xfs_mount *mp, + int flags) { - int error = 0; - int lflags = XFS_LOG_FORCE; + int error; - if (mp->m_flags & XFS_MOUNT_RDONLY) - return 0; + ASSERT((flags & ~(SYNC_TRYLOCK|SYNC_WAIT|SYNC_IOWAIT)) == 0); - if (flags & SYNC_WAIT) - lflags |= XFS_LOG_SYNC; + error = xfs_inode_ag_iterator(mp, xfs_sync_inode_data, flags, -1); + if (error) + return XFS_ERROR(error); - if (flags & SYNC_DELWRI) - error = xfs_inode_ag_iterator(mp, xfs_sync_inode_data, flags, -1); + xfs_log_force(mp, 0, + (flags & SYNC_WAIT) ? + XFS_LOG_FORCE | XFS_LOG_SYNC : + XFS_LOG_FORCE); + return 0; +} - if (flags & SYNC_ATTR) - error = xfs_inode_ag_iterator(mp, xfs_sync_inode_attr, flags, -1); +/* + * Write out inode metadata (attributes) for the whole filesystem. + */ +int +xfs_sync_attr( + struct xfs_mount *mp, + int flags) +{ + ASSERT((flags & ~SYNC_WAIT) == 0); - if (!error && (flags & SYNC_DELWRI)) - xfs_log_force(mp, 0, lflags); - return XFS_ERROR(error); + return xfs_inode_ag_iterator(mp, xfs_sync_inode_attr, flags, -1); } STATIC int @@ -401,12 +412,12 @@ xfs_quiesce_data( int error; /* push non-blocking */ - xfs_sync_inodes(mp, SYNC_DELWRI|SYNC_BDFLUSH); + xfs_sync_data(mp, 0); xfs_qm_sync(mp, SYNC_BDFLUSH); xfs_filestream_flush(mp); /* push and block */ - xfs_sync_inodes(mp, SYNC_DELWRI|SYNC_WAIT|SYNC_IOWAIT); + xfs_sync_data(mp, SYNC_WAIT|SYNC_IOWAIT); xfs_qm_sync(mp, SYNC_WAIT); /* write superblock and hoover up shutdown errors */ @@ -435,7 +446,7 @@ xfs_quiesce_fs( * logged before we can write the unmount record. */ do { - xfs_sync_inodes(mp, SYNC_ATTR|SYNC_WAIT); + xfs_sync_attr(mp, SYNC_WAIT); pincount = xfs_flush_buftarg(mp->m_ddev_targp, 1); if (!pincount) { delay(50); @@ -518,8 +529,8 @@ xfs_flush_inodes_work( void *arg) { struct inode *inode = arg; - xfs_sync_inodes(mp, SYNC_DELWRI | SYNC_TRYLOCK); - xfs_sync_inodes(mp, SYNC_DELWRI | SYNC_TRYLOCK | SYNC_IOWAIT); + xfs_sync_data(mp, SYNC_TRYLOCK); + xfs_sync_data(mp, SYNC_TRYLOCK | SYNC_IOWAIT); iput(inode); } Index: xfs/fs/xfs/linux-2.6/xfs_quotaops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_quotaops.c 2009-05-14 19:05:24.908659400 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_quotaops.c 2009-05-14 19:09:05.280834851 +0200 @@ -50,9 +50,11 @@ xfs_fs_quota_sync( { struct xfs_mount *mp = XFS_M(sb); + if (sb->s_flags & MS_RDONLY) + return -EROFS; if (!XFS_IS_QUOTA_RUNNING(mp)) return -ENOSYS; - return -xfs_sync_inodes(mp, SYNC_DELWRI); + return -xfs_sync_data(mp, 0); } STATIC int Index: xfs/fs/xfs/linux-2.6/xfs_sync.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.h 2009-05-14 19:09:04.694659368 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.h 2009-05-14 19:09:05.280834851 +0200 @@ -29,8 +29,6 @@ typedef struct xfs_sync_work { struct completion *w_completion; } xfs_sync_work_t; -#define SYNC_ATTR 0x0001 /* sync attributes */ -#define SYNC_DELWRI 0x0002 /* look at delayed writes */ #define SYNC_WAIT 0x0004 /* wait for i/o to complete */ #define SYNC_BDFLUSH 0x0008 /* BDFLUSH is calling -- don't block */ #define SYNC_IOWAIT 0x0010 /* wait for all I/O to complete */ @@ -41,7 +39,8 @@ void xfs_syncd_stop(struct xfs_mount *mp int xfs_inode_flush(struct xfs_inode *ip, int sync); -int xfs_sync_inodes(struct xfs_mount *mp, int flags); +int xfs_sync_attr(struct xfs_mount *mp, int flags); +int xfs_sync_data(struct xfs_mount *mp, int flags); int xfs_sync_fsdata(struct xfs_mount *mp, int flags); int xfs_quiesce_data(struct xfs_mount *mp); Index: xfs/fs/xfs/xfs_filestream.c =================================================================== --- xfs.orig/fs/xfs/xfs_filestream.c 2009-05-14 19:05:24.929659282 +0200 +++ xfs/fs/xfs/xfs_filestream.c 2009-05-14 19:09:05.283807995 +0200 @@ -542,10 +542,8 @@ xfs_filestream_associate( * waiting for the lock because someone else is waiting on the lock we * hold and we cannot drop that as we are in a transaction here. * - * Lucky for us, this inversion is rarely a problem because it's a - * directory inode that we are trying to lock here and that means the - * only place that matters is xfs_sync_inodes() and SYNC_DELWRI is - * used. i.e. freeze, remount-ro, quotasync or unmount. + * Lucky for us, this inversion is not a problem because it's a + * directory inode that we are trying to lock here. * * So, if we can't get the iolock without sleeping then just give up */ From BATV+d1518602245c537660c2+2090+infradead.org+hch@bombadil.srs.infradead.org Thu May 14 12:15:53 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4EHFqU3234946 for ; Thu, 14 May 2009 12:15:52 -0500 X-ASG-Debug-ID: 1242321645-4a3b02ae0000-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 60A25FAECAF for ; Thu, 14 May 2009 10:20:45 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id ZiJBA0eyqF4Fo1CF for ; Thu, 14 May 2009 10:20:45 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M4eXG-0007hZ-OP; Thu, 14 May 2009 17:15:58 +0000 Message-Id: <20090514171558.649403000@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Thu, 14 May 2009 13:12:37 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: david@fromorbit.com X-ASG-Orig-Subj: [PATCH 4/7] xfs: remove unused parameter from xfs_reclaim_inodes Subject: [PATCH 4/7] xfs: remove unused parameter from xfs_reclaim_inodes References: <20090514171233.942489000@bombadil.infradead.org> Content-Disposition: inline; filename=sync5.diff 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: 1242321646 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner The noblock parameter of xfs_reclaim_inodes is only ever set to zero. Remove it and all the conditional code that is never executed. Signed-off-by: Dave Chinner Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-05-14 16:20:34.251688779 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-05-14 16:20:37.012658983 +0200 @@ -383,7 +383,7 @@ xfs_quiesce_fs( int count = 0, pincount; xfs_flush_buftarg(mp->m_ddev_targp, 0); - xfs_reclaim_inodes(mp, 0, XFS_IFLUSH_DELWRI_ELSE_ASYNC); + xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC); /* * This loop must run at least twice. The first instance of the loop @@ -507,7 +507,7 @@ xfs_sync_worker( if (!(mp->m_flags & XFS_MOUNT_RDONLY)) { xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); - xfs_reclaim_inodes(mp, 0, XFS_IFLUSH_DELWRI_ELSE_ASYNC); + xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC); /* dgc: errors ignored here */ error = xfs_qm_sync(mp, SYNC_BDFLUSH); error = xfs_sync_fsdata(mp, SYNC_BDFLUSH); @@ -701,7 +701,6 @@ STATIC void xfs_reclaim_inodes_ag( xfs_mount_t *mp, int ag, - int noblock, int mode) { xfs_inode_t *ip = NULL; @@ -747,25 +746,13 @@ restart: continue; } - if (noblock) { - if (!xfs_ilock_nowait(ip, XFS_ILOCK_EXCL)) { - read_unlock(&pag->pag_ici_lock); - continue; - } - if (xfs_ipincount(ip) || - !xfs_iflock_nowait(ip)) { - xfs_iunlock(ip, XFS_ILOCK_EXCL); - read_unlock(&pag->pag_ici_lock); - continue; - } - } read_unlock(&pag->pag_ici_lock); /* * hmmm - this is an inode already in reclaim. Do * we even bother catching it here? */ - if (xfs_reclaim_inode(ip, noblock, mode)) + if (xfs_reclaim_inode(ip, 0, mode)) skipped++; } while (nr_found); @@ -780,7 +767,6 @@ restart: int xfs_reclaim_inodes( xfs_mount_t *mp, - int noblock, int mode) { int i; @@ -788,7 +774,7 @@ xfs_reclaim_inodes( for (i = 0; i < mp->m_sb.sb_agcount; i++) { if (!mp->m_perag[i].pag_ici_init) continue; - xfs_reclaim_inodes_ag(mp, i, noblock, mode); + xfs_reclaim_inodes_ag(mp, i, mode); } return 0; } Index: xfs/fs/xfs/linux-2.6/xfs_sync.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.h 2009-05-14 16:19:44.268809697 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.h 2009-05-14 16:20:37.012658983 +0200 @@ -50,7 +50,7 @@ void xfs_quiesce_attr(struct xfs_mount * void xfs_flush_inodes(struct xfs_inode *ip); int xfs_reclaim_inode(struct xfs_inode *ip, int locked, int sync_mode); -int xfs_reclaim_inodes(struct xfs_mount *mp, int noblock, int mode); +int xfs_reclaim_inodes(struct xfs_mount *mp, int mode); void xfs_inode_set_reclaim_tag(struct xfs_inode *ip); void xfs_inode_clear_reclaim_tag(struct xfs_inode *ip); Index: xfs/fs/xfs/xfs_mount.c =================================================================== --- xfs.orig/fs/xfs/xfs_mount.c 2009-05-14 16:19:44.318659340 +0200 +++ xfs/fs/xfs/xfs_mount.c 2009-05-14 16:20:37.013659110 +0200 @@ -1371,7 +1371,7 @@ xfs_unmountfs( * need to force the log first. */ xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); - xfs_reclaim_inodes(mp, 0, XFS_IFLUSH_ASYNC); + xfs_reclaim_inodes(mp, XFS_IFLUSH_ASYNC); xfs_qm_unmount(mp); From BATV+d1518602245c537660c2+2090+infradead.org+hch@bombadil.srs.infradead.org Thu May 14 12:15:53 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4EHFpur234936 for ; Thu, 14 May 2009 12:15:53 -0500 X-ASG-Debug-ID: 1242321358-577d01bb0000-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 3ABF41D33B29 for ; Thu, 14 May 2009 10:15:58 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id NiUj9AtWO18a3qGv for ; Thu, 14 May 2009 10:15:58 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M4eXG-0007g6-JF; Thu, 14 May 2009 17:15:58 +0000 Message-Id: <20090514171558.494200000@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Thu, 14 May 2009 13:12:36 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: david@fromorbit.com X-ASG-Orig-Subj: [PATCH 3/7] xfs: factor out inode validation for sync Subject: [PATCH 3/7] xfs: factor out inode validation for sync References: <20090514171233.942489000@bombadil.infradead.org> Content-Disposition: inline; filename=sync3.diff 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: 1242321359 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner Separate the validation of inodes found by the radix tree walk from the radix tree lookup. Signed-off-by: Dave Chinner Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-05-14 16:19:52.080661336 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-05-14 16:20:34.251688779 +0200 @@ -49,6 +49,39 @@ #include +/* must be called with pag_ici_lock held and releases it */ +STATIC int +xfs_sync_inode_valid( + struct xfs_inode *ip, + struct xfs_perag *pag) +{ + struct inode *inode = VFS_I(ip); + + /* nothing to sync during shutdown */ + if (XFS_FORCED_SHUTDOWN(ip->i_mount)) { + read_unlock(&pag->pag_ici_lock); + return EFSCORRUPTED; + } + + /* + * If we can't get a reference on the inode, it must be in reclaim. + * Leave it for the reclaim code to flush. Also avoid inodes that + * haven't been fully initialised. + */ + if (!igrab(inode)) { + read_unlock(&pag->pag_ici_lock); + return ENOENT; + } + read_unlock(&pag->pag_ici_lock); + + if (is_bad_inode(inode) || xfs_iflags_test(ip, XFS_INEW)) { + IRELE(ip); + return ENOENT; + } + + return 0; +} + STATIC int xfs_sync_inode_data( struct xfs_inode *ip, @@ -121,7 +154,6 @@ xfs_sync_inodes_ag( int last_error = 0; do { - struct inode *inode; xfs_inode_t *ip = NULL; /* @@ -150,27 +182,10 @@ xfs_sync_inodes_ag( break; } - /* nothing to sync during shutdown */ - if (XFS_FORCED_SHUTDOWN(mp)) { - read_unlock(&pag->pag_ici_lock); - return 0; - } - - /* - * If we can't get a reference on the inode, it must be - * in reclaim. Leave it for the reclaim code to flush. - */ - inode = VFS_I(ip); - if (!igrab(inode)) { - read_unlock(&pag->pag_ici_lock); - continue; - } - read_unlock(&pag->pag_ici_lock); - - /* avoid new or bad inodes */ - if (is_bad_inode(inode) || - xfs_iflags_test(ip, XFS_INEW)) { - IRELE(ip); + error = xfs_sync_inode_valid(ip, pag); + if (error) { + if (error == EFSCORRUPTED) + return 0; continue; } From BATV+d1518602245c537660c2+2090+infradead.org+hch@bombadil.srs.infradead.org Thu May 14 12:15:52 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4EHFpfM234937 for ; Thu, 14 May 2009 12:15:52 -0500 X-ASG-Debug-ID: 1242321359-742b020b0000-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 51EED287FFC for ; Thu, 14 May 2009 10:15:59 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id iGYkoL4w4XrDseBT for ; Thu, 14 May 2009 10:15:59 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M4eXG-0007it-VE; Thu, 14 May 2009 17:15:59 +0000 Message-Id: <20090514171558.869514000@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Thu, 14 May 2009 13:12:38 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: david@fromorbit.com X-ASG-Orig-Subj: [PATCH 5/7] xfs: introduce a per-ag inode iterator Subject: [PATCH 5/7] xfs: introduce a per-ag inode iterator References: <20090514171233.942489000@bombadil.infradead.org> Content-Disposition: inline; filename=sync6.diff 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: 1242321359 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner Given that we walk across the per-ag inode lists so often, it makes sense to introduce an iterator for this. Convert the sync and reclaim code to use this new iterator, quota code will follow in the next patch. [hch: merged the lookup and execute callbacks back into one to get the pag_ici_lock locking correct and simplify the code flow] Signed-off-by: Dave Chinner Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-05-14 16:20:37.012658983 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-05-14 16:22:26.321659103 +0200 @@ -49,6 +49,122 @@ #include +STATIC xfs_inode_t * +xfs_inode_ag_lookup( + struct xfs_mount *mp, + struct xfs_perag *pag, + uint32_t *first_index, + int tag) +{ + int nr_found; + struct xfs_inode *ip; + + /* + * use a gang lookup to find the next inode in the tree + * as the tree is sparse and a gang lookup walks to find + * the number of objects requested. + */ + read_lock(&pag->pag_ici_lock); + if (tag == -1) { + nr_found = radix_tree_gang_lookup(&pag->pag_ici_root, + (void **)&ip, *first_index, 1); + } else { + nr_found = radix_tree_gang_lookup_tag(&pag->pag_ici_root, + (void **)&ip, *first_index, 1, tag); + } + if (!nr_found) + goto unlock; + + /* + * Update the index for the next lookup. Catch overflows + * into the next AG range which can occur if we have inodes + * in the last block of the AG and we are currently + * pointing to the last inode. + */ + *first_index = XFS_INO_TO_AGINO(mp, ip->i_ino + 1); + if (*first_index < XFS_INO_TO_AGINO(mp, ip->i_ino)) + goto unlock; + + return ip; + +unlock: + read_unlock(&pag->pag_ici_lock); + return NULL; +} + +STATIC int +xfs_inode_ag_walk( + struct xfs_mount *mp, + xfs_agnumber_t ag, + int (*execute)(struct xfs_inode *ip, + struct xfs_perag *pag, int flags), + int flags, + int tag) +{ + struct xfs_perag *pag = &mp->m_perag[ag]; + uint32_t first_index; + int last_error = 0; + int skipped; + +restart: + skipped = 0; + first_index = 0; + do { + int error = 0; + xfs_inode_t *ip; + + ip = xfs_inode_ag_lookup(mp, pag, &first_index, tag); + if (!ip) + break; + + error = execute(ip, pag, flags); + if (error == EAGAIN) { + skipped++; + continue; + } + if (error) + last_error = error; + /* + * bail out if the filesystem is corrupted. + */ + if (error == EFSCORRUPTED) + break; + + } while (1); + + if (skipped) { + delay(1); + goto restart; + } + + xfs_put_perag(mp, pag); + return last_error; +} + +STATIC int +xfs_inode_ag_iterator( + struct xfs_mount *mp, + int (*execute)(struct xfs_inode *ip, + struct xfs_perag *pag, int flags), + int flags, + int tag) +{ + int error = 0; + int last_error = 0; + xfs_agnumber_t ag; + + for (ag = 0; ag < mp->m_sb.sb_agcount; ag++) { + if (!mp->m_perag[ag].pag_ici_init) + continue; + error = xfs_inode_ag_walk(mp, ag, execute, flags, tag); + if (error) + last_error = error; + if (error == EFSCORRUPTED) + break; + } + return XFS_ERROR(last_error); +} + /* must be called with pag_ici_lock held and releases it */ STATIC int xfs_sync_inode_valid( @@ -85,12 +201,17 @@ xfs_sync_inode_valid( STATIC int xfs_sync_inode_data( struct xfs_inode *ip, + struct xfs_perag *pag, int flags) { struct inode *inode = VFS_I(ip); struct address_space *mapping = inode->i_mapping; int error = 0; + error = xfs_sync_inode_valid(ip, pag); + if (error) + return 0; + if (mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)) { if (!xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED)) { if (flags & SYNC_TRYLOCK) @@ -106,16 +227,22 @@ xfs_sync_inode_data( out_wait: if (flags & SYNC_IOWAIT) xfs_ioend_wait(ip); + IRELE(ip); return error; } STATIC int xfs_sync_inode_attr( struct xfs_inode *ip, + struct xfs_perag *pag, int flags) { int error = 0; + error = xfs_sync_inode_valid(ip, pag); + if (error) + return 0; + xfs_ilock(ip, XFS_ILOCK_SHARED); if (xfs_inode_clean(ip)) goto out_unlock; @@ -134,117 +261,33 @@ xfs_sync_inode_attr( out_unlock: xfs_iunlock(ip, XFS_ILOCK_SHARED); + IRELE(ip); return error; } -/* - * Sync all the inodes in the given AG according to the - * direction given by the flags. - */ -STATIC int -xfs_sync_inodes_ag( - xfs_mount_t *mp, - int ag, - int flags) -{ - xfs_perag_t *pag = &mp->m_perag[ag]; - int nr_found; - uint32_t first_index = 0; - int error = 0; - int last_error = 0; - - do { - xfs_inode_t *ip = NULL; - - /* - * use a gang lookup to find the next inode in the tree - * as the tree is sparse and a gang lookup walks to find - * the number of objects requested. - */ - read_lock(&pag->pag_ici_lock); - nr_found = radix_tree_gang_lookup(&pag->pag_ici_root, - (void**)&ip, first_index, 1); - - if (!nr_found) { - read_unlock(&pag->pag_ici_lock); - break; - } - - /* - * Update the index for the next lookup. Catch overflows - * into the next AG range which can occur if we have inodes - * in the last block of the AG and we are currently - * pointing to the last inode. - */ - first_index = XFS_INO_TO_AGINO(mp, ip->i_ino + 1); - if (first_index < XFS_INO_TO_AGINO(mp, ip->i_ino)) { - read_unlock(&pag->pag_ici_lock); - break; - } - - error = xfs_sync_inode_valid(ip, pag); - if (error) { - if (error == EFSCORRUPTED) - return 0; - continue; - } - - /* - * If we have to flush data or wait for I/O completion - * we need to hold the iolock. - */ - if (flags & SYNC_DELWRI) - error = xfs_sync_inode_data(ip, flags); - - if (flags & SYNC_ATTR) - error = xfs_sync_inode_attr(ip, flags); - - IRELE(ip); - - if (error) - last_error = error; - /* - * bail out if the filesystem is corrupted. - */ - if (error == EFSCORRUPTED) - return XFS_ERROR(error); - - } while (nr_found); - - return last_error; -} - int xfs_sync_inodes( xfs_mount_t *mp, int flags) { - int error; - int last_error; - int i; + int error = 0; int lflags = XFS_LOG_FORCE; if (mp->m_flags & XFS_MOUNT_RDONLY) return 0; - error = 0; - last_error = 0; if (flags & SYNC_WAIT) lflags |= XFS_LOG_SYNC; - for (i = 0; i < mp->m_sb.sb_agcount; i++) { - if (!mp->m_perag[i].pag_ici_init) - continue; - error = xfs_sync_inodes_ag(mp, i, flags); - if (error) - last_error = error; - if (error == EFSCORRUPTED) - break; - } if (flags & SYNC_DELWRI) - xfs_log_force(mp, 0, lflags); + error = xfs_inode_ag_iterator(mp, xfs_sync_inode_data, flags, -1); - return XFS_ERROR(last_error); + if (flags & SYNC_ATTR) + error = xfs_inode_ag_iterator(mp, xfs_sync_inode_attr, flags, -1); + + if (!error && (flags & SYNC_DELWRI)) + xfs_log_force(mp, 0, lflags); + return XFS_ERROR(error); } STATIC int @@ -696,72 +739,20 @@ xfs_inode_clear_reclaim_tag( xfs_put_perag(mp, pag); } - -STATIC void -xfs_reclaim_inodes_ag( - xfs_mount_t *mp, - int ag, - int mode) +STATIC int +xfs_reclaim_inode_now( + struct xfs_inode *ip, + struct xfs_perag *pag, + int flags) { - xfs_inode_t *ip = NULL; - xfs_perag_t *pag = &mp->m_perag[ag]; - int nr_found; - uint32_t first_index; - int skipped; - -restart: - first_index = 0; - skipped = 0; - do { - /* - * use a gang lookup to find the next inode in the tree - * as the tree is sparse and a gang lookup walks to find - * the number of objects requested. - */ - read_lock(&pag->pag_ici_lock); - nr_found = radix_tree_gang_lookup_tag(&pag->pag_ici_root, - (void**)&ip, first_index, 1, - XFS_ICI_RECLAIM_TAG); - - if (!nr_found) { - read_unlock(&pag->pag_ici_lock); - break; - } - - /* - * Update the index for the next lookup. Catch overflows - * into the next AG range which can occur if we have inodes - * in the last block of the AG and we are currently - * pointing to the last inode. - */ - first_index = XFS_INO_TO_AGINO(mp, ip->i_ino + 1); - if (first_index < XFS_INO_TO_AGINO(mp, ip->i_ino)) { - read_unlock(&pag->pag_ici_lock); - break; - } - - /* ignore if already under reclaim */ - if (xfs_iflags_test(ip, XFS_IRECLAIM)) { - read_unlock(&pag->pag_ici_lock); - continue; - } - + /* ignore if already under reclaim */ + if (xfs_iflags_test(ip, XFS_IRECLAIM)) { read_unlock(&pag->pag_ici_lock); - - /* - * hmmm - this is an inode already in reclaim. Do - * we even bother catching it here? - */ - if (xfs_reclaim_inode(ip, 0, mode)) - skipped++; - } while (nr_found); - - if (skipped) { - delay(1); - goto restart; + return 0; } - return; + read_unlock(&pag->pag_ici_lock); + return xfs_reclaim_inode(ip, 0, flags); } int @@ -769,14 +760,6 @@ xfs_reclaim_inodes( xfs_mount_t *mp, int mode) { - int i; - - for (i = 0; i < mp->m_sb.sb_agcount; i++) { - if (!mp->m_perag[i].pag_ici_init) - continue; - xfs_reclaim_inodes_ag(mp, i, mode); - } - return 0; + return xfs_inode_ag_iterator(mp, xfs_reclaim_inode_now, mode, + XFS_ICI_RECLAIM_TAG); } - - From BATV+d1518602245c537660c2+2090+infradead.org+hch@bombadil.srs.infradead.org Thu May 14 12:15:52 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4EHFomi234931 for ; Thu, 14 May 2009 12:15:51 -0500 X-ASG-Debug-ID: 1242321358-744c01a20000-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 C0C6E287FFC for ; Thu, 14 May 2009 10:15:58 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 4QHvJNshuhjMPHnu for ; Thu, 14 May 2009 10:15:58 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M4eXG-0007el-CX; Thu, 14 May 2009 17:15:58 +0000 Message-Id: <20090514171558.298098000@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Thu, 14 May 2009 13:12:35 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: david@fromorbit.com X-ASG-Orig-Subj: [PATCH 2/7] xfs: split inode flushing from xfs_sync_inodes_ag Subject: [PATCH 2/7] xfs: split inode flushing from xfs_sync_inodes_ag References: <20090514171233.942489000@bombadil.infradead.org> Content-Disposition: inline; filename=sync2.diff 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: 1242321358 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean In many cases we only want to sync inode metadata. Split out the inode flushing into a separate helper to prepare factoring the inode sync code. Based on a patch from Dave Chinner, but redone to keep the current behaviour exactly and leave changes to the flushing logic to another patch. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-05-14 16:17:41.359813297 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-05-14 19:05:25.545684101 +0200 @@ -76,6 +76,34 @@ xfs_sync_inode_data( return error; } +STATIC int +xfs_sync_inode_attr( + struct xfs_inode *ip, + int flags) +{ + int error = 0; + + xfs_ilock(ip, XFS_ILOCK_SHARED); + if (xfs_inode_clean(ip)) + goto out_unlock; + if (!xfs_iflock_nowait(ip)) { + if (!(flags & SYNC_WAIT)) + goto out_unlock; + xfs_iflock(ip); + } + + if (xfs_inode_clean(ip)) { + xfs_ifunlock(ip); + goto out_unlock; + } + + error = xfs_iflush(ip, XFS_IFLUSH_SYNC); + + out_unlock: + xfs_iunlock(ip, XFS_ILOCK_SHARED); + return error; +} + /* * Sync all the inodes in the given AG according to the * direction given by the flags. @@ -95,7 +123,6 @@ xfs_sync_inodes_ag( do { struct inode *inode; xfs_inode_t *ip = NULL; - int lock_flags = XFS_ILOCK_SHARED; /* * use a gang lookup to find the next inode in the tree @@ -154,22 +181,10 @@ xfs_sync_inodes_ag( if (flags & SYNC_DELWRI) error = xfs_sync_inode_data(ip, flags); - xfs_ilock(ip, XFS_ILOCK_SHARED); - if ((flags & SYNC_ATTR) && !xfs_inode_clean(ip)) { - if (flags & SYNC_WAIT) { - xfs_iflock(ip); - if (!xfs_inode_clean(ip)) - error = xfs_iflush(ip, XFS_IFLUSH_SYNC); - else - xfs_ifunlock(ip); - } else if (xfs_iflock_nowait(ip)) { - if (!xfs_inode_clean(ip)) - error = xfs_iflush(ip, XFS_IFLUSH_DELWRI); - else - xfs_ifunlock(ip); - } - } - xfs_iput(ip, lock_flags); + if (flags & SYNC_ATTR) + error = xfs_sync_inode_attr(ip, flags); + + IRELE(ip); if (error) last_error = error; From BATV+d1518602245c537660c2+2090+infradead.org+hch@bombadil.srs.infradead.org Thu May 14 12:15:52 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4EHFprG234942 for ; Thu, 14 May 2009 12:15:52 -0500 X-ASG-Debug-ID: 1242321645-5a9701e10000-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 14878FAECAF for ; Thu, 14 May 2009 10:20:45 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id tgShC5sqEJzlJv1Y for ; Thu, 14 May 2009 10:20:45 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M4eXG-0007da-3g; Thu, 14 May 2009 17:15:58 +0000 Message-Id: <20090514171558.014747000@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Thu, 14 May 2009 13:12:34 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: david@fromorbit.com X-ASG-Orig-Subj: [PATCH 1/7] xfs: split inode data writeback from xfs_sync_inodes_ag Subject: [PATCH 1/7] xfs: split inode data writeback from xfs_sync_inodes_ag References: <20090514171233.942489000@bombadil.infradead.org> Content-Disposition: inline; filename=sync1.diff 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: 1242321646 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner In many cases we only want to sync inode data. Start spliting the inode sync into data sync and inode sync by factoring out the inode data flush. [hch: minor cleanups] Signed-off-by: Dave Chinner Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-05-12 23:28:45.023811837 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-05-13 10:00:27.169659271 +0200 @@ -48,6 +48,34 @@ #include #include + +STATIC int +xfs_sync_inode_data( + struct xfs_inode *ip, + int flags) +{ + struct inode *inode = VFS_I(ip); + struct address_space *mapping = inode->i_mapping; + int error = 0; + + if (mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)) { + if (!xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED)) { + if (flags & SYNC_TRYLOCK) + goto out_wait; + xfs_ilock(ip, XFS_IOLOCK_SHARED); + } + + error = xfs_flush_pages(ip, 0, -1, (flags & SYNC_WAIT) ? + 0 : XFS_B_ASYNC, FI_NONE); + xfs_iunlock(ip, XFS_IOLOCK_SHARED); + } + + out_wait: + if (flags & SYNC_IOWAIT) + xfs_ioend_wait(ip); + return error; +} + /* * Sync all the inodes in the given AG according to the * direction given by the flags. @@ -123,27 +151,10 @@ xfs_sync_inodes_ag( * If we have to flush data or wait for I/O completion * we need to hold the iolock. */ - if (flags & SYNC_DELWRI) { - if (VN_DIRTY(inode)) { - if (flags & SYNC_TRYLOCK) { - if (xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED)) - lock_flags |= XFS_IOLOCK_SHARED; - } else { - xfs_ilock(ip, XFS_IOLOCK_SHARED); - lock_flags |= XFS_IOLOCK_SHARED; - } - if (lock_flags & XFS_IOLOCK_SHARED) { - error = xfs_flush_pages(ip, 0, -1, - (flags & SYNC_WAIT) ? 0 - : XFS_B_ASYNC, - FI_NONE); - } - } - if (VN_CACHED(inode) && (flags & SYNC_IOWAIT)) - xfs_ioend_wait(ip); - } - xfs_ilock(ip, XFS_ILOCK_SHARED); + if (flags & SYNC_DELWRI) + error = xfs_sync_inode_data(ip, flags); + xfs_ilock(ip, XFS_ILOCK_SHARED); if ((flags & SYNC_ATTR) && !xfs_inode_clean(ip)) { if (flags & SYNC_WAIT) { xfs_iflock(ip); From SRS0+JBZb+68+fromorbit.com=david@internode.on.net Thu May 14 17:53:27 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_21 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4EMrRRv254925 for ; Thu, 14 May 2009 17:53:27 -0500 X-ASG-Debug-ID: 1242341612-5277013b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B544419C55B7 for ; Thu, 14 May 2009 15:53:33 -0700 (PDT) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id agsoeDvSbjB0Dxd3 for ; Thu, 14 May 2009 15:53:33 -0700 (PDT) Received: from discord (unverified [121.44.1.36]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 17595-1927428 for multiple; Fri, 15 May 2009 08:23:31 +0930 (CST) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1M4jnt-0004mo-FT; Fri, 15 May 2009 08:53:29 +1000 Date: Fri, 15 May 2009 08:53:29 +1000 From: Dave Chinner To: "Theodore Ts'o" Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Questions about xfstests regarding porting it to test ext4 filesystems Subject: Re: Questions about xfstests regarding porting it to test ext4 filesystems Message-ID: <20090514225329.GN16929@discord.disaster> 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: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1242341614 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4131 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= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25801 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, May 14, 2009 at 08:54:04AM -0400, Theodore Ts'o wrote: > > I've been playing around with xfstests (aka xfsqa) and have some > questions: > > 1) What is the best mailing list to use for discussions about xfstests? > I'm *not* subscribed to xfs@oss.sgi.com, since I'm concerned about > traffic levels... I'm on too many high-volume mailing lists already. Just send email here for the moment, no need to subscribe. I think if we move down the road of making xfstests generic and it works out for everyone, traffic would move to a more general list (e.g fsdevel) as more ppl use it. > 2) Why is the TESTDIR have to be a persistent xfs volume? I noticed > that when testing UDF and NFS, the scratch volume is used (and $testdir > is set to the point at the scratch directory). Is there some > fundamental reason why there must be an XFS volume mounted, even if the > fundamental intention is to test some other filesystem type, whether > it's UDF, NFS, or Ext4? It is persistent because it ages the filesystem. If you run xfsqa repeatedly on the same machine (e.g. for months on end), the TESTDIR gets aged and so we exercise aged filesystems as well as a new fs' (scratch). There is no reason it really needs to be XFS - it could be ext4, UDF, etc - as long as it is persistent. > 3) How much latitude/interest is there in modifying xfstests to be a bit > more filesystem independent? Plenty, I think. While it has lots of XFS specific stuff, many of the tests are generic and have no XFS dependence at all. And many of the tests that rely on preallocation and block mapping could be made generic quite easily now. ;) > I understand the primary purpose of > xfstests has to be to support XFS development, but looking at the > scripts, there is a *huge* amount of XFS-specific assumptions all over > the shell scripts. A lot of them are relatively easy to fix, I think. > As a result I'm still of two minds whether it will > be less work to start from scratch to develop a test suite for ext4 (and > from the beginning try to make it filesystem independent) or to try to > hack xfstests and try to make it more filesystem indpendent. A lot of > this depends on the time/interest with the xfstests upstream in working > with me. I don't see any problem with that - I think xfstests is a better place to start because of all the knowledge already encoded in the test suite. Note that xfsqa also requires some functionality to be implemented in filesystems to enable more compelte test coverage - e.g. a shutdown mechanism so that the test suite can simulate crashes for it's sync/recovery tests. Ideally, if we are going to make this a generic test uite, we should also develop generic methods of doing this sort of shutdown (e.g. via the blockdev) so the tests will no longer be XFS specific.... > (And assuming we get the licensing issues dealt with --- hence > my interest and time spent in trying to clarify the licensing situation > with the fsx program.) *nod* > If there isn't a whole lot of interest in trying to make xfstests more > portable, that's fine. It may be that I'm better off starting from > scratch. There does seem to be a lot of work and experience represented > in the xfstest suite, though, so I would like to try exploring the > possibility of expanding its scope to also support testing other > filesystems (such as ext4, btrfs, etc.) Agreed. The other advantages I see of supporting multiple filesystems in the one test suite is that we can implement new interfaces in the test suite and know that they work across multiple filesystems before integration. i.e. less arguing on mailing lists because working, useful code can be demonstrated and tested easily. It would also mean that new filesystems have something that can be used to test generic functionality prior to review and merge.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From timothy.shimmin@gmail.com Thu May 14 17:55:49 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_21, 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4EMtn5C255091 for ; Thu, 14 May 2009 17:55:49 -0500 X-ASG-Debug-ID: 1242341756-72d303980000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-px0-f119.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C096A28952C for ; Thu, 14 May 2009 15:55:56 -0700 (PDT) Received: from mail-px0-f119.google.com (mail-px0-f119.google.com [209.85.216.119]) by cuda.sgi.com with ESMTP id 0vULmIVnw3hZxw6v for ; Thu, 14 May 2009 15:55:56 -0700 (PDT) Received: by pxi17 with SMTP id 17so771182pxi.20 for ; Thu, 14 May 2009 15:55:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=Odl/XmA7+GYxCJA7WOrueEAc63XHIiKH9+6yUt6xHxg=; b=x0zOlRqKHRAZMVg9hmV2w6kFTByxc3E2n29f1FCaiwv12ixpLXXEdV4Eus8Ei8c+1I cf8AnPW08S85RMENsNuRkjqTyqfHKOHvTEl6nsMtriv6iWWkL0PzK0uQYqU0mvAl6RTh VBAakNq5o2JPPg2U7UBKe36ShgzhYaG2Ka+Ns= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=cHaFWn86eNqhkaDeLvBSYlk2s+XoU1HKYy/HaOmzJYeSDx0A/3i184YTSz94IpA5oV /qFhPfCBAf/uAu2wsE0wf7zj8HLWRV/isokzahVMQiVSaBTty0f3KvAnx71lQrOEhVNm XuVRgXjI4pQCQh+bY4kCmXKh5vmkwBhgjbp+g= MIME-Version: 1.0 Received: by 10.143.42.7 with SMTP id u7mr927709wfj.99.1242341755894; Thu, 14 May 2009 15:55:55 -0700 (PDT) In-Reply-To: <4A0C45AA.3040307@sandeen.net> References: <4A0C45AA.3040307@sandeen.net> Date: Fri, 15 May 2009 08:55:55 +1000 Message-ID: X-ASG-Orig-Subj: Re: Questions about xfstests regarding porting it to test ext4 filesystems Subject: Re: Questions about xfstests regarding porting it to test ext4 filesystems From: Timothy Shimmin To: Eric Sandeen Cc: "Theodore Ts'o" , xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-px0-f119.google.com[209.85.216.119] X-Barracuda-Start-Time: 1242341756 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0009 1.0000 -2.0153 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25801 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi there, On Fri, May 15, 2009 at 2:24 AM, Eric Sandeen wrote: > > Theodore Ts'o wrote: > > > 2) =A0Why is the TESTDIR have to be a persistent xfs volume? =A0 I noti= ced > > that when testing UDF and NFS, the scratch volume is used (and $testdir > > is set to the point at the scratch directory). =A0 Is there some > > fundamental reason why there must be an XFS volume mounted, even if the > > fundamental intention is to test some other filesystem type, whether > > it's UDF, NFS, or Ext4? > > Hm I'll have to dig, not certain. =A0I thought that TESTDIR would usually > be used for non-destructive testing, general IO etc, while SCRATCHDIR > would usually be used for any test that required lots of repeatability, > and could therefore be more fs-specific. =A0But that's handwaving. > Yeah, I'm not sure if there is a reason to have testdir as a persistent xfs volume - in particular I'm not sure on any constraints existing in the tests. However, the initial TESTDIR intention was to do tests over an ageing files= ystem and one where obviously we didn't need to mkfs over it etc. It exists and is checked beforehand and it exists and is checked afterwards. When doing UDF/IRIX testing we copied over a bunch of xfstests that were ge= neral enough to use on UDF for us. From distant memory, I don't think we really cared for a distinction between scratchdir and testdir, and just wanted one volume to be necessary for testing (and hence why the main interest for udf was in scratchdir). Later, someone else ported back the udf tests into the xfstests in an effort to make things more filesystem independent. > > I understand the primary purpose of > > xfstests has to be to support XFS development, but looking at the > > scripts, there is a *huge* amount of XFS-specific assumptions all over > > the shell scripts. =A0As a result I'm still of two minds whether it wil= l > > be less work to start from scratch to develop a test suite for ext4 (an= d > > from the beginning try to make it filesystem independent) or to try to > > hack xfstests and try to make it more filesystem indpendent. > Tricky ;-) > Yep, agreed. =A0I think it's worth evaluating whether the xfstests harnes= s > is within reach of the goal, though. =A0But you may be right about how > much work it is to get there. > > Really the value to other filesystems is in the tests (those which are > or could be made generic), more than the harness, I'd say. > I'd agree. >From memory, the general filesystem handling for mkfs'ing, mounting, checki= ng and other stuff (in the common file scripts) was a bit messy and error pron= e. I think extracting out the useful/fs-generic tests might be more valuable t= oo. It would be nice to see a clear distinction between filesystem specific tes= ts and generic ones. --Tim From sjt.kar@gmail.com Thu May 14 23:49:05 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4F4n4cg010402 for ; Thu, 14 May 2009 23:49:05 -0500 X-ASG-Debug-ID: 1242363240-3edb000e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-px0-f119.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 22D2B1254E67 for ; Thu, 14 May 2009 21:54:00 -0700 (PDT) Received: from mail-px0-f119.google.com (mail-px0-f119.google.com [209.85.216.119]) by cuda.sgi.com with ESMTP id 8J6Is9i69q1mJzHC for ; Thu, 14 May 2009 21:54:00 -0700 (PDT) Received: by pxi17 with SMTP id 17so868556pxi.20 for ; Thu, 14 May 2009 21:49:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=DzSiFlCcNuCzOfmH2EFZeuSK/gBYkR8DlYO0yinWJG0=; b=xLKlbcH4kd6T88tkZEtoRT7ZrCIqiohffi2GLixUWGBBAkIUJnHkT500HlmoNtyM8o Q/AyGbBOg20qsbJAj17kZZotyuPSI0mWhU4K94iqgK57QUM8R7xr1pEGFJOpdbpsXM/r l9a7+tmVo8ONHQ1wRNJIJyF3ObQRX+agxtljQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=QANB1tPdpLcJ28IwzL++fYrCTBr9QR8MfyjTR1A9p0Twi0N9kMHXkr4sfFRjKCd2Fl m0INkkLCfWDGaNBS713Iwmaq4V3EQ1RIAjaXOuV03wwZsin+FM1ZS0/bjybKqumdKjkQ WHaIR5JECi3/gFMU3AAVAXWh88atrK9T7CFIE= MIME-Version: 1.0 Received: by 10.142.13.14 with SMTP id 14mr949525wfm.108.1242362951271; Thu, 14 May 2009 21:49:11 -0700 (PDT) In-Reply-To: <20090514171558.014747000@bombadil.infradead.org> References: <20090514171233.942489000@bombadil.infradead.org> <20090514171558.014747000@bombadil.infradead.org> Date: Fri, 15 May 2009 10:19:11 +0530 Message-ID: <921ca19c0905142149m68c9717cg83db37c468769c4d@mail.gmail.com> X-ASG-Orig-Subj: Re: [PATCH 1/7] xfs: split inode data writeback from xfs_sync_inodes_ag Subject: Re: [PATCH 1/7] xfs: split inode data writeback from xfs_sync_inodes_ag From: Sujit Karataparambil To: Christoph Hellwig Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-px0-f119.google.com[209.85.216.119] X-Barracuda-Start-Time: 1242363241 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25824 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > +STATIC int > +xfs_sync_inode_data( > + =A0 =A0 =A0 struct xfs_inode =A0 =A0 =A0 =A0*ip, > + =A0 =A0 =A0 int =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 flags) > +{ > + =A0 =A0 =A0 struct inode =A0 =A0*inode =3D VFS_I(ip); > + =A0 =A0 =A0 struct address_space *mapping =3D inode->i_mapping; > + =A0 =A0 =A0 int =A0 =A0 =A0 =A0 =A0 =A0 error =3D 0; > + > + =A0 =A0 =A0 if (mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (!xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED= )) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (flags & SYNC_TRYLOCK) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto out_wa= it; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 xfs_ilock(ip, XFS_IOLOCK_SH= ARED); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 } > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 error =3D xfs_flush_pages(ip, 0, -1, (flags= & SYNC_WAIT) ? > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0= =A0 0 : XFS_B_ASYNC, FI_NONE); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 xfs_iunlock(ip, XFS_IOLOCK_SHARED); > + =A0 =A0 =A0 } > + > + out_wait: > + =A0 =A0 =A0 if (flags & SYNC_IOWAIT) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 xfs_ioend_wait(ip); > + =A0 =A0 =A0 return error; > +} > + should not there be an. error =3D xfs_flush_pages(ip, 0, -1, (flags & SYNC_WAIT) ? 0 : XFS_B_ASYNC, FI_NONE); for the out_wait. This will ensure flush while the xfs_ioend_wait is being waited for. Would this be an better way to flush the data than waiting for the inode to be flushed during power off or scheduler cycles. Would this be an performance hit. or better use error =3D xfs_sync_inode_data(ip, flags); --=20 -- Sujit K M From sjt.kar@gmail.com Thu May 14 23:52:24 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4F4qOhT010548 for ; Thu, 14 May 2009 23:52:24 -0500 X-ASG-Debug-ID: 1242363440-79f9026f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-pz0-f122.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 05FB7125500F for ; Thu, 14 May 2009 21:57:20 -0700 (PDT) Received: from mail-pz0-f122.google.com (mail-pz0-f122.google.com [209.85.222.122]) by cuda.sgi.com with ESMTP id 5aUoKCfb1pVqvcvo for ; Thu, 14 May 2009 21:57:20 -0700 (PDT) Received: by pzk28 with SMTP id 28so881591pzk.20 for ; Thu, 14 May 2009 21:52:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=q44lsTCLcL3Y0VLx1Vv6bnd01ARydILnS8jBuD2EqQQ=; b=g97UyeZZ2RKAj45CHHpsIEfbf21LqNstJDWrtlVFHuPnHLZ2K3oejwNuDN1sfeYx8A OVgDul1srX5gekiCQ9ELGbQ6q0YxTK9jZaxhaxgDk9cJxQ11OWtGXfEjlzqAHkad863I fBTYneeH1mVomCZRHLy6IkAgudlOVEUqRITAM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=YQGFsZqfq9+7jHr66xaW873H9I35rDaBuluhYSYEXA9fIsaqJTg9hX9sx5DPIAoZuE j7cbmD43yVRQqlaplRtZRPKDdEStgdDkt3IJf1VVmV+jkZoeoL8EGF26F7/18vjJWEMj RZeIiop3dlO+nvy8SwjhRjoYr8PPO0bE8vvrA= MIME-Version: 1.0 Received: by 10.142.156.19 with SMTP id d19mr1127573wfe.6.1242363151325; Thu, 14 May 2009 21:52:31 -0700 (PDT) In-Reply-To: <20090514171558.298098000@bombadil.infradead.org> References: <20090514171233.942489000@bombadil.infradead.org> <20090514171558.298098000@bombadil.infradead.org> Date: Fri, 15 May 2009 10:22:31 +0530 Message-ID: <921ca19c0905142152u2a8012a9jba6f1d5b856df7ad@mail.gmail.com> X-ASG-Orig-Subj: Re: [PATCH 2/7] xfs: split inode flushing from xfs_sync_inodes_ag Subject: Re: [PATCH 2/7] xfs: split inode flushing from xfs_sync_inodes_ag From: Sujit Karataparambil To: Christoph Hellwig Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-pz0-f122.google.com[209.85.222.122] X-Barracuda-Start-Time: 1242363441 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25824 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > +STATIC int > +xfs_sync_inode_attr( > + =A0 =A0 =A0 struct xfs_inode =A0 =A0 =A0 =A0*ip, > + =A0 =A0 =A0 int =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 flags) > +{ > + =A0 =A0 =A0 int =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 error =3D 0; > + > + =A0 =A0 =A0 xfs_ilock(ip, XFS_ILOCK_SHARED); > + =A0 =A0 =A0 if (xfs_inode_clean(ip)) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto out_unlock; > + =A0 =A0 =A0 if (!xfs_iflock_nowait(ip)) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (!(flags & SYNC_WAIT)) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto out_unlock; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 xfs_iflock(ip); > + =A0 =A0 =A0 } > + > + =A0 =A0 =A0 if (xfs_inode_clean(ip)) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 xfs_ifunlock(ip); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto out_unlock; > + =A0 =A0 =A0 } > + > + =A0 =A0 =A0 error =3D xfs_iflush(ip, XFS_IFLUSH_SYNC); > + > + out_unlock: > + =A0 =A0 =A0 xfs_iunlock(ip, XFS_ILOCK_SHARED); > + =A0 =A0 =A0 return error; here also should there be an xfs_sync_inode_data(ip, flags); xfs_iflush(ip, XFS_IFLUSH_SYNC); in out_unlock. --=20 -- Sujit K M From SEMA-CR-1-4BI18C@ptcmarketing.com Fri May 15 03:35:09 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.7 required=5.0 tests=AWL,BAYES_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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4F8Z8xU020874 for ; Fri, 15 May 2009 03:35:09 -0500 X-ASG-Debug-ID: 1242376515-439900620000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from crmmaxx.ptc.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 77D7B11B166 for ; Fri, 15 May 2009 01:35:16 -0700 (PDT) Received: from crmmaxx.ptc.com (crmmaxx.ptc.com [12.11.148.125]) by cuda.sgi.com with ESMTP id bzhUgs5m5f9KFQwO for ; Fri, 15 May 2009 01:35:16 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation X-IronPort-AV: E=Sophos;i="4.41,198,1241409600"; d="scan'208,217";a="299609733" Received: from hqcrmint1.ptcnet.ptc.com ([132.253.202.83]) by crmmaxx.ptc.com with ESMTP; 15 May 2009 04:33:17 -0400 To: MIME-Version: 1.0 Reply-To: noreply@ptc.com From: "PTC Communications" X-ASG-Orig-Subj: Simulate human interaction with your CAD model! Subject: Simulate human interaction with your CAD model! Sender: "PTC Communications" Message-ID: Content-Type: multipart/alternative; boundary=BF_1242376312033_145769766 X-Barracuda-Connect: crmmaxx.ptc.com[12.11.148.125] X-Barracuda-Start-Time: 1242376516 Date: Fri, 15 May 2009 01:35:16 -0700 (PDT) X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --BF_1242376312033_145769766 Content-Type: text/plain; charset=UTF-8 Pro/ENGINEER Manikin Extension provides remarkable ease of use to help you deliver your products to market faster, with fewer costly prototypes. Now you can simulate and analyze human interactions with your product designs using PTC'S newly released digital human modeling software, Pro/ENGINEER Manikin Extension. VIEW MANIKIN WEBCAST NOW (http://www.ptc.com/read?&u=1-5LWLN-2077&c=1-3WNZ30&o=1-49Y0VF&w=2354034&t=http%3A%2F%2Fwww.ptc.com%2Fview%3Fim_dbkey%3D88876) With Pro/ENGINEER Manikin Extension, you can: - Quickly insert, customize, and manipulate accurate, standards-based 3D human models - Create human reach envelopes and vision cones to understand what limitations may exist in a design - Gain a first-person perspective of a product and "see" what the manikin can "see" - Accelerate design by leveraging libraries of global populations and manikin postures The Pro/ENGINEER Manikin Analysis Extension provides additional capabilities, including the ability to: - Simulate, communicate and optimize manual handling tasks by validating them against published standards and guidelines - Ensure conformance with health and safety guidelines and ergonomic standards - Analyze designs faster with simplified workflows - Leverage advanced reporting capabilities of analysis results earlier in the development process Want to learn more? View the Pro/ENGINEER Manikin webcast (http://www.ptc.com/read?&u=1-5LWLN-2077&c=1-3WNZ30&o=1-49Y0VF&w=2354034&t=http%3A%2F%2Fwww.ptc.com%2Fview%3Fim_dbkey%3D88876). =============================================================================== contact PTC http://www.ptc.com/company/contacts/index.htm privacy policy http://www.ptc.com/company/policies/index.htm unsubscribe http://www.ptc.com/appserver/mkt/mail/preferences.jsp?&offd=1-49Y0VF&campd=1-3WNZ30&conud=1-5LWLN-2077&mailkey=2354034&email=xfs@oss.sgi.com change email preferences http://www.ptc.com/appserver/mkt/mail/preferences.jsp?&offd=1-49Y0VF&campd=1-3WNZ30&conud=1-5LWLN-2077&mailkey=2354034&email=xfs@oss.sgi.com edit profile http://www.ptc.com/read?&w=2354034&t=/common/account/index.htm ------------------------------------------------------------------------------- This email was sent to: xfs@oss.sgi.com PTC, 140 Kendrick Street, Needham, MA 02494 USA If you wish to unsubscribe from all PTC Emails, please send a blank email to . --BF_1242376312033_145769766 Content-Type: text/html; charset=UTF-8 Email to SMB Pro/E active customers offering a recorded webcast on Pro/MANIKIN NA Q309
PTC.com

Pro/ENGINEER Manikin Extension provides remarkable ease of use to help you deliver your products to market faster, with fewer costly prototypes.

Now you can simulate and analyze human interactions with your product designs using PTC'S newly released digital human modeling software, Pro/ENGINEER Manikin Extension.

VIEW MANIKIN WEBCAST NOW

With Pro/ENGINEER Manikin Extension, you can:

  • Quickly insert, customize, and manipulate accurate, standards-based 3D human models

  • Create human reach envelopes and vision cones to understand what limitations may exist in a design

  • Gain a first-person perspective of a product and "see" what the manikin can "see"

  • Accelerate design by leveraging libraries of global populations and manikin postures

The Pro/ENGINEER Manikin Analysis Extension provides additional capabilities, including the ability to:

  • Simulate, communicate and optimize manual handling tasks by validating them against published standards and guidelines

  • Ensure conformance with health and safety guidelines and ergonomic standards

  • Analyze designs faster with simplified workflows

  • Leverage advanced reporting capabilities of analysis results earlier in the development process 

Want to learn more? View the Pro/ENGINEER Manikin webcast.


contact PTC | privacy policy | unsubscribe | change email preferences | edit profile
This email was sent to: xfs@oss.sgi.com     PTC, 140 Kendrick Street, Needham, MA 02494 USA
If you wish to unsubscribe from all PTC Emails, please send a blank email to unsubscribe@ptc.com.
--BF_1242376312033_145769766-- From vitaly.v.ch@gmail.com Fri May 15 03:35:50 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_34, J_CHICKENPOX_37 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4F8ZnQK020933 for ; Fri, 15 May 2009 03:35:50 -0500 X-ASG-Debug-ID: 1242376845-5ade00710000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f226.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 45B88F084DC for ; Fri, 15 May 2009 01:40:45 -0700 (PDT) Received: from mail-bw0-f226.google.com (mail-bw0-f226.google.com [209.85.218.226]) by cuda.sgi.com with ESMTP id E8KfZzsCyNtY67L3 for ; Fri, 15 May 2009 01:40:45 -0700 (PDT) Received: by bwz26 with SMTP id 26so1757627bwz.20 for ; Fri, 15 May 2009 01:35:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=CxyEeUvkTr67T/SjPX1wty8Wubg9rIQsS2Aon5pnm1I=; b=LK4oilG5XyUnll17EClSVnvpTWnxxt6bndq16/o1pRNpBRxXd9myPDhPMlG3DaeuoO 7/vWKq96lesrxVvRbbEA6pyPyT0a1NOdfJsIN7HFUQbC+f8mjsjQiedE1hBFolF+CfRK ChNEfW51daIH/w1krd4eZz/iD7YYN0WaKv+lA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=AGWDKv9W6+SUf5OFNF8g/7F0IU62hs/LlKKGRpCjl20QZ40/v8ry+5bpw0WCfPdvtd LuNvDus81eEoUS77iDdLHz2AgAvKMjcHj1sfJndXa9ebKuM204fekjU6vCszz8X3Wk31 avShB8YB0GTCpBb50Z1qJOw1cM+srZwcVqCxU= MIME-Version: 1.0 Received: by 10.204.59.76 with SMTP id k12mr3084429bkh.136.1242376554855; Fri, 15 May 2009 01:35:54 -0700 (PDT) In-Reply-To: <6efe08af0905140150g623d5564i5f5a06b5bf8543a5@mail.gmail.com> References: <6efe08af0905130010g5e21f4d1w9efb4ed200b5b152@mail.gmail.com> <4A0B0A71.5010609@sandeen.net> <6efe08af0905140150g623d5564i5f5a06b5bf8543a5@mail.gmail.com> Date: Fri, 15 May 2009 08:35:54 +0000 Message-ID: <6efe08af0905150135q317d3b7dy37907332c02510c2@mail.gmail.com> X-ASG-Orig-Subj: Re: xfs_repair after reboot refuse repair my filesystem Subject: Re: xfs_repair after reboot refuse repair my filesystem From: "Vitaly V. Ch" To: Eric Sandeen Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail-bw0-f226.google.com[209.85.218.226] X-Barracuda-Start-Time: 1242376847 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25837 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean HI, on my PC: Fri 15 May 00:02:37|root@cvv:xfs# xfs_repair -V xfs_repair version 3.0.1 Fri 15 May 00:03:26|root@cvv:xfs# xfs_mdrestore xfs.dump xfs.metaimg Fri 15 May 00:03:37|root@cvv:xfs# xfs_repair -v xfs.metaimg Phase 1 - find and verify superblock... - block cache size set to 133976 entries Phase 2 - using internal log - zero log... zero_log: head block 2 tail block 2 - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 entry "" in shortform directory 128 references invalid inode 0 zero length entry in shortform dir 128, junking 3 entries corrected entry count in directory 128, was 3, now 0 corrected directory 128 size, was 69, now 6 bogus .. inode number (0) in directory inode 128, clearing inode number xfs_repair: dir2.c:2115: process_dir2: Assertion `(ino != mp->m_sb.sb_rootino && ino != *parent) || (ino == mp->m_sb.sb_rootino && (ino == *p arent || need_root_dotdot == 1))' failed. Aborted Fri 15 May 00:04:30|root@cvv:xfs# \\wbr Vitaly From tytso@mit.edu Fri May 15 06:21:44 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_62 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4FBLhI9028902 for ; Fri, 15 May 2009 06:21:44 -0500 X-ASG-Debug-ID: 1242386510-43a902e10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from thunker.thunk.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CA97328AECA for ; Fri, 15 May 2009 04:21:50 -0700 (PDT) Received: from thunker.thunk.org (thunk.org [69.25.196.29]) by cuda.sgi.com with ESMTP id hWaYrun89TTtQu8h for ; Fri, 15 May 2009 04:21:50 -0700 (PDT) Received: from root (helo=closure.thunk.org) by thunker.thunk.org with local-esmtp (Exim 4.50 #1 (Debian)) id 1M4vU3-00037i-Dx; Fri, 15 May 2009 07:21:47 -0400 Received: from tytso by closure.thunk.org with local (Exim 4.69) (envelope-from ) id 1M4vU2-0002Lh-41; Fri, 15 May 2009 07:21:46 -0400 Date: Fri, 15 May 2009 07:21:46 -0400 From: Theodore Tso To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Questions about xfstests regarding porting it to test ext4 filesystems Subject: Re: Questions about xfstests regarding porting it to test ext4 filesystems Message-ID: <20090515112146.GE6816@mit.edu> References: <20090514225329.GN16929@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090514225329.GN16929@discord.disaster> User-Agent: Mutt/1.5.18 (2008-05-17) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@mit.edu X-SA-Exim-Scanned: No (on thunker.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: thunk.org[69.25.196.29] X-Barracuda-Start-Time: 1242386511 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25848 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, May 15, 2009 at 08:53:29AM +1000, Dave Chinner wrote: > > 2) Why is the TESTDIR have to be a persistent xfs volume? I noticed > > that when testing UDF and NFS, the scratch volume is used (and $testdir > > is set to the point at the scratch directory). Is there some > > fundamental reason why there must be an XFS volume mounted, even if the > > fundamental intention is to test some other filesystem type, whether > > it's UDF, NFS, or Ext4? > > It is persistent because it ages the filesystem. If you run xfsqa > repeatedly on the same machine (e.g. for months on end), the TESTDIR > gets aged and so we exercise aged filesystems as well as a new fs' > (scratch). There is no reason it really needs to be XFS - it could > be ext4, UDF, etc - as long as it is persistent. At the moment there is a test in common.rc that seems to force that TEST_DEV is a mounted xfs filesystem: candygram:/host/usr/projects/e2fsprogs/xfstests# ./check 001 common.rc: Error: $TEST_DEV (/dev/sdb) is not a MOUNTED xfs filesystem Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/sdb ext4 20642428 522392 19071460 3% /test Sounds like removing that test would be the right thing to do? > > 3) How much latitude/interest is there in modifying xfstests to be a bit > > more filesystem independent? > > Plenty, I think. While it has lots of XFS specific stuff, many of > the tests are generic and have no XFS dependence at all. And many > of the tests that rely on preallocation and block mapping could be > made generic quite easily now. ;) What would people think about taking xfs_io, stripping out the xfs-specific bits, and creating an fs_testio program that would live in the xfstests tree? Then the tests that don't need any of the XFS bits could simply use fs_testio and not need to build and install xfsprogs. Also, maybe we need to have an --disable-xfs option to configure? Right now for some reason a full make on blows up, probably because the xfsprogs/xfslibs-dev packages in Ubuntu 9.04 aren't new enough for whatever xfstests requires: make[2]: Entering directory `/usr/projects/e2fsprogs/xfstests/src' /usr/bin/libtool --tag=CC --mode=link gcc loggen.c -o loggen -g -O2 -g -O2 -DDEBUG -I../include -DVERSION=\"1.0.0\" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -funsigned-char -fno-strict-aliasing -Wall libtool: link: gcc loggen.c -o loggen -g -O2 -g -O2 -DDEBUG -I../include -DVERSION=\"1.0.0\" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -funsigned-char -fno-strict-aliasing -Wall loggen.c: In function 'loggen_unmount': loggen.c:143: warning: implicit declaration of function 'xlog_assign_lsn' /tmp/ccey5aXu.o: In function `loggen_empty': /usr/projects/e2fsprogs/xfstests/src/loggen.c:211: undefined reference to `xlog_assign_lsn' /usr/projects/e2fsprogs/xfstests/src/loggen.c:263: undefined reference to `xlog_assign_lsn' /tmp/ccey5aXu.o: In function `loggen_unmount': /usr/projects/e2fsprogs/xfstests/src/loggen.c:143: undefined reference to `xlog_assign_lsn' /usr/projects/e2fsprogs/xfstests/src/loggen.c:160: undefined reference to `xlog_assign_lsn' collect2: ld returned 1 exit status distcc[9013] ERROR: compile loggen.c on localhost failed - Ted From sandeen@sandeen.net Fri May 15 07:57:02 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_62 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4FCv2bZ033750 for ; Fri, 15 May 2009 07:57:02 -0500 X-ASG-Debug-ID: 1242392229-080f00e40000-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 20A3128B480 for ; Fri, 15 May 2009 05:57:09 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 32RGDduxsONRHmQM for ; Fri, 15 May 2009 05:57:09 -0700 (PDT) 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 E2385A9B0C4; Fri, 15 May 2009 07:57:06 -0500 (CDT) Message-ID: <4A0D66A2.4090608@sandeen.net> Date: Fri, 15 May 2009 07:57:06 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Theodore Tso CC: Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Questions about xfstests regarding porting it to test ext4 filesystems Subject: Re: Questions about xfstests regarding porting it to test ext4 filesystems References: <20090514225329.GN16929@discord.disaster> <20090515112146.GE6816@mit.edu> In-Reply-To: <20090515112146.GE6816@mit.edu> 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: 1242392230 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25854 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Theodore Tso wrote: > On Fri, May 15, 2009 at 08:53:29AM +1000, Dave Chinner wrote: >>> 2) Why is the TESTDIR have to be a persistent xfs volume? I noticed >>> that when testing UDF and NFS, the scratch volume is used (and $testdir >>> is set to the point at the scratch directory). Is there some >>> fundamental reason why there must be an XFS volume mounted, even if the >>> fundamental intention is to test some other filesystem type, whether >>> it's UDF, NFS, or Ext4? >> It is persistent because it ages the filesystem. If you run xfsqa >> repeatedly on the same machine (e.g. for months on end), the TESTDIR >> gets aged and so we exercise aged filesystems as well as a new fs' >> (scratch). There is no reason it really needs to be XFS - it could >> be ext4, UDF, etc - as long as it is persistent. > > At the moment there is a test in common.rc that seems to force that > TEST_DEV is a mounted xfs filesystem: > > candygram:/host/usr/projects/e2fsprogs/xfstests# ./check 001 > common.rc: Error: $TEST_DEV (/dev/sdb) is not a MOUNTED xfs filesystem > Filesystem Type 1K-blocks Used Available Use% Mounted on > /dev/sdb ext4 20642428 522392 19071460 3% /test > > Sounds like removing that test would be the right thing to do? Probably so. I would hope that tests that require xfs would then be skipped gracefully ... >>> 3) How much latitude/interest is there in modifying xfstests to be a bit >>> more filesystem independent? >> Plenty, I think. While it has lots of XFS specific stuff, many of >> the tests are generic and have no XFS dependence at all. And many >> of the tests that rely on preallocation and block mapping could be >> made generic quite easily now. ;) > > What would people think about taking xfs_io, stripping out the > xfs-specific bits, and creating an fs_testio program that would live > in the xfstests tree? Then the tests that don't need any of the XFS > bits could simply use fs_testio and not need to build and install > xfsprogs. xfs_io is fairly tangled in with xfsprogs right now I _think_ ... I dont' see much reason to strip xfs specific stuff out of it, I'd just make sure the generic functionality is done in a generic way, and keep adding more. IOW, don't remove "resvsp" which calls the xfs ioctl, but do add fallocate. Installing xfsprogs shouldn't be -too- onerous.... xfs users have been installing e2fsprogs for years to get libuuid for example. :) > Also, maybe we need to have an --disable-xfs option to configure? > Right now for some reason a full make on blows up, probably because > the xfsprogs/xfslibs-dev packages in Ubuntu 9.04 aren't new enough for > whatever xfstests requires: that was due to some header moves as I said on irc. --disable-xfs might be reasonable, to skip building & running the non-xfs tests. -Eric > make[2]: Entering directory `/usr/projects/e2fsprogs/xfstests/src' > /usr/bin/libtool --tag=CC --mode=link gcc loggen.c -o loggen -g -O2 -g -O2 -DDEBUG -I../include -DVERSION=\"1.0.0\" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -funsigned-char -fno-strict-aliasing -Wall > libtool: link: gcc loggen.c -o loggen -g -O2 -g -O2 -DDEBUG -I../include -DVERSION=\"1.0.0\" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -funsigned-char -fno-strict-aliasing -Wall > loggen.c: In function 'loggen_unmount': > loggen.c:143: warning: implicit declaration of function 'xlog_assign_lsn' > /tmp/ccey5aXu.o: In function `loggen_empty': > /usr/projects/e2fsprogs/xfstests/src/loggen.c:211: undefined reference to `xlog_assign_lsn' > /usr/projects/e2fsprogs/xfstests/src/loggen.c:263: undefined reference to `xlog_assign_lsn' > /tmp/ccey5aXu.o: In function `loggen_unmount': > /usr/projects/e2fsprogs/xfstests/src/loggen.c:143: undefined reference to `xlog_assign_lsn' > /usr/projects/e2fsprogs/xfstests/src/loggen.c:160: undefined reference to `xlog_assign_lsn' > collect2: ld returned 1 exit status > distcc[9013] ERROR: compile loggen.c on localhost failed > > - Ted > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Fri May 15 09:31:26 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_34, J_CHICKENPOX_37 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4FEVPxh039317 for ; Fri, 15 May 2009 09:31:26 -0500 X-ASG-Debug-ID: 1242397893-3ba9021e0000-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 C829819CAA3C for ; Fri, 15 May 2009 07:31:33 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id qbM0dlnWGRSfIFP0 for ; Fri, 15 May 2009 07:31:33 -0700 (PDT) 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 43DD59F2247; Fri, 15 May 2009 09:31:33 -0500 (CDT) Message-ID: <4A0D7CC4.2080401@sandeen.net> Date: Fri, 15 May 2009 09:31:32 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: "Vitaly V. Ch" CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair after reboot refuse repair my filesystem Subject: Re: xfs_repair after reboot refuse repair my filesystem References: <6efe08af0905130010g5e21f4d1w9efb4ed200b5b152@mail.gmail.com> <4A0B0A71.5010609@sandeen.net> <6efe08af0905140150g623d5564i5f5a06b5bf8543a5@mail.gmail.com> <6efe08af0905150135q317d3b7dy37907332c02510c2@mail.gmail.com> In-Reply-To: <6efe08af0905150135q317d3b7dy37907332c02510c2@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: 1242397893 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25860 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Vitaly V. Ch wrote: > HI, > > on my PC: > > Fri 15 May 00:02:37|root@cvv:xfs# xfs_repair -V > xfs_repair version 3.0.1 > Fri 15 May 00:03:26|root@cvv:xfs# xfs_mdrestore xfs.dump xfs.metaimg > Fri 15 May 00:03:37|root@cvv:xfs# xfs_repair -v xfs.metaimg > Phase 1 - find and verify superblock... > - block cache size set to 133976 entries > Phase 2 - using internal log > - zero log... > zero_log: head block 2 tail block 2 > - scan filesystem freespace and inode maps... > - found root inode chunk > Phase 3 - for each AG... > - scan and clear agi unlinked lists... > - process known inodes and perform inode discovery... > - agno = 0 > entry "" in shortform directory 128 references invalid inode 0 > zero length entry in shortform dir 128, junking 3 entries > corrected entry count in directory 128, was 3, now 0 > corrected directory 128 size, was 69, now 6 > bogus .. inode number (0) in directory inode 128, clearing inode number > xfs_repair: dir2.c:2115: process_dir2: Assertion `(ino != > mp->m_sb.sb_rootino && ino != *parent) || (ino == mp->m_sb.sb_rootino > && (ino == *p > arent || need_root_dotdot == 1))' failed. > Aborted odd, not sure offhand what to make of it since it works ok for me... perhaps you can narrow down which of the asserts tripped, for starters? And then maybe I can try it on x86 to see if it might possibly matter if the host checking it is 32 or 64 bits... -Eric From wferi@niif.hu Fri May 15 11:40:52 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4FGeoq0046330 for ; Fri, 15 May 2009 11:40:52 -0500 X-ASG-Debug-ID: 1242405949-4f1101b60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from tac.ki.iif.hu (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CC545FB5342 for ; Fri, 15 May 2009 09:45:49 -0700 (PDT) Received: from tac.ki.iif.hu (tac.ki.iif.hu [193.6.222.43]) by cuda.sgi.com with ESMTP id BFLuPafEkVFhEYuz for ; Fri, 15 May 2009 09:45:49 -0700 (PDT) Received: from wferi by tac.ki.iif.hu with local (Exim 4.69) (envelope-from ) id 1M50SU-0000Vg-0A; Fri, 15 May 2009 18:40:30 +0200 From: Ferenc Wagner To: Christoph Hellwig Cc: Ray Lee , Andrew Morton , xfs@oss.sgi.com, linux-kernel@vger.kernel.org, Anton Salikhmetov X-ASG-Orig-Subj: Re: mmap vs mtime in 2.6.26 and up Subject: Re: mmap vs mtime in 2.6.26 and up References: <874ovws94s.fsf@tac.ki.iif.hu> <87ljp2v6vt.fsf@tac.ki.iif.hu> <2c0942db0905120837g702b457bm52a412293925021a@mail.gmail.com> <20090512155301.GA23160@infradead.org> Date: Fri, 15 May 2009 18:40:29 +0200 In-Reply-To: <20090512155301.GA23160@infradead.org> (Christoph Hellwig's message of "Tue, 12 May 2009 11:53:01 -0400") Message-ID: <87ws8i720y.fsf@tac.ki.iif.hu> User-Agent: Gnus/5.110006 (No Gnus v0.6) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: tac.ki.iif.hu[193.6.222.43] X-Barracuda-Start-Time: 1242405949 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25868 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig writes: > On Tue, May 12, 2009 at 08:37:43AM -0700, Ray Lee wrote: >>> I've noticed that the last modification times of our RRD files got >>> stuck after upgrading from 2.6.24 to 2.6.26 (Debian Etch -> Lenny; I >>> also tested with 2.6.30-rc5, they are still stuck). ??It has some >>> literature, most notably kernel bug #2645, but that's closed long ago >>> and the resulting patch http://lkml.org/lkml/2008/1/22/370 is present >>> in my kernels. ??Still, the test program (version 3 from the bug report) >>> gives failures: > > The problem is pretty simple. do_wp_page and __do_fault use > file_update_time to update ctime and mtime. But this function is only > a helper for simply filesystems that have a binary inode dirty/non dirty > state and keep the m/ctime purely in the Linux inode. It must not be > called from generic code as more complex filesystems need a notification > through ->setattr to update the timestamps. This will also affect other > filesystems like ubifs. I'm not entirely sure why it ever worked > before, we must have picked up those c/mtime updates by accident > somehow. Thanks for the analysis. Unfortunately I don't nearly know enough to work on this issue, but would like to track it as it affects our backup system. So, shouldn't #2645 be reopened again? -- Feri. From BATV+9ab84a18d44824bad80f+2091+infradead.org+hch@bombadil.srs.infradead.org Fri May 15 11:50:55 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4FGon5S046784 for ; Fri, 15 May 2009 11:50:55 -0500 X-ASG-Debug-ID: 1242406257-1d0a02060000-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 C7BF219D04AB for ; Fri, 15 May 2009 09:50:57 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id XirB4ZG1EE25AQRw for ; Fri, 15 May 2009 09:50:57 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M50cY-0000CG-Kf; Fri, 15 May 2009 16:50:54 +0000 Date: Fri, 15 May 2009 12:50:54 -0400 From: Christoph Hellwig To: Ferenc Wagner Cc: Christoph Hellwig , Ray Lee , Andrew Morton , xfs@oss.sgi.com, linux-kernel@vger.kernel.org, Anton Salikhmetov X-ASG-Orig-Subj: Re: mmap vs mtime in 2.6.26 and up Subject: Re: mmap vs mtime in 2.6.26 and up Message-ID: <20090515165054.GA11439@infradead.org> References: <874ovws94s.fsf@tac.ki.iif.hu> <87ljp2v6vt.fsf@tac.ki.iif.hu> <2c0942db0905120837g702b457bm52a412293925021a@mail.gmail.com> <20090512155301.GA23160@infradead.org> <87ws8i720y.fsf@tac.ki.iif.hu> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87ws8i720y.fsf@tac.ki.iif.hu> 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: 1242406257 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, May 15, 2009 at 06:40:29PM +0200, Ferenc Wagner wrote: > Thanks for the analysis. Unfortunately I don't nearly know enough to > work on this issue, but would like to track it as it affects our > backup system. So, shouldn't #2645 be reopened again? Yes, definitively as the current "fix" is incorrected. I'll try to cook up a correct version once I get some time. From BATV+9ab84a18d44824bad80f+2091+infradead.org+hch@bombadil.srs.infradead.org Fri May 15 12:13:16 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4FHDGJi048061 for ; Fri, 15 May 2009 12:13:16 -0500 X-ASG-Debug-ID: 1242407604-7d7000860000-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 D880328C53B for ; Fri, 15 May 2009 10:13:24 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id MXkYceTDMm7E1Pk9 for ; Fri, 15 May 2009 10:13:24 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M50yK-00073O-94; Fri, 15 May 2009 17:13:24 +0000 Date: Fri, 15 May 2009 13:13:24 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: add fallocate command to xfs_io Subject: Re: [PATCH] xfsprogs: add fallocate command to xfs_io Message-ID: <20090515171324.GA14804@infradead.org> References: <4A077195.3070708@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A077195.3070708@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: 1242407604 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, May 10, 2009 at 07:30:13PM -0500, Eric Sandeen wrote: > Based on Dave's earlier patch, but now we have an fallocate > glibc call... this also adds autoconf magic and a manpage > update. > > (hopefully not too #ifdef-heavy....) Looks good to me and seems to work. > +#if defined(HAVE_FALLOCATE) > +#include > +#endif What about just using #ifdef HAVE_FALLOCATE everywhere? Reviewed-by: Christoph Hellwig From BATV+9ab84a18d44824bad80f+2091+infradead.org+hch@bombadil.srs.infradead.org Fri May 15 12:21:16 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4FHLFaY048391 for ; Fri, 15 May 2009 12:21:15 -0500 X-ASG-Debug-ID: 1242408375-4ef303090000-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 8DFE5FB547D for ; Fri, 15 May 2009 10:26:15 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 7Np2527BXDFqtKbZ for ; Fri, 15 May 2009 10:26:15 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M5163-0001bI-0N; Fri, 15 May 2009 17:21:23 +0000 Date: Fri, 15 May 2009 13:21:22 -0400 From: Christoph Hellwig To: Sujit Karataparambil Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/7] xfs: split inode data writeback from xfs_sync_inodes_ag Subject: Re: [PATCH 1/7] xfs: split inode data writeback from xfs_sync_inodes_ag Message-ID: <20090515172122.GB14804@infradead.org> References: <20090514171233.942489000@bombadil.infradead.org> <20090514171558.014747000@bombadil.infradead.org> <921ca19c0905142149m68c9717cg83db37c468769c4d@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <921ca19c0905142149m68c9717cg83db37c468769c4d@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: 1242408375 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, May 15, 2009 at 10:19:11AM +0530, Sujit Karataparambil wrote: > should not there be an. > > error = xfs_flush_pages(ip, 0, -1, (flags & SYNC_WAIT) ? > 0 : XFS_B_ASYNC, FI_NONE); > > for the out_wait. This will ensure flush while the xfs_ioend_wait is being > waited for. Would this be an better way to flush the data than waiting for > the inode to be flushed during power off or scheduler cycles. > Would this be an performance hit. For now I don't want to change behaviour here. It only matters for the SYNC_TRYLOCK case which is used for delalloc flushing on ENOSPC, so it's not too important. That beeing said I don't really like the current implementation where we have a SYNC_WAIT that waits for completion of data I/O and need a separate SYNC_IOWAIT that waits for the after data I/O metadata transaction completions. I think we would be better unifying the two, especially given the current callers: fs/xfs/linux-2.6/xfs_quotaops.c: return -xfs_sync_data(mp, 0); fs/xfs/linux-2.6/xfs_super.c: xfs_sync_data(mp, 0); fs/xfs/linux-2.6/xfs_sync.c: xfs_sync_data(mp, 0); fs/xfs/linux-2.6/xfs_sync.c: xfs_sync_data(mp, SYNC_WAIT|SYNC_IOWAIT); fs/xfs/linux-2.6/xfs_sync.c: xfs_sync_data(mp, SYNC_TRYLOCK); fs/xfs/linux-2.6/xfs_sync.c: xfs_sync_data(mp, SYNC_TRYLOCK | SYNC_IOWAIT); So in most cases we do a purely asynchronous writeout, we have one case that does a full synchronous writeout (SYNC_WAIT|SYNC_IOWAIT) and we have the two ENOSPC flushing cases doing SYNC_TRYLOCK + async writeout and SYNC_TRYLOCK + IOWAIT. I don't really see any reason to only do the IOWAIT here and will try to unify the two flags at some point. From BATV+9ab84a18d44824bad80f+2091+infradead.org+hch@bombadil.srs.infradead.org Fri May 15 12:22:39 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4FHMdNC048530 for ; Fri, 15 May 2009 12:22:39 -0500 X-ASG-Debug-ID: 1242408167-1d0802ca0000-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 5E04D19D0C03 for ; Fri, 15 May 2009 10:22:47 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id HxBRmjsoGxvt0Ten for ; Fri, 15 May 2009 10:22:47 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M517P-00038r-0V; Fri, 15 May 2009 17:22:47 +0000 Date: Fri, 15 May 2009 13:22:47 -0400 From: Christoph Hellwig To: Sujit Karataparambil Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/7] xfs: split inode flushing from xfs_sync_inodes_ag Subject: Re: [PATCH 2/7] xfs: split inode flushing from xfs_sync_inodes_ag Message-ID: <20090515172246.GC14804@infradead.org> References: <20090514171233.942489000@bombadil.infradead.org> <20090514171558.298098000@bombadil.infradead.org> <921ca19c0905142152u2a8012a9jba6f1d5b856df7ad@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <921ca19c0905142152u2a8012a9jba6f1d5b856df7ad@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: 1242408167 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, May 15, 2009 at 10:22:31AM +0530, Sujit Karataparambil wrote: > here also should there be an > xfs_sync_inode_data(ip, flags); > xfs_iflush(ip, XFS_IFLUSH_SYNC); > > in out_unlock. No. We only want to perform the iflush if all the preconditions are met in the !SYNC_WAIT case. And we certainly do not want to do a data writeout from the metadata flush case - for one thing it does require the iolock, but most importantly the point of this series is to separate the two actions. From BATV+9ab84a18d44824bad80f+2091+infradead.org+hch@bombadil.srs.infradead.org Fri May 15 12:27:03 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4FHR3Um048925 for ; Fri, 15 May 2009 12:27:03 -0500 X-ASG-Debug-ID: 1242408431-7d7001040000-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 ADA3128C5BC for ; Fri, 15 May 2009 10:27:11 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id lDxAO9haiQk6Yvyr for ; Fri, 15 May 2009 10:27:11 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M51Bf-0000kg-CV; Fri, 15 May 2009 17:27:11 +0000 Date: Fri, 15 May 2009 13:27:11 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: add fallocate command to xfs_io Subject: Re: [PATCH] xfsprogs: add fallocate command to xfs_io Message-ID: <20090515172711.GA23630@infradead.org> References: <4A077195.3070708@sandeen.net> <20090515171324.GA14804@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090515171324.GA14804@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: 1242408431 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, May 15, 2009 at 01:13:24PM -0400, Christoph Hellwig wrote: > On Sun, May 10, 2009 at 07:30:13PM -0500, Eric Sandeen wrote: > > Based on Dave's earlier patch, but now we have an fallocate > > glibc call... this also adds autoconf magic and a manpage > > update. > > > > (hopefully not too #ifdef-heavy....) > > Looks good to me and seems to work. Actually that was spoken too fast. On my Debian -testing system it detects fallocate as available because exists, but the glibc doesn't actually support a falloc(3) yet. So either the detection needs to be improved or we need to use the raw syscall. From sandeen@sandeen.net Fri May 15 13:50:32 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4FIoWAY053518 for ; Fri, 15 May 2009 13:50:32 -0500 X-ASG-Debug-ID: 1242413440-253e00ce0000-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 761DB19D15F3 for ; Fri, 15 May 2009 11:50:40 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 0H9MRb7sD7Wn9uxQ for ; Fri, 15 May 2009 11:50:40 -0700 (PDT) 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 C7758A9ABC2; Fri, 15 May 2009 13:50:39 -0500 (CDT) Message-ID: <4A0DB97F.4020201@sandeen.net> Date: Fri, 15 May 2009 13:50:39 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: add fallocate command to xfs_io Subject: Re: [PATCH] xfsprogs: add fallocate command to xfs_io References: <4A077195.3070708@sandeen.net> <20090515171324.GA14804@infradead.org> <20090515172711.GA23630@infradead.org> In-Reply-To: <20090515172711.GA23630@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: 1242413440 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25877 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Fri, May 15, 2009 at 01:13:24PM -0400, Christoph Hellwig wrote: >> On Sun, May 10, 2009 at 07:30:13PM -0500, Eric Sandeen wrote: >>> Based on Dave's earlier patch, but now we have an fallocate >>> glibc call... this also adds autoconf magic and a manpage >>> update. >>> >>> (hopefully not too #ifdef-heavy....) >> Looks good to me and seems to work. > > Actually that was spoken too fast. On my Debian -testing system it > detects fallocate as available because exists, but the > glibc doesn't actually support a falloc(3) yet. So either the detection > needs to be improved or we need to use the raw syscall. Ok, I think I know how to make the detection work better, I'll fix that up. -Eric From sandeen@sandeen.net Fri May 15 17:11:18 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4FMBHDk070845 for ; Fri, 15 May 2009 17:11:17 -0500 X-ASG-Debug-ID: 1242425485-126f02ca0000-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 02F9019CE873 for ; Fri, 15 May 2009 15:11:25 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id ijBksjPygR7uZXac for ; Fri, 15 May 2009 15:11:25 -0700 (PDT) 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 EF0EA9F2247; Fri, 15 May 2009 17:11:24 -0500 (CDT) Message-ID: <4A0DE88C.2040401@sandeen.net> Date: Fri, 15 May 2009 17:11:24 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: add fallocate command to xfs_io Subject: Re: [PATCH] xfsprogs: add fallocate command to xfs_io References: <4A077195.3070708@sandeen.net> <20090515171324.GA14804@infradead.org> <20090515172711.GA23630@infradead.org> <4A0DB97F.4020201@sandeen.net> In-Reply-To: <4A0DB97F.4020201@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: 1242425486 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25887 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Eric Sandeen wrote: > Christoph Hellwig wrote: >> On Fri, May 15, 2009 at 01:13:24PM -0400, Christoph Hellwig wrote: >>> On Sun, May 10, 2009 at 07:30:13PM -0500, Eric Sandeen wrote: >>>> Based on Dave's earlier patch, but now we have an fallocate >>>> glibc call... this also adds autoconf magic and a manpage >>>> update. >>>> >>>> (hopefully not too #ifdef-heavy....) >>> Looks good to me and seems to work. >> Actually that was spoken too fast. On my Debian -testing system it >> detects fallocate as available because exists, but the >> glibc doesn't actually support a falloc(3) yet. So either the detection >> needs to be improved or we need to use the raw syscall. > > Ok, I think I know how to make the detection work better, I'll fix that up. oh, hrm. It's already doing what I thought was sufficient but it won't link will it: (from m4/package_libcdev.m4) +# +# Check if we have a fallocate libc call (Linux) +# +AC_DEFUN([AC_HAVE_FALLOCATE], + [ AC_MSG_CHECKING([for fallocate]) + AC_TRY_COMPILE([ +#include + ], [ + fallocate(0, 0, 0, 0); + ], have_fallocate=yes + AC_MSG_RESULT(yes), + AC_MSG_RESULT(no)) + AC_SUBST(have_fallocate) + ]) Instead of above does this work better? (just change AC_TRY_COMPILE to AC_TRY_LINK) AC_DEFUN([AC_HAVE_FALLOCATE], [ AC_MSG_CHECKING([for fallocate]) AC_TRY_LINK([ #include ], [ fallocate(0, 0, 0, 0); ], have_fallocate=yes AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) AC_SUBST(have_fallocate) ]) From sandeen@sandeen.net Fri May 15 20:31:35 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4G1VZFZ081358 for ; Fri, 15 May 2009 20:31:35 -0500 X-ASG-Debug-ID: 1242437502-673602850000-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 B7C3B28D996 for ; Fri, 15 May 2009 18:31:42 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id DQlOCNfgTTy2GmGv for ; Fri, 15 May 2009 18:31:42 -0700 (PDT) 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 0C2ACA9B0A4 for ; Fri, 15 May 2009 20:31:41 -0500 (CDT) Message-ID: <4A0E177C.7070902@sandeen.net> Date: Fri, 15 May 2009 20:31:40 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] xfsprogs: fix readline/editline for xfs_io and xfs_quota Subject: [PATCH] xfsprogs: fix readline/editline for xfs_io and xfs_quota 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: 1242437503 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25900 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean It looks like libxcmd wasn't ever being built with -DENABLE_READLINE even when it was asked for by configure --enable-readline=yes so xfs_io & xfs_quota didn't get the functionality. This seems to fix it up for me (fixes editline too while we're at it). Signed-off-by: Eric Sandeen --- Index: xfsprogs-3.0.1/libxcmd/Makefile =================================================================== --- xfsprogs-3.0.1.orig/libxcmd/Makefile +++ xfsprogs-3.0.1/libxcmd/Makefile @@ -20,6 +20,14 @@ ifeq ($(HAVE_GETMNTINFO),yes) LCFLAGS += -DHAVE_GETMNTINFO endif +ifeq ($(ENABLE_READLINE),yes) +LCFLAGS += -DENABLE_READLINE +endif + +ifeq ($(ENABLE_EDITLINE),yes) +LCFLAGS += -DENABLE_EDITLINE +endif + default: $(LTLIBRARY) include $(BUILDRULES) Index: xfsprogs-3.0.1/growfs/Makefile =================================================================== --- xfsprogs-3.0.1.orig/growfs/Makefile +++ xfsprogs-3.0.1/growfs/Makefile @@ -10,6 +10,14 @@ LTCOMMAND = xfs_growfs CFILES = xfs_growfs.c LLDLIBS = $(LIBXFS) $(LIBXCMD) $(LIBUUID) $(LIBRT) $(LIBPTHREAD) +ifeq ($(ENABLE_READLINE),yes) +LLDLIBS += $(LIBREADLINE) $(LIBTERMCAP) +endif + +ifeq ($(ENABLE_EDITLINE),yes) +LLDLIBS += $(LIBEDITLINE) $(LIBTERMCAP) +endif + LTDEPENDENCIES = $(LIBXFS) $(LIBXCMD) LLDFLAGS = -static LSRCFILES = xfs_info.sh From christopher.walker@gmail.com Sat May 16 11:15:49 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4GGFn1G129570 for ; Sat, 16 May 2009 11:15:49 -0500 X-ASG-Debug-ID: 1242490852-6a32035a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ey-out-1920.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8DC631484A0C for ; Sat, 16 May 2009 09:20:53 -0700 (PDT) Received: from ey-out-1920.google.com (ey-out-1920.google.com [74.125.78.149]) by cuda.sgi.com with ESMTP id 7K0wJco2iDTkvX9B for ; Sat, 16 May 2009 09:20:53 -0700 (PDT) Received: by ey-out-1920.google.com with SMTP id 4so642398eyg.32 for ; Sat, 16 May 2009 09:15:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type:content-transfer-encoding; bh=afoE0T3wZ6we/rKguxlUBQ1o+yCzJ+tCAsU8ixg9wuw=; b=hleuFXKvHLWYIyh3KUZWXkzl8R10QLiBVTjLwprBb2eqg3NoCwB3csFo8AH1f5ZPTh hHCgfUvkpEENZJvf+hoWTJLIhk9JVr+/psTPsaDIi7CC32yB9T7MU9OOM53/4FcGvRA6 7vQqwoLsQaeQv7vowU0YW2jAcsiVaniuG8NrA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; b=rjAf4sFMkyrmHxy7psvcUa2JUdYSMyw9FEcNvLVBht2j2bTmNQV33eQYszIgW9wQd3 Q2nESVgqCtt/fh63DtPjFAkscX1Y4vfsDcYMPdMkc32Jx1xnXC1iJdtSqFQNJKNyCana 98YNGiMcxTWte3eb/MlbhAMIAx7J6LzvQaOYA= MIME-Version: 1.0 Received: by 10.216.47.213 with SMTP id t63mr1583886web.134.1242490555220; Sat, 16 May 2009 09:15:55 -0700 (PDT) Date: Sat, 16 May 2009 12:15:54 -0400 Message-ID: <554e24be0905160915l49ff901bn41e4332349c555bc@mail.gmail.com> X-ASG-Orig-Subj: quick question about filename length Subject: quick question about filename length From: Chris Walker To: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ey-out-1920.google.com[74.125.78.149] X-Barracuda-Start-Time: 1242490854 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2356 1.0000 -0.6455 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.65 X-Barracuda-Spam-Status: No, SCORE=-0.65 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25955 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello, I see that #define MAXNAMELEN 256 Is this the maximum length of the filename with full path? Or is this just the name of the file? Many thanks! Chris From sandeen@sandeen.net Sat May 16 12:04:34 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4GH4XC5131523 for ; Sat, 16 May 2009 12:04:33 -0500 X-ASG-Debug-ID: 1242493481-060d01b40000-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 5444C28EA69 for ; Sat, 16 May 2009 10:04:41 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 1QZuGQ02hCjA3Kyz for ; Sat, 16 May 2009 10:04:41 -0700 (PDT) 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 B2B47A9B0AF; Sat, 16 May 2009 12:04:40 -0500 (CDT) Message-ID: <4A0EF228.3010702@sandeen.net> Date: Sat, 16 May 2009 12:04:40 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Chris Walker CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: quick question about filename length Subject: Re: quick question about filename length References: <554e24be0905160915l49ff901bn41e4332349c555bc@mail.gmail.com> In-Reply-To: <554e24be0905160915l49ff901bn41e4332349c555bc@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: 1242493482 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25958 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Chris Walker wrote: > Hello, > > I see that > #define MAXNAMELEN 256 > > Is this the maximum length of the filename with full path? Or is this > just the name of the file? > > Many thanks! > Chris /* * MAXNAMELEN is the length (including the terminating null) of * the longest permissible file (component) name. */ #define MAXNAMELEN 256 "component" means path component. So just the name of the file or dir in the path. See also how it's used in xfs_vn_lookup() for example: if (dentry->d_name.len >= MAXNAMELEN) return ERR_PTR(-ENAMETOOLONG); a dentry is one component of the path, not the entire path. -Eric From christopher.walker@gmail.com Sat May 16 13:06:15 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4GI6FiH133961 for ; Sat, 16 May 2009 13:06:15 -0500 X-ASG-Debug-ID: 1242497479-55fe02aa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ey-out-1920.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 08745BF7942 for ; Sat, 16 May 2009 11:11:20 -0700 (PDT) Received: from ey-out-1920.google.com (ey-out-1920.google.com [74.125.78.147]) by cuda.sgi.com with ESMTP id OF5u6EUpoHsdaFtu for ; Sat, 16 May 2009 11:11:20 -0700 (PDT) Received: by ey-out-1920.google.com with SMTP id 4so650982eyg.32 for ; Sat, 16 May 2009 11:06:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=Ny0kcvEqeltiUh+Vig2IkNCgTqR2Obs53PJaFj8nU5g=; b=B7GZQ5tS1qR8iOUb5mf/Pu1+olloLWM0T+0KNoE2Z1Ws5INXtFK2TXhiVSXiMbLqH4 0h7jbnV90y/Vljtiv6sqhQIaWlc3KhBhchVvUIjcKhSFg/3JSaVVN3THT8z2rpAxA/ES vTjwxDKIU0e0Dsqd9QfN18+A9UHcqlMgOKkRo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=DZ3KkimUokzDrUMaFQgFI5SRVQENnUHFMji9zc0hP1PrVSHDQjqqxNb8Wn1DiEq4Ue /jajb5zMTzs85kAhy44xomIck97ikD6cQNyg8XzNGu/mciQc84tPFN3dLfaLtdZuln1h 1VFBR4U9p9HCcExEekJf4u1kZGbWfo00V1pyY= MIME-Version: 1.0 Received: by 10.216.11.67 with SMTP id 45mr1651065wew.53.1242497182067; Sat, 16 May 2009 11:06:22 -0700 (PDT) In-Reply-To: <4A0EF228.3010702@sandeen.net> References: <554e24be0905160915l49ff901bn41e4332349c555bc@mail.gmail.com> <4A0EF228.3010702@sandeen.net> Date: Sat, 16 May 2009 14:06:22 -0400 Message-ID: <554e24be0905161106x6a62b7bldc65325ac4102628@mail.gmail.com> X-ASG-Orig-Subj: Re: quick question about filename length Subject: Re: quick question about filename length From: Chris Walker To: Eric Sandeen Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: ey-out-1920.google.com[74.125.78.147] X-Barracuda-Start-Time: 1242497481 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0147 1.0000 -1.9252 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.93 X-Barracuda-Spam-Status: No, SCORE=-1.93 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25962 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Thanks for you quick reply, Eric. I have a user who is having filenames (path+filename) cut off at 255 characters midway through a simulation -- but the problem must be elsewhere Thanks again, Chris On Sat, May 16, 2009 at 1:04 PM, Eric Sandeen wrote: > Chris Walker wrote: >> Hello, >> >> I see that >> #define MAXNAMELEN =A0256 >> >> Is this the maximum length of the filename with full path? =A0Or is this >> just the name of the file? >> >> Many thanks! >> Chris > > /* > =A0* MAXNAMELEN is the length (including the terminating null) of > =A0* the longest permissible file (component) name. > =A0*/ > #define MAXNAMELEN =A0 =A0 =A0256 > > "component" means path component. =A0So just the name of the file or dir > in the path. > > See also how it's used in xfs_vn_lookup() for example: > > =A0 =A0 =A0 =A0if (dentry->d_name.len >=3D MAXNAMELEN) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return ERR_PTR(-ENAMETOOLONG); > > a dentry is one component of the path, not the entire path. > > -Eric > From sandeen@sandeen.net Sat May 16 13:17:04 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_34, J_CHICKENPOX_37 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4GIH3ZN134343 for ; Sat, 16 May 2009 13:17:04 -0500 X-ASG-Debug-ID: 1242498128-6c4d015a0000-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 C20D4FBF08A for ; Sat, 16 May 2009 11:22:08 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id PucUuy78wZAsiADG for ; Sat, 16 May 2009 11:22:08 -0700 (PDT) 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 C3476A9B0B3; Sat, 16 May 2009 13:17:10 -0500 (CDT) Message-ID: <4A0F0325.8000908@sandeen.net> Date: Sat, 16 May 2009 13:17:09 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: "Vitaly V. Ch" CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair after reboot refuse repair my filesystem Subject: Re: xfs_repair after reboot refuse repair my filesystem References: <6efe08af0905130010g5e21f4d1w9efb4ed200b5b152@mail.gmail.com> <4A0B0A71.5010609@sandeen.net> <6efe08af0905140150g623d5564i5f5a06b5bf8543a5@mail.gmail.com> <6efe08af0905150135q317d3b7dy37907332c02510c2@mail.gmail.com> In-Reply-To: <6efe08af0905150135q317d3b7dy37907332c02510c2@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: 1242498129 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25962 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Vitaly V. Ch wrote: > HI, > > on my PC: > > Fri 15 May 00:02:37|root@cvv:xfs# xfs_repair -V > xfs_repair version 3.0.1 > Fri 15 May 00:03:26|root@cvv:xfs# xfs_mdrestore xfs.dump xfs.metaimg > Fri 15 May 00:03:37|root@cvv:xfs# xfs_repair -v xfs.metaimg > Phase 1 - find and verify superblock... > - block cache size set to 133976 entries > Phase 2 - using internal log > - zero log... > zero_log: head block 2 tail block 2 > - scan filesystem freespace and inode maps... > - found root inode chunk > Phase 3 - for each AG... > - scan and clear agi unlinked lists... > - process known inodes and perform inode discovery... > - agno = 0 > entry "" in shortform directory 128 references invalid inode 0 > zero length entry in shortform dir 128, junking 3 entries > corrected entry count in directory 128, was 3, now 0 > corrected directory 128 size, was 69, now 6 > bogus .. inode number (0) in directory inode 128, clearing inode number > xfs_repair: dir2.c:2115: process_dir2: Assertion `(ino != > mp->m_sb.sb_rootino && ino != *parent) || (ino == mp->m_sb.sb_rootino > && (ino == *p > arent || need_root_dotdot == 1))' failed. > Aborted Is that the first repair of the image? When I repair it on my box it finds many more errors, and does not trip the assert. I tested 3.0.1 in fedora rawhide on x86 this time ... -Eric From BATV+1f32e88a537c894f6516+2092+infradead.org+hch@bombadil.srs.infradead.org Sat May 16 15:25:07 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4GKP4J0140285 for ; Sat, 16 May 2009 15:25:07 -0500 X-ASG-Debug-ID: 1242505513-4bcc038b0000-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 955F528EE32 for ; Sat, 16 May 2009 13:25:13 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id gcfAHgBgzJdyCh3j for ; Sat, 16 May 2009 13:25:13 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M5QRT-0004Vt-Qi; Sat, 16 May 2009 20:25:11 +0000 Date: Sat, 16 May 2009 16:25:11 -0400 From: Christoph Hellwig To: Chris Walker Cc: Eric Sandeen , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: quick question about filename length Subject: Re: quick question about filename length Message-ID: <20090516202511.GA28186@infradead.org> References: <554e24be0905160915l49ff901bn41e4332349c555bc@mail.gmail.com> <4A0EF228.3010702@sandeen.net> <554e24be0905161106x6a62b7bldc65325ac4102628@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <554e24be0905161106x6a62b7bldc65325ac4102628@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: 1242505513 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, May 16, 2009 at 02:06:22PM -0400, Chris Walker wrote: > Thanks for you quick reply, Eric. > > I have a user who is having filenames (path+filename) cut off at 255 > characters midway through a simulation -- but the problem must be > elsewhere XFS doesn't actually see the whole filename in normal operation (except for copying out the data out of symbolic links), as the resolution to individual components is done by the VFS. Long file name should work just fine on Linux and do in my test. Maybe some buffer is sized using incorrect in userspace? From BATV+1f32e88a537c894f6516+2092+infradead.org+hch@bombadil.srs.infradead.org Sat May 16 15:34:05 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4GKY5hV140741 for ; Sat, 16 May 2009 15:34:05 -0500 X-ASG-Debug-ID: 1242506054-6b8e017a0000-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 3DDA628ECA1 for ; Sat, 16 May 2009 13:34:14 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id XpE9bpFDodJGl2CP for ; Sat, 16 May 2009 13:34:14 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M5QaD-0006lo-UB; Sat, 16 May 2009 20:34:13 +0000 Date: Sat, 16 May 2009 16:34:13 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: fix readline/editline for xfs_io and xfs_quota Subject: Re: [PATCH] xfsprogs: fix readline/editline for xfs_io and xfs_quota Message-ID: <20090516203413.GB28186@infradead.org> References: <4A0E177C.7070902@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A0E177C.7070902@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: 1242506054 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, May 15, 2009 at 08:31:40PM -0500, Eric Sandeen wrote: > It looks like libxcmd wasn't ever being built with -DENABLE_READLINE > even when it was asked for by configure --enable-readline=yes > so xfs_io & xfs_quota didn't get the functionality. > > This seems to fix it up for me (fixes editline too while we're > at it). I've also been wondering for quite some while why xfs_io didn't have working readline support. This patch makes it work for me and looks good: Reviewed-by: Christoph Hellwig (btw, any reason we don't enable readline support by default if we find the headers installed?) From BATV+1f32e88a537c894f6516+2092+infradead.org+hch@bombadil.srs.infradead.org Sat May 16 15:40:17 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4GKeGXM140979 for ; Sat, 16 May 2009 15:40:17 -0500 X-ASG-Debug-ID: 1242506425-1db8007d0000-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 CC7C828ECBC for ; Sat, 16 May 2009 13:40:25 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id SEI8VY8mSOs23Crb for ; Sat, 16 May 2009 13:40:25 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M5QgD-0008Hd-F0; Sat, 16 May 2009 20:40:25 +0000 Date: Sat, 16 May 2009 16:40:25 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: add fallocate command to xfs_io Subject: Re: [PATCH] xfsprogs: add fallocate command to xfs_io Message-ID: <20090516204025.GC28186@infradead.org> References: <4A077195.3070708@sandeen.net> <20090515171324.GA14804@infradead.org> <20090515172711.GA23630@infradead.org> <4A0DB97F.4020201@sandeen.net> <4A0DE88C.2040401@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A0DE88C.2040401@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: 1242506425 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, May 15, 2009 at 05:11:24PM -0500, Eric Sandeen wrote: > Instead of above does this work better? > > (just change AC_TRY_COMPILE to AC_TRY_LINK) Yes, that correctly detects fallocate as not present for me and thus gives a working fallocate. > > AC_DEFUN([AC_HAVE_FALLOCATE], > [ AC_MSG_CHECKING([for fallocate]) > AC_TRY_LINK([ > #include > ], [ > fallocate(0, 0, 0, 0); Why do you nee to include here anyway? You don't use any of the constants, and the fallocate libc call must be in another headers, so it obviously compiles even without a defintion for it. From Martin@lichtvoll.de Sat May 16 16:41:11 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4GLfAwi143197 for ; Sat, 16 May 2009 16:41:11 -0500 X-ASG-Debug-ID: 1242510078-6b8d02a20000-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 4772128EE9F for ; Sat, 16 May 2009 14:41:18 -0700 (PDT) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id AMFyjc8D4Zh8Y7vr for ; Sat, 16 May 2009 14:41:18 -0700 (PDT) Received: from shambhala.lichtvoll.local (DSL01.83.171.156.249.ip-pool.NEFkom.net [83.171.156.249]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 980065AEB7; Sat, 16 May 2009 23:41:17 +0200 (CEST) From: Martin Steigerwald To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: quick question about filename length Subject: Re: quick question about filename length Date: Sat, 16 May 2009 23:42:19 +0200 User-Agent: KMail/1.9.9 Cc: Christoph Hellwig , Chris Walker , Eric Sandeen References: <554e24be0905160915l49ff901bn41e4332349c555bc@mail.gmail.com> <554e24be0905161106x6a62b7bldc65325ac4102628@mail.gmail.com> <20090516202511.GA28186@infradead.org> (sfid-20090516_231832_172988_5C4BCCA0) In-Reply-To: <20090516202511.GA28186@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200905162342.19915.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1242510079 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25973 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Am Samstag 16 Mai 2009 schrieb Christoph Hellwig: > On Sat, May 16, 2009 at 02:06:22PM -0400, Chris Walker wrote: > > Thanks for you quick reply, Eric. > > > > I have a user who is having filenames (path+filename) cut off at 255 > > characters midway through a simulation -- but the problem must be > > elsewhere > > XFS doesn't actually see the whole filename in normal operation (except > for copying out the data out of symbolic links), as the resolution to > individual components is done by the VFS. Long file name should work > just fine on Linux and do in my test. Maybe some buffer is sized using > incorrect in userspace? And while a link name itself also can't be longer than about 256 characters (I only tested 250 and 260), a link can point to a longer path ;-): martin@shambhala:~/Zeit> mkdir -p $(ruby -e 'puts "1234567890"*25')/$(ruby -e 'puts "1234567890"*25') martin@shambhala:~/Zeit> ln -s $(ruby -e 'puts "1234567890"*25')/$(ruby -e 'puts "1234567890"*25') testlink martin@shambhala:~/Zeit> ls -l testlink lrwxrwxrwx 1 martin martin 501 16. Mai 23:40 testlink -> 12345678901234567890123456789012345678901234567890123456789[...] martin@shambhala:~/Zeit> (df -hT . | grep -q xfs) && echo "Is XFS" Is XFS -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From sandeen@sandeen.net Sat May 16 17:01:45 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4GM1jLi143970 for ; Sat, 16 May 2009 17:01:45 -0500 X-ASG-Debug-ID: 1242511610-5ca903300000-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 31758FBF585 for ; Sat, 16 May 2009 15:06:51 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id m8Xxj6yDXawpnS8l for ; Sat, 16 May 2009 15:06:51 -0700 (PDT) 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 44E73A9B0CA; Sat, 16 May 2009 17:01:52 -0500 (CDT) Message-ID: <4A0F37CF.4030709@sandeen.net> Date: Sat, 16 May 2009 17:01:51 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: fix readline/editline for xfs_io and xfs_quota Subject: Re: [PATCH] xfsprogs: fix readline/editline for xfs_io and xfs_quota References: <4A0E177C.7070902@sandeen.net> <20090516203413.GB28186@infradead.org> In-Reply-To: <20090516203413.GB28186@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: 1242511612 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25976 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Fri, May 15, 2009 at 08:31:40PM -0500, Eric Sandeen wrote: >> It looks like libxcmd wasn't ever being built with -DENABLE_READLINE >> even when it was asked for by configure --enable-readline=yes >> so xfs_io & xfs_quota didn't get the functionality. >> >> This seems to fix it up for me (fixes editline too while we're >> at it). > > I've also been wondering for quite some while why xfs_io didn't have > working readline support. > > This patch makes it work for me and looks good: > > > Reviewed-by: Christoph Hellwig > > (btw, any reason we don't enable readline support by default if > we find the headers installed?) > I dunno... Nathan, any idea? Maybe some git-digging is in order. -Eric From sandeen@sandeen.net Sat May 16 17:08:37 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4GM8b5j144254 for ; Sat, 16 May 2009 17:08:37 -0500 X-ASG-Debug-ID: 1242511725-121c03810000-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 0DDA519D3E7D for ; Sat, 16 May 2009 15:08:45 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id sDKGHOedeG2GByK5 for ; Sat, 16 May 2009 15:08:45 -0700 (PDT) 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 D5D8D1B9B126; Sat, 16 May 2009 17:08:44 -0500 (CDT) Message-ID: <4A0F396B.8010504@sandeen.net> Date: Sat, 16 May 2009 17:08:43 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: add fallocate command to xfs_io Subject: Re: [PATCH] xfsprogs: add fallocate command to xfs_io References: <4A077195.3070708@sandeen.net> <20090515171324.GA14804@infradead.org> <20090515172711.GA23630@infradead.org> <4A0DB97F.4020201@sandeen.net> <4A0DE88C.2040401@sandeen.net> <20090516204025.GC28186@infradead.org> In-Reply-To: <20090516204025.GC28186@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: 1242511726 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25975 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Fri, May 15, 2009 at 05:11:24PM -0500, Eric Sandeen wrote: >> Instead of above does this work better? >> >> (just change AC_TRY_COMPILE to AC_TRY_LINK) > > Yes, that correctly detects fallocate as not present for me and > thus gives a working fallocate. > >> AC_DEFUN([AC_HAVE_FALLOCATE], >> [ AC_MSG_CHECKING([for fallocate]) >> AC_TRY_LINK([ >> #include >> ], [ >> fallocate(0, 0, 0, 0); > > Why do you nee to include here anyway? You don't use > any of the constants, and the fallocate libc call must be in another > headers, so it obviously compiles even without a defintion for it. Well, the actual patch includes it for FALLOC_FL_KEEP_SIZE so it'd be better to detect it at config time and if not there fail? Or we could #ifndef and have a local define ... -Eric From sandeen@sandeen.net Sat May 16 17:14:30 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4GMETRP144477 for ; Sat, 16 May 2009 17:14:30 -0500 X-ASG-Debug-ID: 1242512078-1db502290000-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 A83F528EFF6 for ; Sat, 16 May 2009 15:14:38 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 53Ql9XlyxH2uoLii for ; Sat, 16 May 2009 15:14:38 -0700 (PDT) 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 DAD859D43E1; Sat, 16 May 2009 17:14:37 -0500 (CDT) Message-ID: <4A0F3ACD.7020905@sandeen.net> Date: Sat, 16 May 2009 17:14:37 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: fix readline/editline for xfs_io and xfs_quota Subject: Re: [PATCH] xfsprogs: fix readline/editline for xfs_io and xfs_quota References: <4A0E177C.7070902@sandeen.net> <20090516203413.GB28186@infradead.org> <4A0F37CF.4030709@sandeen.net> In-Reply-To: <4A0F37CF.4030709@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: 1242512078 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25975 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Eric Sandeen wrote: > Christoph Hellwig wrote: ... >> (btw, any reason we don't enable readline support by default if >> we find the headers installed?) >> > > I dunno... Nathan, any idea? Maybe some git-digging is in order. > > -Eric > xfsprogs-2.4.2 (25 March 2003) - Added the xfs_io(8) command, an xfs_db(8) alike command for testing and debugging the XFS file IO path. - Added an optional dependency on the GNU readline library which is "off" by default and enabled with the configure option --enable-readline=yes; it affects the interactive tools only (xfs_db and now xfs_io). looks like it was done that way originally and never changed, commit e246ba5f93896ac873d25f65c05496e6e2c69e34 I think. Fine by me to make the default yes if it's there ... -Eric From nscott@aconex.com Sat May 16 19:21:53 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4H0Lq8M148547 for ; Sat, 16 May 2009 19:21:53 -0500 X-ASG-Debug-ID: 1242519719-0f4400530000-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 44D2319D41B6 for ; Sat, 16 May 2009 17:22:00 -0700 (PDT) Received: from postoffice2.aconex.com (mail.aconex.com [203.89.202.182]) by cuda.sgi.com with ESMTP id RSnoGMDOB5g4Ldsb for ; Sat, 16 May 2009 17:22:00 -0700 (PDT) Received: from postoffice.aconex.com (localhost [127.0.0.1]) by postoffice2.aconex.com (Spam Firewall) with ESMTP id 1745C6A93E7; Sun, 17 May 2009 10:21:58 +1000 (EST) Received: from postoffice.aconex.com (postoffice.yarra.acx [192.168.102.1]) by postoffice2.aconex.com with ESMTP id XZv08KYXXyYXfmyV; Sun, 17 May 2009 10:21:58 +1000 (EST) Received: from gatekeeper.aconex.com (gatekeeper.yarra.acx [192.168.102.10]) by postoffice.aconex.com (Postfix) with ESMTP id 80412A50265; Sun, 17 May 2009 10:21:53 +1000 (EST) Received: from localhost (localhost.localdomain [127.0.0.1]) by gatekeeper.aconex.com (Postfix) with ESMTP id EC54E4FD85; Sun, 17 May 2009 10:27:20 +1000 (EST) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: amavisd-new at gatekeeper.yarra.acx Received: from gatekeeper.aconex.com ([127.0.0.1]) by localhost (gatekeeper.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uL-x1JJraYKG; Sun, 17 May 2009 10:27:16 +1000 (EST) Received: from mail-au.aconex.com (mail-au.aconex.com [192.168.102.12]) by gatekeeper.aconex.com (Postfix) with ESMTP id 3FD464FD84; Sun, 17 May 2009 10:27:16 +1000 (EST) Date: Sun, 17 May 2009 10:21:53 +1000 (EST) From: Nathan Scott To: Eric Sandeen Cc: xfs-oss , Christoph Hellwig Message-ID: <1390308465.5011561242519713247.JavaMail.root@mail-au.aconex.com> In-Reply-To: <4A0F3ACD.7020905@sandeen.net> X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: fix readline/editline for xfs_io and xfs_quota Subject: Re: [PATCH] xfsprogs: fix readline/editline for xfs_io and xfs_quota MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [211.28.214.49] X-Mailer: Zimbra 5.0.13_GA_2791.RHEL5_64 (ZimbraWebClient - SAF3 (Mac)/5.0.13_GA_2791.RHEL5_64) X-Barracuda-Connect: mail.aconex.com[203.89.202.182] X-Barracuda-Start-Time: 1242519721 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.25984 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Status: Clean ----- "Eric Sandeen" wrote: > Eric Sandeen wrote: > > Christoph Hellwig wrote: > > ... > > >> (btw, any reason we don't enable readline support by default if > >> we find the headers installed?) > >> > > > > I dunno... Nathan, any idea? Maybe some git-digging is in order. > > No idea, sorry, too long ago... perhaps not wanting to introduce dependencies unexpectedly (rescue disks/installers, etc might not have readline lib). cheers. -- Nathan From SRS0+HiG6+72+fromorbit.com=david@internode.on.net Mon May 18 01:58:53 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4I6wrAb232679 for ; Mon, 18 May 2009 01:58:53 -0500 X-ASG-Debug-ID: 1242629940-485902510000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 81FE5291456 for ; Sun, 17 May 2009 23:59:01 -0700 (PDT) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id 9HLcSeToOfJis3yc for ; Sun, 17 May 2009 23:59:01 -0700 (PDT) Received: from discord (unverified [121.44.1.36]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 23972-1927428 for multiple; Mon, 18 May 2009 16:28:59 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1M5woI-0000Fz-Iv; Mon, 18 May 2009 16:58:54 +1000 Date: Mon, 18 May 2009 16:58:54 +1000 From: Dave Chinner To: Christoph Hellwig Cc: Sujit Karataparambil , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/7] xfs: split inode data writeback from xfs_sync_inodes_ag Subject: Re: [PATCH 1/7] xfs: split inode data writeback from xfs_sync_inodes_ag Message-ID: <20090518065854.GP16929@discord.disaster> References: <20090514171233.942489000@bombadil.infradead.org> <20090514171558.014747000@bombadil.infradead.org> <921ca19c0905142149m68c9717cg83db37c468769c4d@mail.gmail.com> <20090515172122.GB14804@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090515172122.GB14804@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1242629942 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26098 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, May 15, 2009 at 01:21:22PM -0400, Christoph Hellwig wrote: > That beeing said I don't really like the current implementation where we > have a SYNC_WAIT that waits for completion of data I/O and need a > separate SYNC_IOWAIT that waits for the after data I/O metadata > transaction completions. SYNC_IOWAIT is really only for waiting for direct IO to complete. e.g. for synchronisation with truncate. I'm not sure that it even matters for pure buffered data writeback. > fs/xfs/linux-2.6/xfs_quotaops.c: return -xfs_sync_data(mp, 0); > fs/xfs/linux-2.6/xfs_super.c: xfs_sync_data(mp, 0); > fs/xfs/linux-2.6/xfs_sync.c: xfs_sync_data(mp, 0); > fs/xfs/linux-2.6/xfs_sync.c: xfs_sync_data(mp, SYNC_WAIT|SYNC_IOWAIT); > fs/xfs/linux-2.6/xfs_sync.c: xfs_sync_data(mp, SYNC_TRYLOCK); > fs/xfs/linux-2.6/xfs_sync.c: xfs_sync_data(mp, SYNC_TRYLOCK | SYNC_IOWAIT); And only the data queisce cares about direct IO (i.e. for freeze) so I suspect that the SYNC_IOWAIT now could be removed and we use SYNC_WAIT to trigger the ioend completion wait.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+34a61b0b67ae55940b97+2094+infradead.org+hch@bombadil.srs.infradead.org Mon May 18 06:43:29 2009 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,FAKE_REPLY_C autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4IBhQV3242119 for ; Mon, 18 May 2009 06:43:28 -0500 X-ASG-Debug-ID: 1242647321-6efc02460000-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 9CD61FC4B1E for ; Mon, 18 May 2009 04:48:41 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id gD5sogxSj85RR5Xq for ; Mon, 18 May 2009 04:48:41 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M61FJ-0001wF-CL; Mon, 18 May 2009 11:43:05 +0000 Date: Mon, 18 May 2009 07:43:05 -0400 From: Christoph Hellwig To: Ferenc Wagner Cc: Ray Lee , Andrew Morton , Peter Staubach , Miklos Szeredi , xfs@oss.sgi.com, linux-kernel@vger.kernel.org X-ASG-Orig-Subj: Re: mmap vs mtime in 2.6.26 and up Subject: Re: mmap vs mtime in 2.6.26 and up Message-ID: <20090518114305.GA6303@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090515165054.GA11439@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: 1242647322 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, May 15, 2009 at 12:50:54PM -0400, Christoph Hellwig wrote: > On Fri, May 15, 2009 at 06:40:29PM +0200, Ferenc Wagner wrote: > > Thanks for the analysis. Unfortunately I don't nearly know enough to > > work on this issue, but would like to track it as it affects our > > backup system. So, shouldn't #2645 be reopened again? > > Yes, definitively as the current "fix" is incorrected. I'll try to cook > up a correct version once I get some time. Doing this correctly in the framework of the current codee is unfortunately not so easy, as calling ->setattr requires taking i_mutex which we can't in the pagefaul path. To fix this properly we need to actually update the timestamps during msync and co as done by the patches from Miklos: http://lkml.org/lkml/2007/2/28/166 and Peter: http://lkml.org/lkml/2006/5/31/176 ----- End forwarded message ----- From milind@gslab.com Mon May 18 08:03:27 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4ID3QU2245992 for ; Mon, 18 May 2009 08:03:26 -0500 X-ASG-Debug-ID: 1242652120-07eb03b40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from padma.gslab.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 45800FC4E34 for ; Mon, 18 May 2009 06:08:41 -0700 (PDT) Received: from padma.gslab.com (padma.gslab.com [59.163.66.102]) by cuda.sgi.com with SMTP id 9wbF3MLEofBhSp3T for ; Mon, 18 May 2009 06:08:41 -0700 (PDT) Received: from [172.20.25.198] (unknown [172.20.25.198]) (Authenticated sender: milind) by padma.gslab.com (Postfix) with ESMTP id 2F7BBF300A1; Mon, 18 May 2009 18:33:31 +0530 (IST) X-ASG-Orig-Subj: Re: EXT vs XFS at 80% filled filesystem Subject: Re: EXT vs XFS at 80% filled filesystem From: Milind To: Theodore Tso Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com In-Reply-To: <20090430183450.GB19276@mit.edu> References: <49F9565E.40804@gslab.com> <20090430183450.GB19276@mit.edu> Content-Type: text/plain Date: Mon, 18 May 2009 18:33:28 +0530 Message-Id: <1242651808.3339.28.camel@alhena> Mime-Version: 1.0 X-Mailer: Evolution 2.26.1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: padma.gslab.com[59.163.66.102] X-Barracuda-Start-Time: 1242652122 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26117 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Theodore, I am facing some weird problem of cross compiling libuuid sources. I downloaded e2fsprogs and cross-compiled them but when I do "make install-libs" it doesn't really install libuuid.so but installs libuuid.a. Can I have some pointers to build libuuid.so to have it in my toolchain libraries. I have crawled through web but couldn't get any nice solution to this. Thanks in Advance -Miline On Thu, 2009-04-30 at 14:34 -0400, Theodore Tso wrote: > On Thu, Apr 30, 2009 at 01:12:22PM +0530, Milind Dumbare wrote: > > Hi, > > > > I have heard of XFS's performance is not good as compared to EXT3 when > > the filesystem(disk) is 80% filled with data. Is it true? I have went > > through lots of performance documents of both XFS and EXT3 but could not > > find such performance benchmarking (for 80% full filesystems). > > I've not heard of any such performance metrics, and I suspect it would > very much depend on how the filesystem was "aged". A filesystem that > has been in use for a few years and is at 80% capacity will behave > very different from a brand-new filesystem which was freshly formatted > and then filled with a few large files until said filesystem was 80% > full. > > - Ted > From tytso@mit.edu Mon May 18 08:17:56 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4IDHuoF246653 for ; Mon, 18 May 2009 08:17:56 -0500 X-ASG-Debug-ID: 1242652683-67d502530000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from thunker.thunk.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BB774292513 for ; Mon, 18 May 2009 06:18:03 -0700 (PDT) Received: from thunker.thunk.org (thunk.org [69.25.196.29]) by cuda.sgi.com with ESMTP id CRT6hdvcJwmeMtzd for ; Mon, 18 May 2009 06:18:03 -0700 (PDT) Received: from root (helo=closure.thunk.org) by thunker.thunk.org with local-esmtp (Exim 4.50 #1 (Debian)) id 1M62jA-0003ZE-AN; Mon, 18 May 2009 09:18:00 -0400 Received: from tytso by closure.thunk.org with local (Exim 4.69) (envelope-from ) id 1M62j5-00074z-BN; Mon, 18 May 2009 09:17:55 -0400 Date: Mon, 18 May 2009 09:17:55 -0400 From: Theodore Tso To: Milind Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: EXT vs XFS at 80% filled filesystem Subject: Re: EXT vs XFS at 80% filled filesystem Message-ID: <20090518131755.GJ32019@mit.edu> References: <49F9565E.40804@gslab.com> <20090430183450.GB19276@mit.edu> <1242651808.3339.28.camel@alhena> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1242651808.3339.28.camel@alhena> User-Agent: Mutt/1.5.18 (2008-05-17) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@mit.edu X-SA-Exim-Scanned: No (on thunker.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: thunk.org[69.25.196.29] X-Barracuda-Start-Time: 1242652684 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26116 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, May 18, 2009 at 06:33:28PM +0530, Milind wrote: > Hi Theodore, > > I am facing some weird problem of cross compiling libuuid sources. I > downloaded e2fsprogs and cross-compiled them but when I do "make > install-libs" it doesn't really install libuuid.so but installs > libuuid.a. The "make install" taret is designed to install what is needed to run the e2fsprogs programs, including shared libraries; "make install-libs" is designed to install what as needed for development purpoes. So running "make install" in the lib/uuid" should do what you want. - Ted From sandeen@sandeen.net Mon May 18 17:34:33 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4IMYV4n014769 for ; Mon, 18 May 2009 17:34:32 -0500 X-ASG-Debug-ID: 1242686080-6bb5005b0000-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 63B3E2945A1 for ; Mon, 18 May 2009 15:34:40 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id VObxajddIMsLWaiI for ; Mon, 18 May 2009 15:34:40 -0700 (PDT) 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 n4IMYbkN011074; Mon, 18 May 2009 18:34:37 -0400 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 n4IMYbVx012865; Mon, 18 May 2009 18:34:37 -0400 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 n4IMYZ7S005977; Mon, 18 May 2009 18:34:36 -0400 Message-ID: <4A11E27B.3010708@sandeen.net> Date: Mon, 18 May 2009 17:34:35 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: "Vitaly V. Ch" CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair after reboot refuse repair my filesystem Subject: Re: xfs_repair after reboot refuse repair my filesystem References: <6efe08af0905130010g5e21f4d1w9efb4ed200b5b152@mail.gmail.com> <4A0B0A71.5010609@sandeen.net> <6efe08af0905140150g623d5564i5f5a06b5bf8543a5@mail.gmail.com> <6efe08af0905150135q317d3b7dy37907332c02510c2@mail.gmail.com> <4A0F0325.8000908@sandeen.net> In-Reply-To: <4A0F0325.8000908@sandeen.net> 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: 1242686081 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0005 1.0000 -2.0175 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26151 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Eric Sandeen wrote: > Is that the first repair of the image? When I repair it on my box it > finds many more errors, and does not trip the assert. I tested 3.0.1 in > fedora rawhide on x86 this time ... > > -Eric Oh, well, I'm dumb; the asserts do nothing unless you build with DEBUG on (as I guess you must have... they are off by default, as they are on my build) - I'll try to find some time to look into it. -Eric From info@titanengg.com.sg Mon May 18 19:03:42 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.0 required=5.0 tests=BAYES_50,HTML_MESSAGE, 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4J03e4G018053 for ; Mon, 18 May 2009 19:03:41 -0500 X-ASG-Debug-ID: 1242691425-10e402840000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from page.host-care.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A253F19D98C6 for ; Mon, 18 May 2009 17:03:45 -0700 (PDT) Received: from page.host-care.com (page.host-care.com [72.29.68.168]) by cuda.sgi.com with ESMTP id m7kXvmMSzWfEwEzG for ; Mon, 18 May 2009 17:03:45 -0700 (PDT) Received: from cm46.zeta165.maxonline.com.sg ([116.87.165.46] helo=Home) by page.host-care.com with esmtpa (Exim 4.69) (envelope-from ) id 1M6Ccf-0000CK-Fo; Mon, 18 May 2009 19:52:15 -0400 Message-ID: From: "Info - Titan Engineering" To: X-ASG-Orig-Subj: Titan Engineering Pte Ltd- Company Profile Subject: Titan Engineering Pte Ltd- Company Profile Date: Tue, 19 May 2009 07:50:08 +0800 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_027D_01C9D856.6E7C8090" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.5512 Disposition-Notification-To: "Info - Titan Engineering" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - page.host-care.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - titanengg.com.sg X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Connect: page.host-care.com[72.29.68.168] X-Barracuda-Start-Time: 1242691426 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2610 1.0000 -0.5229 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.52 X-Barracuda-Spam-Status: No, SCORE=-0.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_TG035a, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26156 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 BSF_SC0_TG035a Message contains invalid style definition X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format. ------=_NextPart_000_027D_01C9D856.6E7C8090 Content-Type: multipart/alternative; boundary="----=_NextPart_001_027E_01C9D856.6E7C8090" ------=_NextPart_001_027E_01C9D856.6E7C8090 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello, I am writing in the hope of establishing business relationships with = you. Titan Engineering Pte Ltd is a Singapore based Supplier of Precision = engineering components, Titanium mill materials and Titanium parts to = the various industries like aerospace, marine, medical component = manufacturers, chemical processing factories and manufacturers of = Electro Chemical Equipments like electro-chlorinators, anodes for = cathodic protection systems. =20 Our Range of Mill Products includes: =20 =20 Titanium- Commercially pure=20 Titanium Ti6AL4V=20 Titanium Bar / Rod Titanium Sheet, foil =20 Titanium Plate=20 Titanium seamless tubes=20 Titanium Wire Titanium Fasteners Our Precision engineering division specializes in manufacturing = precision engineering components, Platinized Titanium Anodes for = Electrochemical Industries, Titanium Fasteners and custom Titanium Gr.5 = equipments. We warmly welcome the opportunity of quoting on your needs, whether your = requirement is large or small. Best Regards! Ramesh Kumar Sales & Marketing Titan Engineering Pte Ltd Blk 20 Woodlands Link #08-36 Woodland East Industrial Estate Singapore 738733 Ph: (65)68537424 Fax: (65)68534970. http://www.titanengg.com.sg Email: info@titanengg.com.sg Note: If you do not wish to receive any promotional mails please, reply = with a "Remove" in subject line. ------=_NextPart_001_027E_01C9D856.6E7C8090 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hello,

I am writing in the hope of establishing business = relationships=20 with you.

Titan Engineering Pte Ltd is a Singapore based Supplier = of=20 Precision engineering components, Titanium mill materials and Titanium = parts to=20 the various industries like aerospace, marine, medical component=20 manufacturers, chemical processing factories and manufacturers of = Electro=20 Chemical Equipments like electro-chlorinators, anodes for cathodic=20 protection systems.

 

Our Range of = Mill Products includes:     =

 

Titanium- Commercially = pure=20

Titanium Ti6AL4V=20

Titanium Bar /=20 Rod

Titanium Sheet, foil       =20

Titanium Plate=20

Titanium seamless tubes=20

Titanium = Wire

Titanium=20 Fasteners


Our Precision=20 engineering division specializes in manufacturing precision engineering=20 components, Platinized Titanium Anodes for Electrochemical Industries, = Titanium=20 Fasteners and custom Titanium Gr.5 equipments.

We warmly welcome = the=20 opportunity of quoting on your needs, whether your requirement = is=20 large or small.

Best Regards!

Ramesh Kumar
Sales=20 & Marketing

Titan Engineering Pte Ltd
Blk 20 = Woodlands Link=20 #08-36
Woodland East Industrial Estate
Singapore 738733
Ph:=20 (65)68537424 Fax: (65)68534970.
http://www.titanengg.com.sg
<= /P>

Email: info@titanengg.com.sg=

 
 
 
Note: If you do = not wish to=20 receive any promotional mails please, reply with a "Remove" in subject = line.=20
------=_NextPart_001_027E_01C9D856.6E7C8090-- ------=_NextPart_000_027D_01C9D856.6E7C8090 Content-Type: application/pdf; name="Company Profile- Titan Engineering Pte Ltd.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Company Profile- Titan Engineering Pte Ltd.pdf" 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 qSwtL2w/wLtU+GnfwQ8x24Q1zt8hWkgoYmoYiFhR/k5fD+wzSAb3JIMgJvf1CO3Cjzy1aCyPyKzo sPkD68oPrRCO0Jh/XAgoUY3gZ2kNygLnQTMCN2ksj/j54P8+lWeRZW5kc3RyZWFtCmVuZG9iagoz NSAwIG9iago0Njk3CmVuZG9iago0IDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDU5 NSA4NDJdCi9Sb3RhdGUgMC9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAv SW1hZ2VDIC9UZXh0XQovRXh0R1N0YXRlIDIwIDAgUgovWE9iamVjdCAyMSAwIFIKL0ZvbnQgMjIg MCBSCj4+Ci9Db250ZW50cyA1IDAgUgo+PgplbmRvYmoKMjMgMCBvYmoKPDwvVHlwZS9QYWdlL01l ZGlhQm94IFswIDAgNTk1IDg0Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwv UHJvY1NldFsvUERGIC9JbWFnZUMgL1RleHRdCi9FeHRHU3RhdGUgMzAgMCBSCi9YT2JqZWN0IDMx IDAgUgovRm9udCAzMiAwIFIKPj4KL0NvbnRlbnRzIDI0IDAgUgo+PgplbmRvYmoKMzMgMCBvYmoK PDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNTk1IDg0Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAg UgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9JbWFnZUMgL1RleHRdCi9FeHRHU3RhdGUgNDIg MCBSCi9YT2JqZWN0IDQzIDAgUgovRm9udCA0NCAwIFIKPj4KL0NvbnRlbnRzIDM0IDAgUgo+Pgpl bmRvYmoKMyAwIG9iago8PCAvVHlwZSAvUGFnZXMgL0tpZHMgWwo0IDAgUgoyMyAwIFIKMzMgMCBS Cl0gL0NvdW50IDMKL1JvdGF0ZSAwPj4KZW5kb2JqCjEgMCBvYmoKPDwvVHlwZSAvQ2F0YWxvZyAv UGFnZXMgMyAwIFIKPj4KZW5kb2JqCjcgMCBvYmoKPDwvVHlwZS9FeHRHU3RhdGUKL09QTSAxPj5l bmRvYmoKMjAgMCBvYmoKPDwvUjcKNyAwIFI+PgplbmRvYmoKMjEgMCBvYmoKPDwvUjE5CjE5IDAg Ui9SMTgKMTggMCBSL1IxNwoxNyAwIFIvUjE2CjE2IDAgUi9SMTUKMTUgMCBSL1IxNAoxNCAwIFIv UjEzCjEzIDAgUi9SMTIKMTIgMCBSPj4KZW5kb2JqCjE5IDAgb2JqCjw8L1N1YnR5cGUvSW1hZ2UK L0NvbG9yU3BhY2UvRGV2aWNlUkdCCi9XaWR0aCAxNjAKL0hlaWdodCAxMDcKL0JpdHNQZXJDb21w b25lbnQgOAovRmlsdGVyL0RDVERlY29kZS9MZW5ndGggNDU4MT4+c3RyZWFtCv/Y/+4ADkFkb2Jl AGQAAAAAAf/bAEMAAgICAgICAgICAgMDAgMEBgQEAwMEBwUGBAYJCAkJCQgICAoLDgwKCg0KCAgM EAwNDg8PEA8JDBESEQ8SDg8PD//bAEMBAwMDBAMEBwQEBw8KCAoPDw8PDw8PDw8PDw8PDw8PDw8P Dw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PD//AABEIAGsAoAMBEQACEQEDEQH/xAAfAAAB BQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiEx QQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6 wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAA AAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgU QpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn aGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS 09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP38oAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCha6hY34lNldw3HlvscwuH2NSugL9MAoAK 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 GFABQAUAFABQAUAFABQAUAFABQAUAFAHlOu+BvDGratFd32nyPcyz5eRLqaMsdsY52uOyL+Vc8oq 57NHE1I09Hsuy8zkvEXgzw9Hfab5dpOnnXqJJsvJ13L5K8HD/wCwv5UpRSO+hi6so3b6dl3fkbFt 8PPCcd7fItjclTEAQ2oXTfzkojFNsy/tHEximpdey/yM3QvA3he+0bRr280+SW8t7omKd7qYumJ5 cYbfnuaLK1wrZhiOeUebT0Xl5HZ+G/DWi6Z4nvb6ztXW7a18syyTySHbvXj5mP8AcX8q0jueXipN xT7npVaI4D//2QplbmRzdHJlYW0KZW5kb2JqCjE4IDAgb2JqCjw8L1N1YnR5cGUvSW1hZ2UKL0Nv bG9yU3BhY2UvRGV2aWNlUkdCCi9XaWR0aCAxNjAKL0hlaWdodCAxMjQKL0JpdHNQZXJDb21wb25l bnQgOAovRmlsdGVyL0RDVERlY29kZS9MZW5ndGggODIwMj4+c3RyZWFtCv/Y/+4ADkFkb2JlAGQA AAAAAf/bAEMAAgICAgICAgICAgMDAgMEBgQEAwMEBwUGBAYJCAkJCQgICAoLDgwKCg0KCAgMEAwN Dg8PEA8JDBESEQ8SDg8PD//bAEMBAwMDBAMEBwQEBw8KCAoPDw8PDw8PDw8PDw8PDw8PDw8PDw8P Dw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PD//AABEIAHwAoAMBEQACEQEDEQH/xAAfAAABBQEB AQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYT UWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZX WFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE xcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAA AQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGh scEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlq 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 qnwU8E6lGQ+mxB8YyUFRKKGmzwXxf+yV4fv1eXS40ViD8m0YNF0tginbU+ZvEf7JtzbyFRp2evKJ 1pPmWqCLTdmQ+F/2fNVsNe0qJNNn8mFwTlOMCt6c3YznFNnU/HH4D+KfFWlpbWdoT5ZBw6VSqO5T gkj89te/Zr1nTp5Ev9Gkikz1QGPP4iq+sT7mbowXQ5AfBO+sXV2gumQE8O5Ipxxc3oJ4anvY9l+F Ph+80bxV4fRdOaFFnXJ2YPWs5YictGVCjTjrY/e3wExbw9Z5P8IqW1a7NL32O1pDCgAoAKACgAoA KACgAoAKACgAoAKAIpIYpRiSNWHuKAIo7K0ibfHbxq3qBQBLJBDMMSxKw9xQBy2q+BvDWsKy3umR MT32igDyrVv2fPCt67PBAiA/w0AZ+k/s5+GNP1CC+eHc0bbxz3oA+hrCwg062S2t1xGtAF2gAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD//2QplbmRzdHJlYW0KZW5kb2JqCjE3 IDAgb2JqCjw8L1N1YnR5cGUvSW1hZ2UKL0NvbG9yU3BhY2UvRGV2aWNlUkdCCi9XaWR0aCAxNjAK L0hlaWdodCAxMTEKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyL0RDVERlY29kZS9MZW5ndGgg ODQ2Mz4+c3RyZWFtCv/Y/+4ADkFkb2JlAGQAAAAAAf/bAEMAAgICAgICAgICAgMDAgMEBgQEAwME BwUGBAYJCAkJCQgICAoLDgwKCg0KCAgMEAwNDg8PEA8JDBESEQ8SDg8PD//bAEMBAwMDBAMEBwQE Bw8KCAoPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PD//A ABEIAG8AoAMBEQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAAC AQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZ GiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOU lZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 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 dGggNzY5Nj4+c3RyZWFtCv/Y/+4ADkFkb2JlAGQAAAAAAf/bAEMAAgICAgICAgICAgMDAgMEBgQE AwMEBwUGBAYJCAkJCQgICAoLDgwKCg0KCAgMEAwNDg8PEA8JDBESEQ8SDg8PD//bAEMBAwMDBAME BwQEBw8KCAoPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8P D//AABEIAKAAoAMBEQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1 EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoW FxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImK kpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy 8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUE BAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkq NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqi o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAM AwEAAhEDEQA/AP38oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAEwKnmQC07gZ17qFnptvJeahcxW9nGu555n CIn51ViL3PlHxt+3Z+yn4DmnttX+MWkXd8g/1Ghxz6r8/wDc32yOmf8AgdAWueO3P/BTf4EBEfSf DnjO+jkTfHP9iggjf/vuff8A+OUvZl8x5T4j/wCCtPgXR7uS0s/hFr1yyd5dRgg/9kej2Ycx3M3/ AAUz8D6fpialrPwv8Qw2+ze/2S5gnx/33sq/Zke1ub3gz/gpx+zx4sMdve2fi7Q5XbYJNS02ORP/ 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 sLmuM3H0/WqshXqdg3H0/WjlQXqdg3t3ApcqEvadgyD1H607F+/1Q8H2qdCbtjjjvRcdxaBhQAUA FABQAUAFABQAUAFABQAHoaAGdqG7BLU4DxN4m1DRpTDY6Be3x2riSFJPLTIkPOxHPHk9kb76f365 ZSdzpw9CM93Y5LQPipq+sad9t1H4eeIdFzLDD9nvbSRpvn34fZGj/J8v/AP49lNVTvlltBbVvw9P PzEt/ih4guU8RqPhrryajpHzfZZF2fbl+f8A1D/6t+n9/wD9k3r2pTyzD3T9vp6Gbpfxf8Uail+3 /Cm/Flp9ki8/ZerAjT/Ps2R/vPmf+P6I/wDsb37VjeV4df8AL9fca6/EDxdPBbT2Hw9v5gbhILlZ pxbvbo0Dyb/nHz7X8lDs3/67++joEqplLLaClb239f1+RnyfFPxCkGmOvw71h2u5ZoPLWKbh1uII 9w/d/JGUknk3z+T/AKnHRw9bq9h/UYJ/Ev6R6V4W1XUNa0S11bUbD7FczGQi0ZpOI95EbEOiOhdA j7HQOm8oelJs83E0/Zux/9kKZW5kc3RyZWFtCmVuZG9iagoxNSAwIG9iago8PC9TdWJ0eXBlL0lt YWdlCi9Db2xvclNwYWNlL0RldmljZVJHQgovV2lkdGggMTYwCi9IZWlnaHQgMTI5Ci9CaXRzUGVy Q29tcG9uZW50IDgKL0ZpbHRlci9EQ1REZWNvZGUvTGVuZ3RoIDgwMTM+PnN0cmVhbQr/2P/uAA5B ZG9iZQBkAAAAAAH/2wBDAAICAgICAgICAgIDAwIDBAYEBAMDBAcFBgQGCQgJCQkICAgKCw4MCgoN CggIDBAMDQ4PDxAPCQwREhEPEg4PDw//2wBDAQMDAwQDBAcEBAcPCggKDw8PDw8PDw8PDw8PDw8P Dw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw//wAARCACBAKADAREAAhEBAxEB/8QA HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQR BRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdI SUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2 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 658Rokn/AAjOs6tLPqTn5PkN3A+xN+/+5XkYnM8XjNVI6cDkODwUuWUbnf8AhL/X63/wD/0CvIPo mX/FH/IBk/6+f/ZKTEcna/8AHgazRTOk0H/lh/v1sjNnQTf8fn/bb/2SiYHy/wDED/kcrj/c/wDZ 68+pub09j5f+N/8AqvCn/Xaf/wBASu3BmFY8suf9TH/uJXoVNjkjuX5vueH/APr5jrCfwHTS3Pox P+QNYf8AA/8A0Ovnp/xGexROP8Sf8vn/AG0rSluVV2PEPEP+tk/4BXWcZ8W/tV/8gGz/AN+vWwZx V/4jPsn9iH/khNt/12evv8k2Pxrib/ffmfoxZ/8AHvp/+5HXBjN2fV5d/u6MjXv+Ql4f/wCwxa14 kz7nAf7uW/DH/JUNC/4HXDI7l8Rk/tQf8i1Z/wDY0j/0SlcNU7n8PyRXl/5OL8e/9itbf+gWtc9T cn7B9peCf+RS0P8A64v/AOh10UDx63xM/9kKZW5kc3RyZWFtCmVuZG9iagoxNCAwIG9iago8PC9T dWJ0eXBlL0ltYWdlCi9Db2xvclNwYWNlL0RldmljZVJHQgovV2lkdGggMTYwCi9IZWlnaHQgMTYw Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0ZpbHRlci9EQ1REZWNvZGUvTGVuZ3RoIDExMDc0Pj5zdHJl YW0K/9j/7gAOQWRvYmUAZAAAAAAB/9sAQwACAgICAgICAgICAwMCAwQGBAQDAwQHBQYEBgkICQkJ CAgICgsODAoKDQoICAwQDA0ODw8QDwkMERIRDxIODw8P/9sAQwEDAwMEAwQHBAQHDwoICg8PDw8P Dw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8P/8AAEQgAoACgAwER AAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2 Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Sl pqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8B 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 uVdyLM9o8N+DINNijjSBE/4BRcLHplvpuxK0A2EhoAsJDVFXDZ70AFAEdAHUVkakmz3oAKAD+CgC OgsKAK7/AH6ADZ70ASbPkqDH2siu9tG6UBzTZX+w0F8lvtEn2ON0+dKB8l/tFOawR/4K1uhNy7ld LbZ/yzoujJuX8xY+zJsouHNL+Yk8mi4c0u4bNlF7md6JXftRa4/bUIkb9q2DmI6A5jqK5zoDf8kd ABQAUAFBYb99ABtSgCOgA/gqBRqwuT3ml+PriGW68NG2e3NihtYp1g2G686Z5N+9N/3EgT7/APy0 f+5TOiE6d/eHaTD8WpL+xTUfD2gQ6QkzpLPcKjXMkSSJh/kfZvkTz3/2Hp+pvWhlvK2pa/Pf+vwM X7P8adOtr++ez0y8i+13sn2W602CSZIPn8hIPJm+fZ9z5/nfzE+5sfeDowyxvWT/AK/r+tCVV+N0 +mxapa+GvDj3rpJMLG7tzG/z2wdE37/kfzw6P/vp/dOZuayeU7czHaKnxwuHuLfxH4Y8IWluYo1j uLA73887Nz7H/ub5H/4BRcyk8pX2mTaQ/wAXj4i0iw13wjoK2MtsJry4s4CY4/3L74d7yY3+f5Gz 7/7vf9ymn3RMv7LUdJO5Qt9C+OGj32hRSSaL4itZ5LI3091awWiwRt/x8mPZ87unl70/67vn7iUb BzZXJPW29v0NnUYPivE7vpnhqxcw3F5vEyWv+kQ+en2by/nT/lh5n39nz0RdyYPBW1/X+vxPV/D2 hyW+jaRBr0dldazFbol3dJbIiTzbRvfZ7vmuuMVbQ8rFVMPGbsdL/Y2j/wDQJs/+/CUjFMztW0nS 00nVHTTrZJEtpPn8lP7lA7n/2QplbmRzdHJlYW0KZW5kb2JqCjEzIDAgb2JqCjw8L1N1YnR5cGUv SW1hZ2UKL0NvbG9yU3BhY2UvRGV2aWNlUkdCCi9XaWR0aCAxNjAKL0hlaWdodCAxMjAKL0JpdHNQ ZXJDb21wb25lbnQgOAovRmlsdGVyL0RDVERlY29kZS9MZW5ndGggNzU2Mj4+c3RyZWFtCv/Y/+4A DkFkb2JlAGQAAAAAAf/bAEMAAgICAgICAgICAgMDAgMEBgQEAwMEBwUGBAYJCAkJCQgICAoLDgwK Cg0KCAgMEAwNDg8PEA8JDBESEQ8SDg8PD//bAEMBAwMDBAMEBwQEBw8KCAoPDw8PDw8PDw8PDw8P Dw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PD//AABEIAHgAoAMBEQACEQEDEQH/ xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMA BBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVG R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0 tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEB AQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2Fx EyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZ WmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TF xsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP1E0HRLWG8ku9n7 zZ8/mV+LQ0gfcbFPxbfwaJoOsalH8kcds7vHJ9ynhI81QHLQ/If43W0Fz8BfEifufMnfz38v+/8A O9fbYVt2PBrQ5T47+HusakmiW8/2R0t3T/WSf8tK9ZUbmMa6joSXNhBf6lHfXW//ALZ1vBWOKUrs 0E03Q7N45/7Ntpv78cjyV2RlZGElcz7nStGv/Mk8h4bf+DyHkq7kcpw+seDPtkUn9lXT+Z/zznou HKeZ2H9seG9Zk8xJrDVIH86GT/VvG/8Afjq27gfaHgD9rS+8q3sfiNBeX+z/AJi1pN8//bSP/wCI rFoD6o8PfEXwd4w+z/2V4nsHk/54T3MkD/8Aj9dKJPTIdNurz93sSaP/AKZ3P/tSgDQ+zQaVbyPd T21t/H5k83l+X/4/UcoHkfjz9of4e+BrW48vVbbWNYRPksNN8ufzH/6aP9xKOUD8q/iF481j4l+M tU8Va5s+0T/uIYIPuQIn3EjoaKTMfR/E+uaDeeZpV88O/wC/H/BJWLjc2jK2p7Anxad4v+JzpVs8 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 zJYibUXnRN+z+zZ/3f8A45V+3QPKJ9CST4qeGYo0vUg1OazDvDLcQafOVgdNn+s44+/R7dbkvKp7 dfUZq83w8+Ilw/gvxF4Zg1qB1k3wanp/nQ/Idj/M4x7Vop85g8HKlBt7H5yftH/8EuvBnjW3vtf+ Buqx+Fdf2u39hX2+ewuv9x/vw/8Aj6c9K0SsefFWmf/ZCmVuZHN0cmVhbQplbmRvYmoKMTIgMCBv YmoKPDwvU3VidHlwZS9JbWFnZQovQ29sb3JTcGFjZS9EZXZpY2VSR0IKL1dpZHRoIDE2MAovSGVp Z2h0IDExNwovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIvRENURGVjb2RlL0xlbmd0aCA3OTM2 Pj5zdHJlYW0K/9j/7gAOQWRvYmUAZAAAAAAB/9sAQwACAgICAgICAgICAwMCAwQGBAQDAwQHBQYE BgkICQkJCAgICgsODAoKDQoICAwQDA0ODw8QDwkMERIRDxIODw8P/9sAQwEDAwMEAwQHBAQHDwoI Cg8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8P/8AAEQgA dQCgAwERAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMC BAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYn KCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeY mZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5 +v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwAB AgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpD REVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMR 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 5Onebc6jcndNf3Z3yyfU1k5Nmtj/2QplbmRzdHJlYW0KZW5kb2JqCjIyIDAgb2JqCjw8L1IxMQox MSAwIFIvUjkKOSAwIFI+PgplbmRvYmoKMzAgMCBvYmoKPDwvUjcKNyAwIFI+PgplbmRvYmoKMzEg MCBvYmoKPDwvUjI5CjI5IDAgUi9SMjgKMjggMCBSL1IyNwoyNyAwIFIvUjI2CjI2IDAgUj4+CmVu ZG9iagoyOSAwIG9iago8PC9TdWJ0eXBlL0ltYWdlCi9Db2xvclNwYWNlL0RldmljZVJHQgovV2lk dGggMTYwCi9IZWlnaHQgNzQKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyL0RDVERlY29kZS9M ZW5ndGggNTM5ND4+c3RyZWFtCv/Y/+4ADkFkb2JlAGQAAAAAAf/bAEMAAgICAgICAgICAgMDAgME BgQEAwMEBwUGBAYJCAkJCQgICAoLDgwKCg0KCAgMEAwNDg8PEA8JDBESEQ8SDg8PD//bAEMBAwMD BAMEBwQEBw8KCAoPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8P Dw8PD//AABEIAEoAoAMBEQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/ xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKC CQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaH iImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp 6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAME BwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYn KCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeY mZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/ 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 wXxHw/pU8/lwfvn5j5+Y88V0Utj3Z/GbNxzPtPIx0/Gs6m520fiJpVAguMAD5e1ccj0InBXDMZWy x+8e9CKkVAzc/Meh71LKiTlmMnLE8dz9KzZoNu44wZCEUEnqB7U2UQx/e2/w8cdu9SA+2JyOegP/ AKEakDQgZllj2sR8y9Dj+MVAGta3Fxui/fydT/EfagTOht5JGluCzsTufqc1nMRplm84fMeXXv7r SiSzo4Pl2beMhenHrW6OeZt6bc3JsljNxIY2dcqXOD9RXSjjqG/YM32+Q7jnax6+9dEThqn/2Qpl bmRzdHJlYW0KZW5kb2JqCjI4IDAgb2JqCjw8L1N1YnR5cGUvSW1hZ2UKL0NvbG9yU3BhY2UvRGV2 aWNlUkdCCi9XaWR0aCAxNjAKL0hlaWdodCAxMDgKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVy L0RDVERlY29kZS9MZW5ndGggNjMxMz4+c3RyZWFtCv/Y/+4ADkFkb2JlAGQAAAAAAf/bAEMAAgIC AgICAgICAgMDAgMEBgQEAwMEBwUGBAYJCAkJCQgICAoLDgwKCg0KCAgMEAwNDg8PEA8JDBESEQ8S Dg8PD//bAEMBAwMDBAMEBwQEBw8KCAoPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8P Dw8PDw8PDw8PDw8PDw8PD//AABEIAGwAoAMBEQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAA AQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgj QrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpz dHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX 2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/ xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEK FiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SF 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 tAyr9sm/2fyoAPtk3+z+VAB9sm/2fyoAPtk3+z+VAB9sm/2fyoAPtk3+z+VAB9sm/wBn8qAD7ZN/ s/lQAfbJv9n8qAD7ZN/s/lQAfbJv9n8qAD7ZN/s/lQAfbJv9n8qAGtdzEHp+VOWh0UoJnnVz4Rjf U1uIfEGu2wkeVnhtr5kRiZGY5GPUmsXHW1z1ISSg7xTtb8ihd+D2j1K2SHxX4ijgk82R4UvQEZix bONvqxrO2trmtGcXTlNwV1boEXhF47e5P/CXeJWaRshm1FiY/wDd44pyTtuEpRcrci+4Wz8JJJba Rqr+I/EBv/sqB5P7RkxN+62fOn3Tz8/T73PtSgtL3Jc0puHKrJnaeGNEXS5b+capqN19pCHy724M qw9eIx/COTW6VjgxbTex/9kKZW5kc3RyZWFtCmVuZG9iagoyNyAwIG9iago8PC9TdWJ0eXBlL0lt YWdlCi9Db2xvclNwYWNlL0RldmljZVJHQgovV2lkdGggMTYwCi9IZWlnaHQgMTUwCi9CaXRzUGVy Q29tcG9uZW50IDgKL0ZpbHRlci9EQ1REZWNvZGUvTGVuZ3RoIDk4NTI+PnN0cmVhbQr/2P/uAA5B ZG9iZQBkAAAAAAH/2wBDAAICAgICAgICAgIDAwIDBAYEBAMDBAcFBgQGCQgJCQkICAgKCw4MCgoN CggIDBAMDQ4PDxAPCQwREhEPEg4PDw//2wBDAQMDAwQDBAcEBAcPCggKDw8PDw8PDw8PDw8PDw8P Dw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw//wAARCACWAKADAREAAhEBAxEB/8QA HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQR BRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdI SUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2 t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEB AQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMi 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 sHM+4v8Awj3h/f8A8i/p3/gLHRyrsHM+5I/h7w//ANAPTv8AwFjo5V2DmfcP+Ee0P/oB6d5X/XrH RyrsHM+4f8I94f3/APID07/wFjo5V2Dmfci/sHQv+gHp/wD4Cx0WQcz7nQbNj0xFF/v0AWYfnSgB X8t6AIaALX8NAEb/APPSgCGbpQAqP8/l0ASfc/d0ADpsSgAT7tAC/wANACP92gCvC+x6ALP3KAG0 ALD0NAEv7ugCJ/u0ARea/rQBLMn+qoAiSgBYUoAiegC0jFKAIfNf1oAUIJFw1AAn3jQAffbZQAP9 4UACNQBK7UAJGok+9QBGh2UAD/eFAA/yUACP8tAEu72oARE3tQB//9kKZW5kc3RyZWFtCmVuZG9i agoyNiAwIG9iago8PC9TdWJ0eXBlL0ltYWdlCi9Db2xvclNwYWNlL0RldmljZVJHQgovV2lkdGgg MTYwCi9IZWlnaHQgMTIwCi9CaXRzUGVyQ29tcG9uZW50IDgKL0ZpbHRlci9EQ1REZWNvZGUvTGVu Z3RoIDg4MzA+PnN0cmVhbQr/2P/uAA5BZG9iZQBkAAAAAAH/2wBDAAICAgICAgICAgIDAwIDBAYE BAMDBAcFBgQGCQgJCQkICAgKCw4MCgoNCggIDBAMDQ4PDxAPCQwREhEPEg4PDw//2wBDAQMDAwQD BAcEBAcPCggKDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8P Dw//wAARCAB4AKADAREAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QA tRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJ ipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcF BAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygp KjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJma oqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oA DAMBAAIRAxEAPwDxuzto4YPuff8Auf368Q7TpESNHjTy/wB46f8ALP8A5aUAbiW3/HvBsSH/AKZ7 PkjSpEzc+zb7j+DzP9ygxZuJbJ+8d0/eb9nmR1qIsJbRou+NNkf/AEz+5HQAeTsl2eWnlpTRJcdJ E8xPI37PvyR1pEDQsLCxvIvtc/ifRLa3+55k95Hv37P+eafPWnITzsx9Sfw/YXEkaeILO53/AHJI 4ZI//Q0o5A5yOawjhuryx8+2m8jY80lpNHInz/7aVnIpFfZGnl+X8mz/AJZxp/6LrNmyMO/gkm+z +Zs8zZ/c8z5KRDMP+wbTzY5P+WlAgeGTZ/q5vkf5615IF8qMu8hRFkT+/wDckp8sA5UcnqVnvi/c f6x0pOpfQg8/1KGf/ng9ZuHMNHn+pQ72k/2/n/eVVzdHm+pabB+8Ty08ujmA+9IbaObzH+/sRP3k f/LSsQNi2hRPvwP5bv8AP8/meXQBsbJ5m/dyeT8+xPkqRM3Ibb91byJGjyb/APWb/wDWUGLNS2h/ 1ab/AN5/HWoiwltsS8jfY+z/AJabKALEyIkUbxp/tp5lCJOP1W8vr/V4/D9jshkeHz7mT/nmn/xd aoDpLPSrHR0j+yWMPyIn+r+//wDZ1PtSvZFi5T7SkiSeclun3PMT/Wf/AGFP2oeyPO9b0r/hG723 8R6N/o1vA6JeWn8EkDvTbJW52DpvWSRPnk3/ACVmzZGfsn/do+x9n/LST+5SIZnu8jr9xHp2uK5T uU+SPzHhh8v/AJaTzRx/PWv1WTMPas5+Z7W5SSOO+sJpP+mdzHJR9VkHtTPms3eLzNjpv+d5I/uR 0Om4m5xeq6bsfz44ET+/5j/6usnJxBHB6rpSb/L8hP8ArpHWfMdCPL7/AE1ElkjRN8n/AEzo5gPu SzSN4vtafx/On/LT+OpA3LZI9kkccCeYnyfvPv8A9ygCx5Lw/v8Ay/4/9XG/mfJVGTNiwR5oo9kH +j/wUAXLa2e8uv8AVokaffkjoILiQzv+7f5P4/3af6ygCTfHuj8uTfJAn+o/j/791KA4Pw3NaP48 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 eH/TStKtEKeFmyn/AMMr+NL+WOOfxV4Je8gfz3RNSn3/ACf89P3FZRohPCzizn9S/ZI+I32COSPx P4P8t3dPP+33ciRv/tv5HyffjojR1KoUZ+1kZWp/sTfGS+OqWS6t4Mm1NIZrn7Imqzv8kO/+PyP9 iuuNA55c0KE2z//ZCmVuZHN0cmVhbQplbmRvYmoKMzIgMCBvYmoKPDwvUjExCjExIDAgUi9SOQo5 IDAgUj4+CmVuZG9iago0MiAwIG9iago8PC9SNwo3IDAgUj4+CmVuZG9iago0MyAwIG9iago8PC9S NDEKNDEgMCBSL1I0MAo0MCAwIFIvUjM5CjM5IDAgUi9SMzgKMzggMCBSPj4KZW5kb2JqCjQxIDAg b2JqCjw8L1N1YnR5cGUvSW1hZ2UKL0NvbG9yU3BhY2UvRGV2aWNlUkdCCi9XaWR0aCAzMDAKL0hl aWdodCAyMjUKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyL0RDVERlY29kZS9MZW5ndGggMTM0 Nzc+PnN0cmVhbQr/2P/uAA5BZG9iZQBkAAAAAAH/2wBDAAICAgICAgICAgIDAwIDBAYEBAMDBAcF BgQGCQgJCQkICAgKCw4MCgoNCggIDBAMDQ4PDxAPCQwREhEPEg4PDw//2wBDAQMDAwQDBAcEBAcP CggKDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw//wAAR CADhASwDAREAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgED AwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRol JicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWW l5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3 +Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3 AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5 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 APCr00f+1q63NM8CU/ZPlq1NfQ/jpqTpQUFoKBIKDKoFBSHp9+gBX7UACd6AI6ACgCRPuUAR/wDL agBH+/QBKn3KAJKAK9AA/wBygAoBj0+/UrcuH8Ajf79ay2Cl/DYtKRhR3kFEDeewUIVH4WFKPxGF LdkT/frOfxDfwyFf7lEPiY1/BgIn36EaT+yRv9+tDGPUWpj0Nnugoj0KqfBEKUtyp/EV6Ujnj/EY 9P8AVVSKW4yhhLoFT3NHtP5BUPoZL+IwrWAVdgrQwrfGf//ZCmVuZHN0cmVhbQplbmRvYmoKNDAg MCBvYmoKPDwvU3VidHlwZS9JbWFnZQovQ29sb3JTcGFjZS9EZXZpY2VSR0IKL1dpZHRoIDI4Ngov SGVpZ2h0IDIxNQovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIvRENURGVjb2RlL0xlbmd0aCAx NDk0MT4+c3RyZWFtCv/Y/+4ADkFkb2JlAGQAAAAAAf/bAEMAAgICAgICAgICAgMDAgMEBgQEAwME BwUGBAYJCAkJCQgICAoLDgwKCg0KCAgMEAwNDg8PEA8JDBESEQ8SDg8PD//bAEMBAwMDBAMEBwQE Bw8KCAoPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PD//A ABEIANcBHgMBEQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAAC AQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZ GiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOU lZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 9vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAAB AncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Sl 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 tY4NW8//AEt7q1itJXaENFHshuvJh2O+z77unTRnJY+NJXS5V33tr0f+R6tbF5di8VLE4zlnUcpc y9yzja0LNyitnuryurPax9Z/Gm/aHx78El1XR9dufCem3l3reoXOj6Ne6mqTxQeTbpIttE5/1k5c f9cazlUlLMvZxTsfH5HToQy/MHGSVeSiqabSvd+9u10PKfigNY8RfFCy8beCdE8UtrWl+CL5vDks tjqdtbT6m7OyJMj7I4GRYPnS52ed50P3vLQDLHRrwp1nFPm05Pv1/Duerklf6vlbweLcP3lSPPrF +6u27tfrHbXVa2z/AIe+Ao/FvxGebU5PG9z4H0Hw5FbpJ46h1GNr3VLmVXnmhN2A4wlrHuRf3YLj aqcl/Yy5/v6kpRvTtG1+9tdztq5zPLcJfBuCqTm2+TluoLSKdl5/1qfyyVsflJJQBJQAmW9aAFoA koAKCySgAoAKADZ71AEez3oANnvVgFAElAElABQAUAf3L7VPYVA7sTYvHyj8qLBdhsQdEX8qVkF3 3FwBkgDNMT1IwiLlgig+wpp3Ccnbcwtb0LSPEWnXuj65pVpqWmXKeXPYX0CTxTIezo/ytWFWnzvU 3oYiVN3i7MyPDHgzwl4KspNO8J+G9L0bTGkM72ulWkdrEX/v7EUDdhVrodrWtYeIzWtjH78nJrS7 beh2uAPc1OhyxTW7HbE67Bk+1KyLu+4bFAwFA/CmF2JjjBH4UKwpX3Rwvir4f+CfGqWkPjHwpo+t Q27+ZBFqtjDdrC3qgdTtPvWE6HO9rnTRzWthNIScW+zZ0Ol6bp+kWFnYabaw22m20aQQW9ugjjiV flVEQDCqMYwK32Via1eVaTnJ3bNnAHWjS1rHKo63F2JjGxcfSi2t+ppd9wKqeCoI9xSsr3C7DYn9 xfypvXcOZ9w2J/cX8qNg5n3P/9kKZW5kc3RyZWFtCmVuZG9iagozOSAwIG9iago8PC9TdWJ0eXBl L0ltYWdlCi9Db2xvclNwYWNlL0RldmljZVJHQgovV2lkdGggMzE2Ci9IZWlnaHQgMzUwCi9CaXRz UGVyQ29tcG9uZW50IDgKL0ZpbHRlci9EQ1REZWNvZGUvTGVuZ3RoIDIzODM1Pj5zdHJlYW0K/9j/ 7gAOQWRvYmUAZAAAAAAB/9sAQwACAgICAgICAgICAwMCAwQGBAQDAwQHBQYEBgkICQkJCAgICgsO DAoKDQoICAwQDA0ODw8QDwkMERIRDxIODw8P/9sAQwEDAwMEAwQHBAQHDwoICg8PDw8PDw8PDw8P Dw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8P/8AAEQgBXgE8AwERAAIRAQMR Af/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQEC AwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNE RUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqy s7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEB AQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEH YXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZX WFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLD xMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A/fSoAKACgAoA KACgAoAKACgAoAKACgAoAKACjlAKOUAqvZxC8go9nEOaQU7RFzSCi0Q5pBU8sSeaQUcsQ5pCAY70 uU3uhaOUzlqFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BTAKQA9apCuiJ5o4k3zSIkf/AE0+Sjlb2QOSXUxpfEmjRfJJqFv5n9xH31awsmcjx0EVP+Et0v8A 5Zpczf8AXOGn9TkH9oQKb+OdLR/Ikt7hJP7jmNP/AGetFgJdzN5jEiTx5prtxFcf99J/jT+oPuH9 ox7B/wAJ3pH8aXKf9dE/+zqPqEu5X1+JoQeM9BlOPtux/wC5Iuyk8DND+vxNa21WxvP+PW7tn/3H rPka6G0aifU1KVjZST6hWYwpAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA 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 9fNkkgjQx5jViM4JUcVEKcrtuRzVcROhaCe5JF8igHGe+BjNUo2VkOnUlNKE3d9x3mYA4rkk9S6k 1GVrH//ZCmVuZHN0cmVhbQplbmRvYmoKMzggMCBvYmoKPDwvU3VidHlwZS9JbWFnZQovQ29sb3JT cGFjZS9EZXZpY2VSR0IKL1dpZHRoIDMzNgovSGVpZ2h0IDM2MgovQml0c1BlckNvbXBvbmVudCA4 Ci9GaWx0ZXIvRENURGVjb2RlL0xlbmd0aCAxOTIwMT4+c3RyZWFtCv/Y/+4ADkFkb2JlAGQAAAAA Af/bAEMAAgICAgICAgICAgMDAgMEBgQEAwMEBwUGBAYJCAkJCQgICAoLDgwKCg0KCAgMEAwNDg8P EA8JDBESEQ8SDg8PD//bAEMBAwMDBAMEBwQEBw8KCAoPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8P Dw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PD//AABEIAWoBUAMBEQACEQEDEQH/xAAfAAABBQEBAQEB AQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEH InEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFla Y2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbH yMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQID BAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJ IzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APzPftQAUAVn+/VgMftQBHWoBQAUAIn3 6ALtABQBJDQJljZ70MzkSInyVn1AsbNi1qgLkKb1rQDQ2fJQBcRKsC4iUITNCFK6EZsuIj0CLiQy VvYDQSzosBqQ21bAakNtQwNRIdlZMDQRKANiFPkrS5SOg022obNkdQlhXM5EmxYaV+9jpOQHeQ6b +6jrkkEQe22VizRAltWgy55OygCm6UARunyUMCns96yYFeagGZ+z3oMmHk0ARzQ/LQBz8yfPQB+Z +z3rnNSOgCs/36sBj9qAI61AkTvQAUAFAFigCSGgC5sj/uUCZYT7lBnIkrPqAbN9aoDQhStANREp gXESqEaEKUwNSGGtzMuWaSb/APV0IRsIldaQGgkNOwFxIaYG5DbUNgakNnvrK6AsJZ7HoA3LOzd2 j/d1PMUjsLDTf9ihyNkdYlh/sVzcxJ1Gm2Hzfco5gOsS2+WsZBErzWdYs0RXS2rQZJ5NAGe8NAFd 0+egCu8NZAU5oaAZT8mgyI9nvQBXmT5KAMOZPnoA/MN3rI1I9nvQAOiVqBn7PegA2e9ABs96AJPJ /wBugCxs96ADZ70ASQpQBcrPqJlhPuVqjOQbPnqbAWEShIDUhSuuKA1EStlERoIlFjM0IUosI0Eh kq7AbkNtRZgaiWdaKLQGolh/sVqgNSGwk/1n/LOs1LlNTH1Xxbo+lfu0+eT/AJ6VyVp32Ap6Vc+L fEj77TZZ6f8A89JErjVRgeoaJ4V1l08ye+vJo/45JEjjrZVrAekW2j/Y0/efPV+0GdBDbIn3Epc4 HYW2m71/v1lzBE6SwsNn/LOi5ojcez+T7lMZG9n/ANM6AM/yY0/goAj2e9AGfMlAGW6fPQBG6UEF f7L70AU3hrIsj8mgCnMnyVqQYcyUAflu6VylkdAEb9q1Ap7PegA2e9ABs96ADZIlAFj59tAEfz0A WIfMoA0ETdWfUTLCQ/JWyM5EiJVWA0IUd6aiBsJDXXGIjUhhrZIDQSzpcpmalnYUcojYS2rXlA6C G230coGxDYV0OFgNRLbyU/6Z/wAclYSdhnm/irxVI7yadp3/AB5/x/35K4a87bGpT8H+DHvJbfVd VtXmuHf9zYf/ABdcilzAfanhXwNHpVlHPrMfnXj/AHI/+edKUEB1n9lb/wDlmlYtWAx7+aCH935d ac4HP/2lIj+X5FHOB3Gg6rGjxp5iPHRzBE9Ys7P9158f8dFzRGhNDWwzPmhoAy5oaAKf2X3oApzJ QBnvDQBTdKCCvs96AI37VkWRulAGXeeZWpBz833BQB+V7/PWRYbPegCu6fPQAbPegAftQAJ3oANn vQBJQAUEEkP+5QBoQpvrRRA1NnvWyiBchh3pTUSS4ltWsYCNyFK7UZmxDDRYRsQ2G+s7AbkNhspp AXIbDfXQgOgs7CgDchsJP+2lXOSijU8r8f8AjCNJf7H0qf7n+ukrxcVO7Gc/4b8PfbJY9V1JHf8A 54wf89K5pFH3h8Lvhj/Y9hH4g1iP/icT/Okcn/LNKwe4Hqj2GzzPMTfvqLlmHqvlpFI/3I6APL79 5Jpfk/1dAGO9n83mfPQBTRJ4WjeCd0kjoA9s+HvjmOG6j0rXH/dz/ckpge8TWe9v9+twMu8sKAOf mtq1IKf2X3oApvbUAV3hoAz3sKCSN7PZQBTe22UFEbw/JQBz94lBJz9ynyUAflXWRqFAFZ/v0ALQ BG6UASIlABs96ACgCwkMj0EFyGGmgNCGHZXSogbltDvrZRA3Es61USSwkNbKAmaiWdUZs2IbP5KY jpLa2p2A2IbPfRYDcs7CtANiGw2Jv8v93QBz/j/xInhXQ/k/5Cl18kNc+KnZGx83+GNEfxJqX+lv +7R980n/AD0evEnJyYH3Z8Fvh7H4h1KTxHqMH/En0v8A1P8Av02UfYCQ7/8AV1iwK+pWEcNrI7/J HH87yVBZ4Xqt++pS+Wn/AB50AZf2ZEWgCm9nQBnvbUAU3to/4P8AWUID6k+HXif/AISGwj027k/4 mECfJJ/z0roQHeTQ/LQBzdzDWpBT8mgCu8NAGe8P+xQBTdN//LOgkjmhoApzQ0FGfMnyUAc/NDQS c/c2e+gD8l6yNSPf7UARv2oAKACggE70AXKVirkiJRYLmhClbJA2akNtWsUZNmxDbb66YxC5sQ2G z/lnWyiFzYhh3pWiRTZoJYSb/wDV1qkZNmxDpsn9yr5QudJDpu9KOULm5DpqJRyhc2LOwo5RXNyz sK1irGaOg+zJZ2sk8/8Ax7wJvesq0rGqPiPxz4kuvGHiOSSP/jzd9ltH/wA868GtLmNOU9w8B+D9 9rpeh2sf+mTvseT/ANnrGLsHKfpBomiWvh6ws9K05NmnwJsf/ppXI2aneaJpUl/LveT7n3I6TA8z +J2tx/av+Ec05/3af66SOpQHkaQ/6v8Ag/6Z1ogJH8umBnulAFN4aAKbw0AXPD2qz6DrNvqMD/x/ PWyYmfaEPl6la2d3H8/npvrVMzkZ76bJ/cqgI/sNAGe9hQBnzWFAFf7DQBTmsP8AYoAz5rD/AGKA Me5h+SgDm7mGgDDmhoA/HPc9ZGpJQAUAFABQQSJ3oAsInz1pYnmNREosHMXIUrZITZ0EKVtGJk2b lnDXTGIrnQW1tI//ACzrZILnSQ2H+xWiiW2bEOm/9M61UTJtm5Dpv/TOr5RXOghsPk/1dHKFzYh0 3/pnRyhc6Sz03/pnRyhc6iz0ePd5ez7la2sgR4n8fvE//CN6DH4ctZ9mqav/AK7/AK4V5uJklc2i fMfgPw9JqWqfa5P9XB9z/ppXhp8x0WP0E+CeibJZNcn/ANZ9yHzKwqOwWPqCHe7RwJ/HWIz0DWNS g8JeEpNV/wCXh02Q/wC/QB8j7/OeSeT55Hfe8n/PSpQBWiApv2pgRv2oAjoAjeGgDLmh+SST/Ypp iZ9gfBbUk1jwp9lkffeWXyVqmZyPTJrD/ln5dbgZb6b/ALFAGe+m/wCxQBTewoAz3sEoAz5rOgDP uYY9tAHL38P+soA5e5hoAw5oaAPxjrI1Df7UAH36zsxXJE70WYXLGzfVpEkiQ1qkBoJDWiiSXIYd 9bKAHSWdh/sVsoDbOks9KrVQMmzqLPSq7Ioi51FhpX+rrWIXNyHSvnpoZ0ltpX+xWyBnSW2j7/4K RkdJDom9KAOgtvDyf886dx2Oks/D0dFwsdB/ZsFha3l3qPyW8Cee8lRiaitoCR+V/wARfEl14/8A G+qalB8/nzbLaP8A55pXzWJldm0Ue0eCdB2Wun6Vax/vH2J5lczZ0n3Jo6QaPa2dqif6hNlZSYHr nhh43l8+T+CuewHB+P8AxC+t6z9kST/iX2XyeX/t0WA8/wD3iL+8rUCu81AGfNNQBn+dQBqJ3oAu OlAGfND8tSgPWPgJqv2DxhJpUkn7u9T/AFdaxA+1Htt/30ra5lyme9hRcOUy5rCi4cplzWFFw5TL msKLgY81tRcDLvLatAOXv7b5KAOXmtqAOfmtqAPxHrI1CgCRPuU7GXMSU+UOYsQpvqooo1IYX/gr ZRA3LPSneulQJOwsNH+StlADrLDR/krZQM2zpLPR/OrVQMm2dhpnh6qiiLnSWfh75q1iFzqLDw3Q jY6i28PbK2QHQQ6JspGRuQ6PsSlcDoLPTazubWNiHTd9Fx2PA/2n/GH/AAiXw+/sO1n2aprz/Yk/ 3Pvu9cVapoCR8B+A9K338moyfwfcrxa0rs1SPrz4Y6V/pUmqyf6u1+RK5mzQ90R98vl1k2B3Caw+ m6bJJH/rH+RKdgPP/O/8fosBHNN8tMDLeagDPd6ABO9AGhZ0AalAFeb7gqUBoeEtS/sfxf4f1L+5 MiVrED9NPsfnLG//ACzdN9FxWI/sGyi4WKc1nRdhYy5rCndhYy5rCi7MzDmsKLsDHv7D5K6UBx9/ Yf6ygDm5rCgDHubCgD8E9nvXNZmlyx9l96LMLlhIfkrZMzJET561TuBuWGm7/vpWtGk2xXO403R0 dvuV1ukFz0Cw8PJs/dx11xphc6iz8Pf9M63jTC52Fh4ej2fcrqdLQzOwsPDEf9ys3TEdpYeG4/8A nnTbM7HUW3hv/pnWTYWOks9ERKOYLG4mlUcwWNBNNrG4WNCHTaGwsbEOm1jC6NDUh02ipOwH5L/t ReNo/FXxT1C1sZN+n6Cn2K28v/lo9eVXmbcpT8Mab9jsLOD+4lca1Cx9aeGLOPStDt7X/lo6b3rF mp2EL7GoA1JpvOSgDLd9tAGfNNQBjzTUAZepalaabF5+o3aQx/8ATSgDze8+Mfhywl8j7LfzR/8A PeOH5KAPSPCvjDw/4qi8zRrvzpP40k/dvHQB3lAB/BQBhzP5Msc8f8D0Afq54Puf7V8KaHqP9+zS gDoHh30AU3tq1uBnvYUXAz5rCi5lymPNYUcwcpj3NhWlw5Tl7zTaLhynN3Omvv8A3cdaBymHNpsm z/V0Byn88aI9Z2C5oQwyPTUQubENhG7V1xoCOksPDyO9bKgB3mm6Cn8Fd1GkjG56Rpvhv+5HXW6S C53Fh4efb/q63jTQXOssPDbu8fyVqoILnoGm+GNn30rOVQZ1kOlbP+WdYuoB0kOm/wDTOocirGgl h8/+rrGUgsakOm/9M6OYLGolg9HMFiwlg9Y8wWNBLClzBY1IbOmtCTl/iX4ng8AfDnxR4tn/ANZZ WbvD/wBNHf5ErkrzsNH4d+HkfxP4j/tGd/43vZvM/v15VSdzpSPpTwrYfb9S0+Dy98bvvelDULH0 Yj1ixmh52+WNKANj+CgDPmegDHvHoA5vWNVg02Lz3koA8H1i/n1u68+7ff8A3I6AI0SgA+wPDeR6 5o7/AGbVIPneOP8A5aUAfSnhLxVaeLdEs9Vjk2Xj/JNH/wA83oA7D+CgDn9SfZQB+lnwBv8A+1fh p4f8yTfJB8lAHtHk0ADw07gV/JouBTmtqLisZc2myUXCxlzWH+xVXYWMe80r/pnTuwsc3NpX+xXS FjDm02T+5QFj+bO2h30RgRdHSWGm7/8AlpXXCAXR3GlaD80dd8YGJ6Bpvh75q3jAR6hpXhv0jrqV MD0jTfDf+xT5AOws9E2J9yi4HSWGlbGj/d0+YGdZDZ9/LrNshGpDZ9/LrFs1RoQw1iyTUhs6xYGp DDTA0PJoA0EhrACwkNAGgln8tUpCR8B/t+eP/wCx/C/hP4ewSbLzVJn1Cb/rglcldmyPg/wNbfY9 N3/8vE715rNj6Y+GltvTULv/AIAlAHqjv5KVAFjRH+33kj/3Pv0AdZxs/wB+gDDuXkoAx5po0STz P7lAHg/iHWP7VuvL/wCWafcoA5/56ALieZQBuWyUAaHhK8/4Rjx15fmf8SvW0/1f/TegD6M/goAw 9S+fy6AP0E/ZIvPtngHUIP8AlpBf0AfUjpIlAEdABs96AB0oAy5oaAKf2OR61uBTm02jmAy303/Y o5gMN9K/2KfMB/M3pWmyV6UYanNc9E0fRPn+5XXCAXPUNH0Hf5f7uu+MCT1DR/Dafu96VsogeqaV 4egRaftLAdhDYIn8FL2gGwlh8lZ3A1IYf9ilcDUhhqGyEbEMNZNmqNCGGkyTQRKxYFxIfnpgaEMN DA1PJrBgXEhpAakNnJUqQkfhP+1v4t/4Tz45+KPIn87T9I/4lkNclaRsjH0eH7Haxx/3EriNj6g8 H2aWGjaen9/79AGxqU3+iyT1AHSeGLPydN3/APLSegDcftQBlvN/rKAPL/GGpSW1r5Ef+segDytE 2f8ALOgCRE3UAaCQ0AbEKbKAMvxJDIllHqsCfvLWbz6APpTTdSS/sNP1Lf8Au5oUegDDv33+ZQB9 0fsZ3m/S/Flp/cdJqAPtx/noAj2e9AB5OygCv/wCgCu6bqAI9nvTuBI6fJRcDPeGi4GW9tRcD+bf R9K3/wDLOvoYI5D1TRNE/wBXXXBAeuaPoMf7uuxMD0iw0dESi4HUW0NYVdQNyGz31lGaiBqJDsT9 5T5kBchho5kBqJD/ALlTdAakKf7FF0BcRP8ApnUPUDQRPnrKUALCJSbA2IYaybA1EhpNgakMNZSY GH4/1iPwl4G8Wa/I+z7FZvsk/wBv+CuOUjWJ/PPNDPNrkmqzxv5ju800kn993rFu5qj0jRIftl/b wf33TfUSGfUkP7lY0j/grGQGfqX764jtI/8AVu9WB6pDD9mijj/uUARzP8lAGHNNGiSb6APA9bv/ AO0tZuJP+WafIlAGXs96ALid6ANBEoA1IfnoLJL9N9leQP8AxpsoA6j4dX8l54Vjgk/5dXe1/wDH 6CDqL9/9X/sUAfY/7Fd5/wATHxxB/wBMY3oA/QXZsWgCOgAoANnvQBH9l96ADyP9igCN0+SgCu6U AV/svvQB/Pn4e8Pf7FfURich7Bo+ibPL8yOuqKA9M03TY0SP93TuB0kMKUXA1IYaT1WoGfret2nh 6LzJ/n1B/wDU2/8Az0evPxE+V6AY9ho/xX8SRf2la6U9tZv/AM9/3dcP1pjLGpaV8WPDel/2xfWi Pbp9/wAt/Mo+tMRycPxj1GH93PBZzVX1oDpLP406b/y30p/++6PrLA6Sw+M3hF28t0vIatYi4HWW fxR8Dv8A6zWEST/ppWqq3A6zTfG3g6//ANRr9g//AAOk5AegabNpsyeZBdQv/wBc3rJyA6SGz3/8 s6HIDQhs9jfvPkrGTA+P/wBt7xP/AMI38JdL0bzP3mt6ls8v/noiJXG2bRPx/S8+33Xmf36ybNEe qfDew87XvPf/AFcCfPTYz6ErKQFjw3Yf2lrO+SP92lWB6ZMmygDHmf5KAPP/ABbf/ZtNk8uT949A Hi/9ygCwiUASUAaCd6ANizoLNCgA+HT+S/ijTf8Anheb0oIO8uPuUAfWn7Fzf8Vb4sj/AL9h/wCz 0Afo5QAIlAElABQAUAFAA/zUAV/JoANnvQB+JelaPGn/ACzr7I5D0Cw02P8Ad0wOwhs49lQBcSGO gC472NhZSajdf8ecHzvXNiMQooEjoPCXgaPZH478WpC+sXSedbRyJ8lpBXz9fEczNUjwv4nftpfD LwNrMmlfvtY1SH5H8isLltHuHwZ+Mfhz4x+FI/E3hzf/AGW7+RNYTp88b/7dFzJo+f8A4x/Dr+xL /VNc0OBE0vfvmg/5576tMpo+c5pn2eZHJWqZk0Zc1/On/LTZJWd9QMt7+7/1jyP5n+/WyYFN9SnR /wDWbKrmAuWfirVbZt8GpTJ/1zeSOjmA6yw+M3xC0r95pvjHUk2fwed5lHMJHUeG/wBsn4xQ/bI9 Vnmh0+D/AJb6tDBIklFzZHhfxv8A2hNc+N97o99rEkP9n6IjwQxxp5fmP/frM2PI9KT91G//AC0p AfRHwxsNmm6hdeX+8nf5KwYHpjvsWgDvPAdtH9lvLv8A29lAHUXif6ygDn7rtQB4n45m8688jzPu UAcfCj7qANTZ8lAFfZ70AWE70AbFnQBsIlAGP4PfyfFuuQf8s5IUegD0y4+5QB9SfsZv/wAVv4kj j/58P/Z6AP0sT79AElABQAUAFABQAUAFAEb9qAPx/sLOvsjkOotoaANhEqQNBPM/55/coYHm/wAQ vEOzUvDfgCx/5CGr3KPN/wB9pXjY92WhqkfRnxX0rXL/AOFXxI0rwdvTxJ/ZU6WEcf8AyzdEr5/V vU1SP5o/7H8Y3+tyabP4f1KbxB5376DyZJHketOYto/dj9kL4S6z8H/hFs8TweT4k1eb7bNYRv8A 6v8AuUcxk0U/iR4nd7rUNNgk/wBds31UWU0fN+q6bJYXUb+X/oc/3K2UjJo597Pf+8oRmZ721bIR TewSpuBnvYbKLgZc0Mifc/jouJHl+sWHifx5rkngfwVp015Jaw+fc+X/AHKLmyPO/uXsem/ZEh2P seP/AHKZsekQpsWP/coYH1Z4Ss/sGg6X/wBNE31zsDoLj7lAHrHhWz+x6Db/APTf56ANC4+5QByd 4+zzKAPnvWJvtmpXj/7eygCva96ALFAElAEnk0AaFnQBsJ9ygDH8PfJ43vP9uGgD0i+oA+pP2MP+ R98S/wDXh/7PQB+mCfI8lAA70AR0AG/2oAsUAR7/AGoAN/tQAP8APQBHQB+S9tNX1VzE1EmouBsQ zVtRZmaEL738usMU9BH5t/EX4i6lc/FjVPE+lXf/ACC7/wD0CT/nns+5/wCz18vNt3Non6SfBP45 QfE7S/7Vkj8nxBB/x/wf7f8AfrGRoj2RNN8MvdXmqx6VpsOoff8AP+zR76xGZ+pTSX6eXA6JG/8A rp5KAPi/xy/neKNU8uP/AENPuf8ATRKpAYfjmzgf4cyRyT7LyB/tSSf8862QM+a7PxVJtj8+tjI1 E1uOZ6BFh7yOtQI3mR6BnF+KtYTR9GvLrzP3ifcoKPsD9mb4ex/Cv9mfxx8ZdZtP+Ko8S2E96kkn 344PuIn/ALP/AMDoA/L/AE3/AE/WfPk/1n3/APvugs9csLPzpbdP77olDA+rLOHyYo4P7iIlc7Au bN/yf36APfLCz8m1jg/uJQBl38Pz0AcH4kf7HYXj0AfPb/O//A6ALEKbKALFABQBcTvQBYTvQBsJ 9ygDH0r/AJHmP/rjQJnol9QZyPqj9jBP+Kv8UP8A3LD/ANnoKP0o376AFf7lBZFQAfavagCSgAoA KACgAoA/Hezv6+kuYnQQ3NFwNSG5rajIzKfifW/7E8L+INY/5aWthPs/36xxT0EflWkLzPJPJ/y3 +evm5G0T0DwB4z1/4da9Z+INDk/eJ9+3/gnSspGiP1M8DfE7TfiXoNvrOlfuZPuTWH/Pu9YjOw8m d/8Alg70AcX4n+HVrqv+lvI9tHB87/JVID4T+OviqOa6j8JaVJ9z57z/ANkStkB4HDWxkXPO2UAS fb5ErUDk9e+ISeHrqzgkgd7if7lAGx/ZV18RfFvgPwPaR7/7bv0R/wDpnQUfrh+2lf6b4G/Zuk8O aHIiWc/kaZZ+X/zwSgD8R/DFsn2qSREoLPaPB9n9s8Q6PB/cd3pAfUFYAanhuw+3+IdPg/vvQB7x 9mfZQBl3ltQB5H8RX8mw2f36APA/+WvmUAXETetAEmz3oAKANBO9AGgnegDXh/1RoA5ywT/iubf/ AK40CZ3mpfJQZyPrz9ieHf4j8WT/ANyFKCj9HF/5af75oAPv0FlN0+egA2e9AFygAoAKAI3+/QBX ftQB+IdnrH/TSvqDkOkttY/6aUAdJbarH/z0pS+ISOX+Kmqx/wDCAaxBH/y3dErkzH4DZHxf/Y6f wV4BsH9j/L8/+roA9g+Dnj/UvhX4jku3tEvPD97/AMf9h/zz/wBuoYH3ReftUfDKwij/ALO86bf8 /lwW3+rrFgeR+Lf2t/7Ssry00fwxNNG//LS/fy6tAfCeqpdarqWoardfPcXs29/L+5HWyAy/sciU JgP2Sf3K2iwGOlHMBjvpunXk8c93apNJB9zzE/1dHMAaJ48/4V18RtH8WxwedeadC/kx/wC3UAdx 8bPj9qvxR8OaHoc+9I7V3un/AN+gDyPwrDJ9i/36APePhpbb/EEk/wDzwhoYHvD9qyA9A+F1hJf+ II5/+eCb6APdJrCRKAMv7BvoA+a/ivNJ9ts7X+4lBZ4/s3v+7SgDQhhoAkdPkoAj2f7FEQLGz3rR AaiQ0ypGoifuqDNnP6Okj+Oo/wDYhoEegaqnr/foA+zP2KrbY3jC7/3KAPvxPvyUASUAFABQAUAF ABQAbPegCPyZPWgD+euz1WvqDkOkttV/26AOkttV/wBulL4hIz/HN/53hKSP/p8T/wBnrkzH4DZH g8P9yvANi4negC55Mb/wVDAuJZx/wfJWLAHsJHXy5JN8dWgKb6PWvQCn/ZX+xWaYFd9N2f8ALOtU wM+bSt//ACzo5gM99N2fu9n36OYDwvxh5lzrMnl/7lWBzeyT/V0AeyeHrbybCzjoA94+GMOxvEE/ +4iUMD1TfvrJgfRHwH0fzpdcu/L/AHaQolAHtlzpv+s8yOgDHTTY/wB4+z7lAHxf8Tne58V3Ecf8 HyUFnBw2fz0AbENgm37lAFeaw2f8s6AND+zYNnkeX/pmzfREDLeGRHrRAakML0ypGhs+SgzZj+Eo fO8dah/0whoEegalbf6ygD7g/Y20108NeJLuT+O52UAfalABQAJv3UASbPegCTalAEfyUASbUoAP koAHfbQB/NPbalHX0pyG5DqUf9+gDYttV/26fQhB4k1LzvDl5/sTQP8A+h152I6msTzOGb5q8h7n SjYSakBoI6VIGpDMlIC482ymBJ5yPQBH5yf880oAPkegAe2joAx5rCOgD0z4S/si6x8V/B//AAl0 Gq2CRz386JHJNHv+/VAfG/xR8ESeA/iDrngqfY8mnXPkeZH9ySgDqLBNiWfyVYHvHw9h2aNJJ/z0 uXoYHYb/AJtlZMD7k/Zv0eR/Busal5f37z5P+AUAe4alo/yfcoLOPm0fybDUJHSgD85/E7+d4h1R /wC/NQamWiJQBuWyUAWLxPmjfy6AI/s0kPl3f/L477KoCvNYed5jyJQBoQ2Hy1KIkRzQ7F/4HWiM 2Z/w3s/tni/xZP8A88ERKYj1DUrD5ZPSgD7w/ZUs/sfw7kk/573j0AfTmz3oANnvQBJQBHuegCOg A2e9AEmz3oAjoAKAP5f4bmNK+lOQ2EmoA2IZqfQhFy/fztG1SD/pjvrzsR1NYnncM1eQ9zpRqJc0 gNRLmpA0EvKALk15vSgCvDeUAWPtXtQBYhv6ANB9SjSLe/8Aq6AI7PUo7lI57R0eP/npQBnw/E7T fCvgPS7Sx1zUrbxJBM7+XG/yffqgPmua/utY8RyXeqzvNqF1N57ySP5nmUAeyWyRo/3PuJVge0eE v3Ph7Tx/f+ehgdJs+bfWQH6ifs36VGnwo8PyeX/r3d6APZJtNR6Czl/FulR23hzVJ/8Api9AH473 k3nXUk/993/9DoNQRP8AV0AdBbHYtAGo8O+1k/56JQBuWFgl41mkn8Hz1QEb2aebJ8lDAk+weSlS iJFO5tv9Zn/frRGbK/wTsPO/4TjVZP47/YlMR6hqtn8kkf8AsUAfenwQsPsHw+0f/b+egD3BH+Sg CSgAoAj2e9ABs96AJKADf7UARv8APQBHQB/LHC6PX0NzkOghm+Wi4GpDeVbkBqWc0by+W/8AGmx6 wlG4zg7lPsF/JBXjVqbRumSJNWMEap6Ggk1Z8pFywlzTC5oedvWkkFyuk2ytkguSfbKjlC5Ik1HK FwmdLyK8j/vpsqeUk5Pwf4e1HwxdSeZrDzaf/BbyUcoHH+J7CT7bcfvH+R6osx/Df77xB/0z2UAe 4eT8kkn+xQB7ho8Pk6Hpcf8Ach+egCw82yp5QP2T+CGnCw+FXgiN05Fhvo5QPSXs6APO/ii8dt4G 8UT/ANywd6APxjhO9Y5BQWaCd6ANiH7hoNTYhSR2kj/vpQB1Glf6HZ3kj/8AHw/yJQBJZw73oA1H h+XzKoiRy+sJ5NlcSf3Ed6DNnSfArTdngD+0ZP8Al6vHf/x+gR6Bf2H73y6AP0A8DWH2Dwvo8H/T GrA7igCx/BQAUAFABQBHv9qAI6ACgAoA/lPhevbuch0EM1FwNBJvm8urTuBuW1ndTeX8lbJaAXNS 8Nzuvn7PuV5+IpopM5v+zXrz+WzNkyP7NIlOULE8xIkNcsk7hzGhDWqiHMRzWclapBzFf56nlDmD fso5Q5g3PUWKDfJupWA5fWJo4f7UST+P5/MqSzj/AAZ8+vSR/wBxKAPaHf5Y4/79AHvEPyWtvH/0 xSgCN0qrAfuR4Ds47Dwb4XtP7lmiUWA6zZvWswPF/jw/2P4X+MJP+nN6APxyi+5HQWaqf8s6ANSG g1NhJtjxyJ/rKANiGaR38x0oA6G3+/QB0cMKOtURI8/8fzfYPDmsXX/THZQZs+gPhvoMelfDHwna eX+8e2R3oEbiab511H+7+/MlAH2pYP8AY7W3gj/gRKsDU+1e1AEiXNAFxLmgCXzo/SgCbzRQAvyP QAbPegCN0+agCOgD+VdEr21A5DUs7ae5l2eZsjrVQA7SwsNNsP8Abkp3A6RL+Pf/AKui4G5DNv8A 9ZXO1cCw9hpzv5jx0uUYP4Y0qZf9Zso9kIpp4DtHb/kJbKPYgXP+EAn/AOWDpN/wOsXQKRG/gbWP K2fZN8lZOiao5O/8MajZ/f06ZP8AgFRyiMv7Bs/1iUcoFf7B/wA846qMAiRzWcaJG8nyHfsTzKyq wNEU/GHhu6sNGk1LVbXyZHT5J/4JK52M8r8DJv1nVJ5P7iVnID1w/wCtt/8AfoA+gEf91H/uJQBX h+e90+P+/NsrS4H7yaPCkOkaPH/chT/0Ci4GhWY7Hz3+0neeT8L/ABRH/fhoCx+SUX3I6CjRTvQB qQ0GpqJ3oA1LN6AOote9AHSWz/JQRI83+KKSXNhoejR/6zV79IfLoM2fdH9mwabpen6dGn7uCFEo iIp6PYR3muaenl/x1ogPpDf7UwLCPQBJv9qALCTUAWEegC551AFhJqALG/2oAk+/QBG/agD+Uuzm 3y16qqnIdpZuif8AXStlVA1IblKLsDcsJo3ouwOwttmyq5QNRPL/AIKOUC5a96fMBuIlHMBuWCUm ykdhZ1k2bI3IUjdf3if9/ErPkJKc2iaVc/6+1hf/AIBRyAV3+Gng6/8A9Zo6JJ/z0jerhFBE5PxJ +z3oGsS6fJaXd4kcD73gj/5aVjViaI+d/jf8K9c8H+F49R0q7vH8N2r7LyO/T/V15zGfOfw62fb9 U++/3KykB7Inz3Vn/v0Ae4TPsi/4BQBJpXz69o6f37mD/wBDSjmA/eCzf/QtP/64pRzASO9Brynz v+0n8/wq8Uf9caA5T8p070Emgn/LOgDUh+4aDU1E70AbENAGxZvQB0Fm9BEjHSw/4ST4yfDPQ/8A lnao+oTUGbPtDVZv9ZRERY8DJ52vSSZ/1CVogPdP+mdMCxQAJ9+gCSgCxDQBYoAsUAaKfcoATfso AkR91AH8udnoiJXpqkchuJYVqqQFxLCtQNywsPnoA6iFKANSFKANREoA2IU+SgDoLf7lSbG5Z0Ad Ja96mwGwifPRYDUhSpYRNSGzd/8AV1lI0R4X+1Qj2fwb1h/+m0Fc0hn5x/DHe6ahJ/fdK457geyW /wDx+af/AL9SB7Y/agCPR3/4qPw3/wBf8H/o5KAP3Qhufls/+uKUASfavag15jx/48J5/wALfFkf /TGgOY/JtO9BJoJ3oA1IaDU1IaANSGgDYR6ANi2f5o/+edURIufBb/id/Ev4keLf+XfS9mkW3/s9 Bmz6Qv7z/WVKQjvPhj8iahdf8ArVID1z7V7U7ASI9FgLCPupAWE+/QBY3+1AEm/2oAsQvQBYR/no Aub/AGoAkR6AP5m0717CmchoIlaqYGpClAGxZpQB0CJQBY2e9AGhD5lAGpC8lAzYhqTU6C170AdR a96rlA3YfvmjlA6OFPkrJhE1IUf/AJZ1jI0R4P8Atdf8kU1CP+/cwVzTGfm/8OkeFNUj/wBuuOe4 Hq8P/H7Z/wC/Ugeyt/yz/wB8UAGjvs8R+G/+v+D/ANHJQB+1iX/+j2f+4lAFj+0o0ljT78kn3I9/ +soHc4P4o+ZqXgXxJaf37Z6Aufk/D/qo/wDcoKLkNAGpDQampDQBqJ3oA0E70AWLzUo9K03UNVnf ZHaw76oiR3nwE0qfRPhpp93d/wDIU1t31SbzPv75vnoM2emPqW9JP9irSEfRngCwjsPD9nI8f+v+ etkgOw2Ru9KwGhsjSiwAn36yAuJ3oAkoAKALFAFhO9AEiffoAsJ3oA/m3S2r2DjsakNnQFjQRNtW FjUhSgLGpD5lUFjQoCxchf8A6Z0GxqJ3oGakNAHSWyUAdJa96AOlt/v0MDq7Dy/ueXWDKOohhg20 mB87/tY2yP8ABjVJP7lzBXBNFn5p+A/Ldrx/9uuSSA9U2bLq3/36APYJvM2UAZ9m+zXvD8n9y5g/ 9DoA/YyG83xW/wDuJQB4vr0PjHUv2gvAd3BHMngvS9KneaeN/k8+gD2TxC/2zS9Ugf8AjR6APynm h+zXVxB/zwd0oLJYfvmgDThqjU1YfvmgDXh8up5TIkd9n+ro5QOP8cvPqtr4b8HWvz3Gval5Dx/9 ME+/VAfXHyabZWdpafJHapsSgDLsEkub+OCP+N60RB9mWCRw2FvBs/dolaIC5v8AapAsJM7vQBoJ 3qAJEf56ALG/2oAkoAsUAG/2oAkR3oAs+c/9+gD+cJPMr2DGxsQ+ZQFjQTzKsLGpD5lAWNSHzKoL Goif89KAsakKR0DNRIfkoAuQ21AG5ZpQB0lslAHSWafPQwOssPLrBlHaW2zb/BSA8P8A2qLCO8+C Pijy9nmJseuWaLPyj+Hr7H1CD/bSuSaA9g/5erP/AH6yA9o2b1oAw7n9ze2b/wByZKAP1ksL+P7B Zvv/AOWKUAH9sSf6vf8Au/8AnnQBYm1Lzlk/26APzf8AFtn9g8VeIIP+nx3oLMdO9AGha96o1NSF 6ALiPtqrGTDzt7x+X8+96LAHwxs/+Ek+JfiDxbJ8+j+HYf7Ms/8AppP/ABvUge8TX8j/ALugDtPh vpsmseK9PT/lnB871oiD642f88/9XWiAkSHfUgXEs6AJESoAk2e9AFjZ70AWNnvQAfPQBYRPkoAs InyUASJDHQB/OeiV7ZkakKUAaCJQBch/3KANyGqA2IUjoA1ERKANRE+SgDQhSgDYhh2UAbFr3qQO ks6AOlt/v1BTOnhTfQzFnl/x4sN/wl8cJs37LbfXLUNIn5H+APnvLz/bSvPqbmiPZHT/AFb/ANyo Ge4Qp/oVnJ/fSgDn9VT5P+B76oD9JNNufO0TR3jk+/ClAGhv9qAJEufmoA+O/jHYfYPF95P/AM90 30Gtzzffs8ugLlhJqsk0EegCx53/ADzoKkc/4n15/D3h641W0+fUJ/8AQrCP/npO/wBygzZ7h8Pf CqeA/BHh/QH+fVPJ33M//PSegR1Ez0AfQHwKs9n9sarJ/rPuJTsB9GfaE/uUWYEiXkb/AMFUBY3x pQBY3JUAHyUAWNyUAXPkoANqUASbPegCRE+SgCRO9AH87aJXtmJcte9AzUhSgDQSGgDQRNtUBoQ0 AbENAGonegDQhoA2IXoA2LXvUgdBZv8APQB1ljUFM7SwdEoMWc38SLZNV8A+NNNRP3k+mvsrlqmk T8W/Az+Tr0kGz78NefU3NEe2TJ/o+/8AuVAz2y2+fTtPk/2KAMPVYd8VUB96eDJvO8JeF5P+nZKA Og+dKABH/wC/dAHhfxs03zrDR9c+RI4H8iaT/Yf7lA7nzf8AxyeYjps+SgLlxHqyi6n3KAH/ALx2 8tI/v0FSK/gaw/4TnxzHrM8G/wAJ+F5tkP8Acnvf79Bmz6cmTe/mSPvoEZZ+/HQB9eeA9Kk0fw5Z xyJ+8n+eteUDtNz0coFhHepAubnoA0E8yoAkTfuoAsbnoAsfPQBJuegCwk0m2gCwk1AB9q9qAP57 08uvdOQ0ESgZqQpQamonegA/joA1IUoA1ESgDUTvQBoQpQBsQpQBqWdAHSWyPv8AMoA6ywSpKZ1l r3oMWXL+2+06bqEH9+F0rCrsaRPw701HtvGUkDx7JEd4Hj/3Hryau5oj3hIf3UkclIZ65oP77Q9P f/YoAL+H91VmR9afC68+2eBdL/2N6UAegP2oAjR/koA5/wASaVBrejaho1189ndJs/65/wC3QET4 j8meFtQ0rUvk1jRH8i/8z/xx/wDgaUGiI0f56Bmh+8/5575P+ecdAGHqX9q6rqMfgfw4/wDxUl7/ AMfk8f8Ay6Qfx0AfUnhvw3pvhLRLPw/pUf8Ao8CfP/03f+/QBcd6aEzU8H6V/bfiHT7Ty/uPvf8A 3K0iZyPtRH2JHH5f3K6YASed89ZVALiOlIouJNHQBoI9ZFklAFj5KgCXfH/foAf8lAEiQps+/QBZ 8lP+elAB5Kf89KAP57k717pyFxHoA1IXoNTUT7lAFhE+egDoLNKANREoA0ESmBchR/8AnnQM1IaA NSzegDoLab56QHSWc1SUzoIbmgxZ0lnef6z/AHKxq7GkT8W/ivpv/CK/GTxRAibI01V3T/cf568m ruaI9gs3Say31Iz1Twf8+l+X/wA8HoBmxeWfy1Zkz3z4OTb/AA/qFj/zwmegD1x+1AFegCu+z92j 0BE8L+K/wx1Lxb/Z/iPwdOln480tNiTyfcu4P+eMlBoj5/vNY1XR57yDxb8PNes7xPvyWEPmQyf9 c5KBlO2fx/48ePTfA/g680HS/uTa1qyeX8n/AEzoA+iPAfgDQ/AGmyWtpvm1R/8Aj5v5PvzvQB2D vQBTftTQme6fBnRI4YtQ8QTx/ffYlaxM5HvFdMAJESsaoFxEpFFxE3UmBoIm2syy5QAVABQBJQBJ v9qADf7UAG/2oA/n7r3TkLkNAGxDQBoJ3oA0E70AdBY0Abid6aAuInyVsgNFPuUykPhoNkakLx0m SasP3zWLA6OzqAOktk30AdRZpGn/AHxVNaFH5f8A7Znh6PR/ihZ6xBH+71SzSb/vj5P/AGnXk4la gV9EdJtNs50/uI9YFnrHgP5/7Qg/4HQDO8ezoMmd58Jbnyb/AFTTv78O+gD3yagCvQBXdN1AEmz/ AGKAK833ZPuf9dKAObuf+ee/93/BHQBjv2oAz37UAV/nmfyI/wDWb9lOAH1Z4Y8jTdD0/Sk/5Yff rqiB2EN/v/eJVAaCTb6GBqQvWEijYh8usmBoUiwT79AElABQBYoAKACgCT5KAPwDTvXunISJ3oA1 IaANBO9AGonemB0FnQBqJ8lCAuI9bICxv9qZSLkNBqiwn36TJNi171iwOks6gDoLN9lFhnSWc0n9 /Z8lbtaFHx/+2l4b/tLwl4X8TwQb5NLmeym/3HrysRHUD5f+GM32nS/sm/8A1HyJXEWfQHhV/seq f9d02UAz0SZKDJmx4JvP7K8YaXP/AMs3fZ/wB6APpygCN+1AFegCv/HQBUuPv0AZT9qAMO67UAY7 9qAM+HUrTTb2Oef/AFlOAHpmm+PEd66ogeoaJ4hS58uqA9Qs/LegDoE8v+CsJFGpZ1kwLiffpFli gAoAKAJPnoAPnoAPnoAPnoA/A9O9e6chInegDUhoA0E700BoJ3rcDUhfZQBsQvQBcR6ALkL0AaG/ 2oGSI9AjctnoA3IX+egDoIZqANyGasJCRzfxR8PQeKvhz4o0Z4/9ZDvT/frGRsj8p/hveSab4j1D Tb7em9P9X/t15FVamx9QWHmQ3tnP/cpQQM9k2ed8/wDz0SgyZnzI8Plzp/rE2UAfVmm38epadp93 H/y3T56ALGzZ8lAFegBX+5QBjzffFAGU/agDDmoAx7yaCGKSeT/VpQB8z6x4te/1S8eP/V76APTP DF/PNFHIaaA+hPCt/s/5aV0RA+gNE1JJkjrZAdonlv8A8tKhlG5ZpWLA1E+/UFligAqACgCSgAoA Nz0AG56APwLRHr3TkLiJQBoIj0AaCd6aA0E71ugNBO9AGpa96ALCffoAub/agCx51AEkL0AbEM2y gDchmoA6SGagDYhuawkJG4k29Nn399ZNGyPzL+NPhX/hA/iXqF3An+j3T/bYfL/uP9+vMqRNj1zR Jkv7Wzu0+eORKUEB65prxvFH/sVkzJliZN60AesfDTUkewvNGn/1kD70oA9MftQBn0ARzfcFAGG/ 36AKd12oAw5vuCgDxP4neKo7a1/sa0k/0h/v/wDTOgDw/RNNn1K/jT/ln/HQB9CaVZ/Y08tP9XQg O80rUvJ8v95XTED2zwxrG9P9ZWqA9s0q886KOSpZR2Fs/wAlYsDUR6gsN/tQAb/aoAuUAG/2oAN/ tQAbnoANz0Afg2iV7p55oIlAGgiUAXNnvTQEieZW6AsJ5lAG5a96BokoNkWETdQSWNnvQBchoA1E 8ugDUh8ugDchegDUhegDYhvO3mUWA8f+OvgaPxb4S/tGCDfqGkb3/wBuRK5KtLlVzVM+Z/hXqX7r UPD7yf6Zavvh/wCmleVVlys1TPoTR5pPN8j+/WRmdRQBJpuq/wBiapb6in+r3/vqAPohJkmijeD/ AFbpvSSgCu70AV5n+SgDLf79AFO67UAed+NvFVp4V06Sef57x02JH/t0AfI800+sX8l3J8949AHs nhjw9HptnHI8f7x/v00B3iJs+5WiAlh++aXUDv8Awxf+S/8ArK2QH0R4Y1JHSOOrKPULCbetDA6B PLrIsk3+1AFj5KyAk+SgAqACgAoAKAPwrRK9088ufcoAsJ89AGin3KaAtp3rdAFAGpa96BokoNkW IaCSx89AFhJtlAEiTR0AakMyUAaiXlAGol5QBqQzR/u3oA2EdHSRJPn3/I9Y1ZcysCZ8N/E7wNqX gPxRHrmh7/7PnffD5f8A6BXlVaXM7mqZ6ZoOpJqthZ6lav8A7/8A0zeuUZ6hZv5yUAE0O9fk/wBX QK52HgzxbHYN/YesT7I/+WMkn/LOgdtLnqn/AI/H/BJ/z0oFuRuj/wBx6BmW/wAlAeZxfi3xbpXh Kz8/Up9l46fuYP45KAs9z5D8Sa9qPiS9/tK7fZH/AAR/886BHYeBvDaTP/aU6UD2PWPJ+Ty6a3Fe xG77a0QPTcIX+fzKXUZ0mlTbG8ytkHke2eEr/Y0f7yrK2PfNHfelAHSp9ysi7j6ALG/2rIPMk3+1 FgLG/wBqjyDzDf7UeQBv9qAt1Df7UB5n4bp3r37Hnmhs96LAXIaLAWNnvRYCx9ytgJNnvQBch+/s oNS5s96AJIaCrlz5KAuGz3oC4fcegLlyF46CTYTvQBcRKANyHy6AZsQum2sWjDqZ+seHtN8SaXJp Wox/u3+5J/zzpOOhtE+R9Y0rxH8Ltejee0d9Hf5Hkj+5s/8Ai68yeGa1Oi56poniG0mePyH3x1xy i4hdHoEL+d+8j/1dF9OUc6UJ0OVPUv2/gvxD4jguLrRPDuqX1mj7HnsbN503/wBz5Kzt7F3kQ6lT 6v7KCOs0rSfi1ocUVvP4B8Q3lgn3P+JbPvj/APHK0Ura9ghKnScbxt3fc6iFfFjoJJPh14y8w/ej /sef/wCIrVU42tfYFKFWMb6Pt3PH/in4m+Mmi2Ulj4K+Cnji/wBYdP3M8fh6+nSD/tpspczgrFzh J4ZwTPCrD4RfGq/WPUfE3w+8ZXmqzfvHeTRbr/vj7lYc8qbuybYiNB0+p0um/Bj4pXN1Gl38N/Ey RSP/AKx9Iuk8v/xynKPtFK3Wxp7CCj+8laTPdLP4YeOrKxjt08Ga7n0/s6f/AOIronao5W62MeSt Xl7+iZbb4f8Aj1cgeCfEB+mnT/8AxFYpShr2BxjObp2vy7va5jzfDz4gb8f8IL4gz/2C5/8A4ito 1JR07GmIoxnFzUr23W1v8xYfh38Qf+hE8Qf+Cqf/AOIqpycifZzXu397ualn4C8fI2ZPBHiDH/YO n/8AiKcJOO4+Sbk4t+91Z6doPhbxjC0ZuPDOsoP+mljP/wDEVrNpiqTjKPtbcyj8vwPorw/pmrx2 sf2jTLuOT/ppC9KEo9wp04wj7bm5k+h1qWd9t/48bn/vzUpxjpc6PZ0X+8T3E+y3n/Pncf8Afp6U VGLvczlJJuquo/7FeZI+xS/981o4Uo2s9y5zoKhCilzT+4l+zX3T7LLn/crB15LZb/gY+2hOjOkl yzlbTfYeYLzG420uPXbXNBcuI53sOrVeCw0oS1bsSfZLnj/Rpf8AvmtI0VHEOpfQ0U3KlKrDd2D7 Hdcf6LN/3zRFKDMo15ylOlb3JfoK1vMq+Y8LJH/tpU1Pe2KUvaOnF/BqfiYltX0tjhLn2X3osBYS GiwEmz3osBIiUwLiIlAEiJ89BqWKABPkoM7lhH3UBck3+1AXCgLgj0GhqI9AGpDNQBsQvQDNSF6V jDqbFs8dFjZFy5sNN1W1ksdRgSazf78clOUE0Xc8zm+DmhpdefoE76bH/wA8K5J4VSC99DQs/A2u WDybLqGaP/nnJXDVoclRJGbpTw9Tlvoe52k/iTwV+zr488S6b4o1LQNR0W4vtRjbTYrNxdsltHsS T7RFN8m8L90I/wDXyc8q/VoXXQ+o4Ww8MxxsKEocybs99uuz7fI7JtT+IPhLS/hTp2tfFXX9Q8W+ MNQsUlEmkabIkflwPdXcMaIkXlRuI3j8xvOdPl93Eyrx5qEX9q99uiPoaeFwuLeImsNFQpJ396Wl 3aLbu77bKyepveCv2hNf8T6Pf66fhV4jmgm1q60vSLOw+yyyXEVqmyaaabzvs8I8+OdPnkTOF278 1xYXMlUp05a+82vuObNOF6ODqqi8RFSik5Xvo5bJK13o/wAHe2l79l+094Q1m18FS+HvD/iDVtQ8 T6Pc6zY2FjbQCVIoWjV0laSZER9zNzv2fuz8/Kb9MTmcYVYwjsZ1eCsfhJVpVWkqTSd3u5JNW+TT PVvCXxE0Hxj8PtH+IekGaLRNSsTfxG5TY6Jsz847NXZisTGFHnPKxuTYnA5k8BV+KLSfnfY+TvgN 8QvGXxC0fwfrHi34q/EGDXtXdro6ZY+DIxpnlO7PEn219K2eX5OzL+d/wOubAYrnoxck7u/kvLof UcZZPgMqxNTD4LCwcI8qv7S8rtK+nP0d9LHq+gftK+Edc1fw5p6+HvEEWlazrl5oNvrc0MK2jXcH mgL/AK3e6P5L7HjR07OUYOEWDxntGmr2baPMxvB2Ly+FRwkuaEVJxu7pO2u3nrr/AMGzbftL+Fry /wBBS08O6/PpHiLVzoujawkMIt9SmR5EmdP3u9I0McmXkRN+35N/FOnmlOpVpU19q/4BU4OxNKFW UpRjKik5xvqubbpb11007o5rw/8AH62s4Fv9Uude8Qt4p8WX2k+H9OstLtoWtktldSiFJTvh328h 86Rgf3nzrGnIVPM4VKdKevvOS+46cVwjiFKcVFQVKMZTbbd+ba+mj8rfNnT6f+0h4X1jTtFn03w7 r1x4o1a/v9Nt/C6R2323zbNyLjczTCBVTbnf52z50H3yEq4ZnB/fY48RwhjaVOrOVvZ01FylfS09 I26u/p+hm3P7U/gP/hG9H8RaLo+va1JeaTLrk2l6ZbwG606yiZ0me5WWVE+R0kTYjM7tG+wPinLM oN+7qrXKfBmPw8qlGtaKhKMW293JXilZPda9NN+peuf2kvCL66nhzQtG1zWr1rKw1QXul2YltVtL pZGWZ3Zl2Ikce99+3IdAm9zsqKmOSe+m/wAiqHBmIdGOIm4xhNuKTerknay367Wvscr4L/aDWDw3 8PbLUx4j8YeMPFumX3iC1Wy0u0s5BaJLvSN084JEPKkjRHd8OUPz72RC6WMu7O/c6MdwhUhXxU4c sKVOUY/E2rtbJ2u/PTTromzsLT9pPwhquneDrzQNF17Vb7X9MbW/7PsreESadYK4R57gvKqYRyF2 I7yMc7EfFGKxnJVUY7bnnVOEMThcTUoVWo8rjHV6NySatp2d/I7nwh8TtJ8X/DK2+JunwXNrodza TXkIvkRJfJQv85wzcNs3D2610YvEqFPmicuMyOpgs3lldWzknFabe9b/ADPiL4c/Hvx9eQfCfV4/ ifJ478SatFeah4j8I6ZDpKxaZYpBI+4uiI9uySG2T99N8zP+XkwxEoxTm7p6z207eh+jZlwxlCq4 ujToqjCHIoTcpXcpW0td8ybu/dWi+89v0H9qi0uPBWkeJda8DazLrd7p114gfRNFa2nez0hJH8m7 kZ5kT549mEzvdw+xDsNd1HMVdKa9615eS6M+ax/B8qOMnhsPXjKEWoqTTV5NfDazf5q273t658Tf iTBoXwP8V/E7wvfQvAmhSalpl2SPLkZ4t9u3zdmZk/OtMxrKhQqVL7Wt+h4GTZS8Xm9PBYhX96zX kvi28kzO1P4gat8MvgbD498YW13r+uaXosNzqBtvIhe5nCJvf+BFUvk4Tt91G4FGZY1UcPOa6Jfi dFHKf7UztZXhHZOTS32V/wAbd/nY8+1b9pCTQvCsk+r+ENZbxNpOiW+p+Io9MFvPbeHWnQlPPkeY M/3JGAhEj7PnZBkVzTxbte3S562C4TeJzCnQUkoTk1Ft25uXe2ny7X0T1V/V/hPq/ibWfg/4J1jx neS3Pii90m2ur6eSGOF/tDqrn5EVEX73tivTwV6iTl1Pl+IsPRy/M61Kh/Ci7Lrtoz8nEhjr6g+a Lnk0AHk0AHk0ASJDQBIiUAWESgCTalABs96ACFKALGz3oANnvQBHs+egC4iUAXE70G1zcte9AXNi GgxNi2SgDUhSgdzYhShjvfQ0ESikk1qJwhhqlr3ueoRfDiT4qfB3X/BI1j+zINQ1VPtF3HF53mQr 5Dun3kzvCFN9fOZrh/aScXsz6LhfN3w/i/rfLe17dN1b9T1LxL8MpPEnjz4d+Mptda3tfCMF+LbT ltxmaa5iWHzd+/8Agj8wbdn/AC0rkqYKE5J9jry3iD2ODxOGdG/tnG7b/llf8T5/uv2RdVl8M+Df C918QNLv9N0FNRjNtq3hz7Xb3D3Mm/7V5L3O37WheX98+9D5hwiV5f8AY0VJW2/rW19z6yHiDCeL r4mWGs6rg3aVnaH2b8t+V2V0rPfU6vw1+zGvhi2uIrTxkhvk8ExeDrO5GmkCzILu9xt87Db3dGKf 9M/v811V8DGbnbtFHlZhxu8XiVXdH/l57R6316Lba2h6fB8LZ9P+Cg+EOja79idNCOiwauLbf5X7 ryfO8rfz/fxv/GuzMsNDEQm0raJfceNPPo184/tKpTuubmtf5pXt+hj+Afh58SvA+maN4abx94bu PDGmWcdlFbW/hi4t7kRpHsTEzX8i7uE6pWbpucIxSWi8/wDM6MfnGEzOs8T9WlFybbTmmt77ct7f NnF6Z+zxH4Q0f4PxRa5catbfDm31Kd7GCxRJdcuriF0MmWlCI5eSZ+Ty7/eQA55fqDnZdEezU4yq 5hUxb5FB4h003f4eS3ltpr+Nzw74Q+B/FeseIfgxoVpdeIP+EJ8DW+o6ig8Q+FJ9HmtJJY3jt7WV 5m2XEyedJ88O1Nid94esVgJU3Gy0XdWPfzniGhGljqrpx9piPZr3ZqWkbJ200Tt1vrv0PoHwD+zt H4Rm+El7N4qN83gm01ZMNY+X9uvL9w81znednPmfJ83+s+9xz2wwfJaPb9T5zNeLp4365FUbfWPZ 3tLZQtZf1Y4y5/ZHspfC/gXS217RtR8ReHptSeS+8R+G11K0vTfStNKzWZmTayuEKP5nRSDu31yx yiEbO2uu+u51VPEOrKti5SotQqqGkZuLXJbZro9bprro1Yn139kPQb+90G70u88P26WekppF0NV8 JWN6CiTPKJbOEbIbeXfNOT+5dG3p8nyfNSyqC6K+2yfnp2MsNx5ONCrQnSlaUubSpJPa1pO7clon umn5Ox3ln8Axpel/GOx0fxHHZ3vje1gsLW7g05VXR7aG0FrCiQq6owT53wuxfn+767VssjUp1YL7 dvwPPxPGKlPAXoe7h3J25n7zlLmu203a9u7t16lG2/Z0XTbvULrSvFYtpR4Kh8G6YHsfMOmKnmf6 R/rBv3MYyU+T/V/e54VXAKVWpUX2oxX3FV+K7wUXS19p7Ru+76Lboup89+NPA+t/C3VLvRPh8/iu PxBaeB7bw1beV4UbULTxC2H8mWG9iYpZzRyF9/2nCfvA+x/v1yYyhKv7RwjraK2/HQ+nyrOaebyU 8dCLXtPaczqKLjbo003Jdktel0j6osvhNew/s92nwctteGmXv/CPJox1VLczeQ3lbGkEYdc/xcbx 1r0sZh3V50u0V9258hXztPP3mjp88eZu17X7dOh1t74At5fhZN8M9M1B7CJtFOkW9/DEN9uvleSr BfYVpi8LGrTlFdUl9x5v9sOGb/WnC65ua1/O5883/wCyRp+rf8Iq0mteG3v9N0SHQbmXU/CsWop9 mic+VJZLcTP9mmCvIhZ/OR+Mp8tcn9nxdRz02S2vt6n0z44q0q0koNRlJyspuLu1qm42ur620fmz 2T4o/B8/EX4T3nws0vW49CsJktIUkWx8yKKGGRH8ryo3i+QhAmFKYFXj6PtppHk5FxH/AGRmUczl Q5pLm0b6tWvfV/fcwvGHwq+IHxA+H3ijwF4p+IGhNDqEcCRTaT4cntfL8uVHdJEe/cujhNmEdDz9 6pzDBPE07NF5Xn9LJsdTzOFBuUebRyXVNbpb69fuOK8Yfs2eL/Ea/FK10n4mWumab8QLe0XVoJNA EzxzQwpAz27i5TYjxxpuRxIf7rioWE5fK+//AAD1cv42w9BYObwt3h/aWvJ68+3NpvHo0fU09rBp +i/ZIUxDAixgdPlGBXp0FyaHwOIxM8bOb6ydz8Yk719KeeWKACgAoAsJ3oAH7UASfwUACffoAkoA IaALlABQAUASQ0AWE+/QWbkP3DQBuWf3DQQdBb/coA1LOgg1LXvQwLid6dI5sQ37RH1D8GP+RV1D /r+f/wBAjryMb/EPZq/wInsR6iuEuOwh+8frT6GH2iopPmDk0TWj+R3tKxISfMPPalP4WSvhGRcv Hn3q+jHP4WSuSHXBoWx5U21NWZVmAVZdox8w6VNPVq5vmEn7Falok+dGM8YNUvhZi2/bQ1JT1/Kp OmfwxHN/Skil8SKTEiNuT1H8606o6re8h2T5s/PpUr4Y/MX2YkqqrAblBxjqM1wT0crGd2pOxFdE hRg44PT8K9GGpyYhtYeo/T8yweo+hrJmv20OH+rNETV/GMHSOm/iMqvxDU+5+P8AWre5dfb7ihAz GaPJPU1rUS5Gdk0uViaz/wAg24/4B/6GK54bnF9s/9kKZW5kc3RyZWFtCmVuZG9iago0NCAwIG9i ago8PC9SMzcKMzcgMCBSL1IxMQoxMSAwIFIvUjkKOSAwIFI+PgplbmRvYmoKNDUgMCBvYmoKPDwv U3VidHlwZS9UeXBlMUMvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA0NiAwIFI+PnN0cmVhbQp4 nFVWC1RTxxa9MeTeq0VQbiMCmkTBD0oFESrKR+UjYAFRBAW/CBEoSaD8saAitlYGamu1paj8FEQq giJqEQVErVoQqGiJGlA+mlb7altfz82b8N6bYF/fcq27smbm3jnZs88++4yAMhpDCQSCcX5yRZo8 JS4q0jCz460E/JQx/FRhLlb9y1mXKZpKBRx5Oh4ZC5GxUfkUY1MzeDYRik0hYwIlFAgyCoq8EhIz k+JiYlNks0NXr7WdO9fu/yvzFy1aJNua+b83Mm95clyMSjaTDNLkioREpVyV4irzIl8rFHFRshhF ZmJssiwyOloebdgWFqmQx8uWxyniEhMT0mSzvWxljg4O898hP45BccqtqcmykEhVsixAtloek6qI THpjkaIom4BlmaqoQM+EaK9Eufe2YJ+kmOXJsatT4kJS18QrIpVb18rsZ1LUO9R0KoJaSXlT8yhr KpjyoWyoVdRyagblS82nZlIhlB81i1pD+VMLqFBqBeVEhVHOVAAVSHlSQZQX5UIJqAkUQ80gjFJG lIR8eph6KJgl2CD4ZYzjmM/HgHC18IzwVyNbI5XRl0Y/iuJEBSKedqFP0I8ZislnvmOGWQvWnr05 1nrs9rH1Y8+P7RqngmoTvgVpdEyJ4KFWCMt0SvG8ESUfrsF62kRnj0ohQs07lAh4FSSI7+ME0R80 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 yA3eyHW909Y4jNjb3QGue0JClkXIEpnPI9sSzylYSb0lsvak16ztcu8Dmvjy1lBpYHeEIQKxcpVG 8dY7wd/ARuKxaVh0IbkvskMWa0qsCKhlJSN3uuvO3Jz1xO3yQqetxxZ4jMdWD1PBil9N6m2EhcLr rBKOd9nIuG8mertxz8oDyxywGHKJL1kIC4ixYbD/DCynQQ5DwovAdHDil4NEBEv4CxxY6D6QiPEj +hX8b08zejP7Uxy+VI4cQnvYwz4+h6NVFWcDpL6tEZVRiA2OUoccuRHyJTjDCz/AvOf7PsEii0xe Hl7gXMiOPxdfDXNFfJRgttfQPlgtNtN1d0z1V4klCKDxibFz4qe07W/Jn8EmWD/xZ0Wmtv8B0fBk xv/pGLnr6JJmURMsI8RdZWXRcuBofN/8p5s/Pb7yKwIJC2+uBDF2xNNXO+G5ePKHG0HU1VRY1Sz1 xcs2vIEXRLJggfe509rTWTmnMrLis5PJQBt9E1YDW3H2krlGF10uq1aWuaAdSHUqLOekYOy05NEX wybR//Lo96y95fKTx88FXRzs6iLHushjxhl5PyN4Gum2yeA4pa3NxgYcG21epKj/BC/9y3YKZW5k c3RyZWFtCmVuZG9iago1MCAwIG9iago1NDQ2CmVuZG9iagozNyAwIG9iago8PC9CYXNlRm9udC9Y QVJZQ1orSGVsdmV0aWNhL0ZvbnREZXNjcmlwdG9yIDM2IDAgUi9UeXBlL0ZvbnQKL0ZpcnN0Q2hh ciAzMi9MYXN0Q2hhciAxMjEvV2lkdGhzWwoyNzggMCAwIDAgMCAwIDY2NyAwIDAgMCAwIDAgMCAw IDAgMjc4CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAKMCA2NjcgNjY3IDcyMiA3MjIg NjY3IDYxMSAwIDAgMCAwIDAgNTU2IDgzMyAwIDAKNjY3IDAgNzIyIDY2NyA2MTEgMCAwIDk0NCAw IDAgMCAwIDAgMCAwIDAKMCA1NTYgNTU2IDUwMCA1NTYgNTU2IDI3OCA1NTYgNTU2IDIyMiAwIDUw MCAyMjIgODMzIDU1NiA1NTYKNTU2IDAgMzMzIDUwMCAyNzggNTU2IDAgMCAwIDUwMF0KL0VuY29k aW5nL1dpbkFuc2lFbmNvZGluZy9TdWJ0eXBlL1R5cGUxPj4KZW5kb2JqCjExIDAgb2JqCjw8L0Jh c2VGb250L0lTQURYQytUaW1lcy1Sb21hbi9Gb250RGVzY3JpcHRvciAxMCAwIFIvVHlwZS9Gb250 Ci9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTIyL1dpZHRoc1sKMjUwIDAgMCA1MDAgMCAwIDc3OCAw IDMzMyAzMzMgMCAwIDI1MCAzMzMgMjUwIDI3OAo1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAg NTAwIDUwMCA1MDAgMjc4IDI3OCAwIDAgMCAwCjkyMSA3MjIgNjY3IDY2NyA3MjIgNjExIDU1NiA3 MjIgNzIyIDMzMyAzODkgMCA2MTEgODg5IDcyMiA3MjIKNTU2IDAgNjY3IDU1NiA2MTEgNzIyIDcy MiA5NDQgMCAwIDAgMCAwIDAgMCAwCjAgNDQ0IDUwMCA0NDQgNTAwIDQ0NCAzMzMgNTAwIDUwMCAy NzggMjc4IDUwMCAyNzggNzc4IDUwMCA1MDAKNTAwIDUwMCAzMzMgMzg5IDI3OCA1MDAgNTAwIDcy MiA1MDAgNTAwIDQ0NF0KL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9TdWJ0eXBlL1R5cGUxPj4K ZW5kb2JqCjkgMCBvYmoKPDwvQmFzZUZvbnQvR1BERVdLK1RpbWVzLUJvbGQvRm9udERlc2NyaXB0 b3IgOCAwIFIvVHlwZS9Gb250Ci9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTMzL1dpZHRoc1sKMjUw IDAgMCAwIDAgMCA4MzMgMCAwIDAgMCAwIDI1MCAzMzMgMjUwIDAKMCA1MDAgNTAwIDUwMCA1MDAg NTAwIDAgNTAwIDAgNTAwIDMzMyAwIDAgMCAwIDAKMCA3MjIgNjY3IDcyMiA3MjIgNjY3IDYxMSA3 NzggNzc4IDM4OSAwIDAgNjY3IDk0NCA3MjIgNzc4CjYxMSAwIDcyMiA1NTYgNjY3IDAgNzIyIDAg MCAwIDY2NyAwIDAgMCAwIDAKMCA1MDAgNTU2IDQ0NCA1NTYgNDQ0IDMzMyA1MDAgNTU2IDI3OCAw IDU1NiAyNzggODMzIDU1NiA1MDAKNTU2IDU1NiA0NDQgMzg5IDMzMyA1NTYgNTAwIDcyMiAwIDUw MCA0NDQgMCAwIDAgMCAwCjAgMCAwIDAgMCAxMDAwXQovRW5jb2RpbmcvV2luQW5zaUVuY29kaW5n L1N1YnR5cGUvVHlwZTE+PgplbmRvYmoKMzYgMCBvYmoKPDwvVHlwZS9Gb250RGVzY3JpcHRvci9G b250TmFtZS9YQVJZQ1orSGVsdmV0aWNhL0ZvbnRCQm94Wy04IC0yMTggOTI5IDc0MV0vRmxhZ3Mg NAovQXNjZW50IDc0MQovQ2FwSGVpZ2h0IDc0MQovRGVzY2VudCAtMjE4Ci9JdGFsaWNBbmdsZSAw Ci9TdGVtViAxMzkKL01pc3NpbmdXaWR0aCAyNzgKL0NoYXJTZXQoL0wvQS95L24vYy9NL0Ivby9k L0MvcC9lL0QvZi9QL0Uvci9nL0Yvcy9oL1IvdC9pL1MvdS9UL2svbC9hL20vYi9XL3NwYWNlL3Ns YXNoL2FtcGVyc2FuZCkvRm9udEZpbGUzIDQ1IDAgUj4+CmVuZG9iagoxMCAwIG9iago8PC9UeXBl L0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0lTQURYQytUaW1lcy1Sb21hbi9Gb250QkJveFstNzAg LTIxOCA5MzIgNjg4XS9GbGFncyA0Ci9Bc2NlbnQgNjg4Ci9DYXBIZWlnaHQgNjg4Ci9EZXNjZW50 IC0yMTgKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDEzOQovTWlzc2luZ1dpZHRoIDI1MAovQ2hhclNl dCgvdHdvL0wvQS95L24vYy90aHJlZS9NL0Ivei9vL2QvZm91ci9OL0MvcC9lL2F0L2ZpdmUvTy9E L3EvZi9zaXgvUC9FL3IvZy9zZXZlbi9GL3MvaC9laWdodC9SL0cvdC9pL25pbmUvUy9IL3Uvai9j b2xvbi9UL0kvdi9rL3NlbWljb2xvbi9VL0ovdy9sL2EvVi94L20vYi9XL3BhcmVubGVmdC9wYXJl bnJpZ2h0L3NwYWNlL2NvbW1hL2h5cGhlbi9wZXJpb2QvbnVtYmVyc2lnbi9zbGFzaC96ZXJvL29u ZS9hbXBlcnNhbmQpL0ZvbnRGaWxlMyA0NyAwIFI+PgplbmRvYmoKOCAwIG9iago8PC9UeXBlL0Zv bnREZXNjcmlwdG9yL0ZvbnROYW1lL0dQREVXSytUaW1lcy1Cb2xkL0ZvbnRCQm94WzAgLTIwNiA5 MjEgNjkyXS9GbGFncyA0Ci9Bc2NlbnQgNjkyCi9DYXBIZWlnaHQgNjkyCi9EZXNjZW50IC0yMDYK L0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDEzOAovTWlzc2luZ1dpZHRoIDI1MAovQ2hhclNldCgvdHdv L0wvQS95L24vYy90aHJlZS9NL0Ivei9vL2QvZm91ci9OL0MvcC9lL1ovZml2ZS9PL0QvcS9mL1Av RS9yL2cvc2V2ZW4vRi9lbGxpcHNpcy9zL2gvUi9HL3QvaS9uaW5lL1MvSC91L2NvbG9uL1QvSS92 L2svdy9sL2EvVi9tL2Ivc3BhY2UvY29tbWEvaHlwaGVuL3BlcmlvZC9vbmUvYW1wZXJzYW5kKS9G b250RmlsZTMgNDkgMCBSPj4KZW5kb2JqCjIgMCBvYmoKPDwvUHJvZHVjZXIoR1BMIEdob3N0c2Ny aXB0IDguMTUpCi9DcmVhdGlvbkRhdGUoRDoyMDA5MDQxOTAyMTYwMSkKL01vZERhdGUoRDoyMDA5 MDQxOTAyMTYwMSkKL1RpdGxlKE1pY3Jvc29mdCBXb3JkIC0gVGl0YW5pdW0tUHJvZmlsZS13aXRo IEFub2Rlcy5kb2MpCi9DcmVhdG9yKFBTY3JpcHQ1LmRsbCBWZXJzaW9uIDUuMi4yKQovQXV0aG9y KEt1bWFyKT4+ZW5kb2JqCnhyZWYKMCA1MQowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMTUzNjQg MDAwMDAgbiAKMDAwMDIwMTgwNSAwMDAwMCBuIAowMDAwMDE1MjgyIDAwMDAwIG4gCjAwMDAwMTQ3 MjYgMDAwMDAgbiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDA0NDgwIDAwMDAwIG4gCjAwMDAw MTU0MTIgMDAwMDAgbiAKMDAwMDIwMTQyMCAwMDAwMCBuIAowMDAwMjAwMTkxIDAwMDAwIG4gCjAw MDAyMDA5NjYgMDAwMDAgbiAKMDAwMDE5OTcxNCAwMDAwMCBuIAowMDAwMDcyMjEzIDAwMDAwIG4g CjAwMDAwNjQ1MDQgMDAwMDAgbiAKMDAwMDA1MzI4MiAwMDAwMCBuIAowMDAwMDQ1MTIyIDAwMDAw IG4gCjAwMDAwMzcyNzkgMDAwMDAgbiAKMDAwMDAyODY2OSAwMDAwMCBuIAowMDAwMDIwMzIwIDAw MDAwIG4gCjAwMDAwMTU1OTIgMDAwMDAgbiAKMDAwMDAxNTQ1MyAwMDAwMCBuIAowMDAwMDE1NDgz IDAwMDAwIG4gCjAwMDAwODAyOTYgMDAwMDAgbiAKMDAwMDAxNDkxMCAwMDAwMCBuIAowMDAwMDA0 NTAwIDAwMDAwIG4gCjAwMDAwMDk5MTUgMDAwMDAgbiAKMDAwMDEwMjQzMSAwMDAwMCBuIAowMDAw MDkyNDMyIDAwMDAwIG4gCjAwMDAwODU5NzIgMDAwMDAgbiAKMDAwMDA4MDQzMiAwMDAwMCBuIAow MDAwMDgwMzM3IDAwMDAwIG4gCjAwMDAwODAzNjcgMDAwMDAgbiAKMDAwMDExMTQwOCAwMDAwMCBu IAowMDAwMDE1MDk2IDAwMDAwIG4gCjAwMDAwMDk5MzYgMDAwMDAgbiAKMDAwMDAxNDcwNSAwMDAw MCBuIAowMDAwMjAwNjY0IDAwMDAwIG4gCjAwMDAxOTkzMDcgMDAwMDAgbiAKMDAwMDE2NDI0MSAw MDAwMCBuIAowMDAwMTQwMjU4IDAwMDAwIG4gCjAwMDAxMjUxNjkgMDAwMDAgbiAKMDAwMDExMTU0 NCAwMDAwMCBuIAowMDAwMTExNDQ5IDAwMDAwIG4gCjAwMDAxMTE0NzkgMDAwMDAgbiAKMDAwMDE4 MzU5MCAwMDAwMCBuIAowMDAwMTgzNjQyIDAwMDAwIG4gCjAwMDAxODY1MzQgMDAwMDAgbiAKMDAw MDE4NjU1NSAwMDAwMCBuIAowMDAwMTkzNzMzIDAwMDAwIG4gCjAwMDAxOTM3NTQgMDAwMDAgbiAK MDAwMDE5OTI4NiAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDUxIC9Sb290IDEgMCBSIC9JbmZv IDIgMCBSCi9JRCBbKKFpG0yhUiNRdu2C6zTYjYMpKKFpG0yhUiNRdu2C6zTYjYMpXQo+PgpzdGFy dHhyZWYKMjAyMDI0CiUlRU9GCg== ------=_NextPart_000_027D_01C9D856.6E7C8090-- From vitaly.v.ch@gmail.com Tue May 19 00:05:43 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4J55bVK032149 for ; Tue, 19 May 2009 00:05:42 -0500 X-ASG-Debug-ID: 1242709856-665b020d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f177.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 87BA6FCBD2D for ; Mon, 18 May 2009 22:10:56 -0700 (PDT) Received: from mail-fx0-f177.google.com (mail-fx0-f177.google.com [209.85.220.177]) by cuda.sgi.com with ESMTP id UZJoJCd0pF69J1vC for ; Mon, 18 May 2009 22:10:56 -0700 (PDT) Received: by fxm25 with SMTP id 25so3667457fxm.20 for ; Mon, 18 May 2009 22:05:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=MyTWMj8UPrRbtmfFGcIfsofOzE2wEwrFCpRrOOYP6fU=; b=Pjh1TxGDpkHvS4uk0Nm02KQei9RnTmjGX1hRfDXWIKKA+VOrtoETsQ+CJNjkXU6kZG AHpXfqJ+hNlq4VZe1Zh1LKDitzgaM/aM4ztBTrIDhgju7/4X+22P2xPYeXgUTAwOaVE5 c0WrtymzLFdgEu8qKNletZsguXg29bAWt6Jjo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=TUgY4fmBSLENhj9seJjt21ro4h4BVqNcT55BZ4Gs83OvNN7Xj/3Et69DHVdSea0Lkt td8jLDqpAeULSaqkX8uHzZrrvh60/03dPHIvz7yeer8D3w4Uu/9SiMXUQSlAp4kzvuX5 Iffu14StM5zvCBQMKEcQFP+FQueyvnvIjtERY= MIME-Version: 1.0 Received: by 10.204.71.66 with SMTP id g2mr7603447bkj.19.1242709545576; Mon, 18 May 2009 22:05:45 -0700 (PDT) In-Reply-To: <4A11E27B.3010708@sandeen.net> References: <6efe08af0905130010g5e21f4d1w9efb4ed200b5b152@mail.gmail.com> <4A0B0A71.5010609@sandeen.net> <6efe08af0905140150g623d5564i5f5a06b5bf8543a5@mail.gmail.com> <6efe08af0905150135q317d3b7dy37907332c02510c2@mail.gmail.com> <4A0F0325.8000908@sandeen.net> <4A11E27B.3010708@sandeen.net> Date: Tue, 19 May 2009 05:05:45 +0000 Message-ID: <6efe08af0905182205q4e7712f3y91279df0f35d843e@mail.gmail.com> X-ASG-Orig-Subj: Re: xfs_repair after reboot refuse repair my filesystem Subject: Re: xfs_repair after reboot refuse repair my filesystem From: "Vitaly V. Ch" To: Eric Sandeen Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-fx0-f177.google.com[209.85.220.177] X-Barracuda-Start-Time: 1242709857 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26158 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean HI at now I get my data repaired. By default configure enable DEBUG mode. I force NDEBUG mode and xfs_repair successfully repair my data. \\wbr Vitaly Chernookiy On Mon, May 18, 2009 at 10:34 PM, Eric Sandeen wrote: > Eric Sandeen wrote: > >> Is that the first repair of the image? =A0When I repair it on my box it >> finds many more errors, and does not trip the assert. =A0I tested 3.0.1 = in >> fedora rawhide on x86 this time ... >> >> -Eric > > Oh, well, I'm dumb; the asserts do nothing unless you build with DEBUG > on (as I guess you must have... they are off by default, as they are on > my build) - I'll try to find some time to look into it. > > -Eric > From alexferro@tiscali.it Tue May 19 02:50:22 2009 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=BAYES_50,STOX_REPLY_TYPE, STOX_REPLY_TYPE_WITHOUT_QUOTES autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4J7oLKS035782 for ; Tue, 19 May 2009 02:50:22 -0500 X-ASG-Debug-ID: 1242719429-170d01f90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.gware.it (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 713D319E363F for ; Tue, 19 May 2009 00:50:30 -0700 (PDT) Received: from mail.gware.it ([80.94.126.121]) by cuda.sgi.com with SMTP id HojCwDQkrm6kvwP5 for ; Tue, 19 May 2009 00:50:30 -0700 (PDT) Received: (qmail 6131 invoked from network); 19 May 2009 07:50:30 -0000 Received: from unknown (HELO ferroamd64) (192.168.0.174) by mail.gware.it with SMTP; 19 May 2009 07:50:30 -0000 Message-ID: <005e01c9d856$7a89d450$ae00a8c0@ferroamd64> From: "Alessandro Ferrari" To: X-ASG-Orig-Subj: compilation error xfs_fsr.c:33:23 sys/xattr.h: No such file or directory Subject: compilation error xfs_fsr.c:33:23 sys/xattr.h: No such file or directory Date: Tue, 19 May 2009 09:50:28 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.3138 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3350 X-Antivirus: avast! (VPS 090518-0, 18/05/2009), Outbound message X-Antivirus-Status: Clean X-Barracuda-Connect: UNKNOWN[80.94.126.121] X-Barracuda-Start-Time: 1242719431 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5030 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.35 X-Barracuda-Spam-Status: No, SCORE=1.35 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_NONE, STOX_REPLY_TYPE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26162 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 STOX_REPLY_TYPE STOX_REPLY_TYPE 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Linux kernel 2.4.37 I have downloaded: - acl_2.2.47-1.tar.gz - attr_2.4.43-1.tar.gz - xfsprogs-3.0.1-tar.gz - xfsdump-3.0.1-tar.gz I compiled and installed this tarballs in this order: - acl_2.2.47-1 - attr_2.4.43-1 Now I have this error when I compile xfsprogs-3.0.1: xfs_fsr.c:33:23: sys/xattr.h: No such file or directory I have forgotten something? Thanks, alexferro From lists@nerdbynature.de Tue May 19 05:01:22 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4JA1Lrn039150 for ; Tue, 19 May 2009 05:01:21 -0500 X-ASG-Debug-ID: 1242727290-6eb400780000-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 74486296136 for ; Tue, 19 May 2009 03:01:30 -0700 (PDT) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.177]) by cuda.sgi.com with ESMTP id O4Q5wJMk4kE9jh0A for ; Tue, 19 May 2009 03:01:30 -0700 (PDT) Received: from bogon.housecafe.de (ppp-93-104-51-19.dynamic.mnet-online.de [93.104.51.19]) by mrelayeu.kundenserver.de (node=mrelayeu3) with ESMTP (Nemesis) id 0MKxQS-1M6M8W1VUI-0002EL; Tue, 19 May 2009 12:01:28 +0200 Received: from localhost ([127.0.0.1] helo=localhost.localdomain) by bogon.housecafe.de with esmtp (Exim 4.69) (envelope-from ) id 1M6M8Y-0002nC-AB; Tue, 19 May 2009 12:01:30 +0200 Date: Tue, 19 May 2009 03:01:30 -0700 (PDT) From: Christian Kujau To: Alessandro Ferrari cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: compilation error xfs_fsr.c:33:23 sys/xattr.h: No such file or directory Subject: Re: compilation error xfs_fsr.c:33:23 sys/xattr.h: No such file or directory In-Reply-To: <005e01c9d856$7a89d450$ae00a8c0@ferroamd64> Message-ID: References: <005e01c9d856$7a89d450$ae00a8c0@ferroamd64> User-Agent: Alpine 2.01 (DEB 1184 2008-12-16) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Provags-ID: V01U2FsdGVkX19cetXVuNPIJE6NTgTSb9HkAr8LHw5pkxy30OG 8A3Xl7fYKHHcvfO5yv2mQ7Qp6vmwOPm0FrTeN9z6tvi4NG5fE4 yro3xqq54HO61o2A09A1g== X-Barracuda-Connect: moutng.kundenserver.de[212.227.126.177] X-Barracuda-Start-Time: 1242727291 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26170 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, 19 May 2009, Alessandro Ferrari wrote: > Now I have this error when I compile xfsprogs-3.0.1: > xfs_fsr.c:33:23: sys/xattr.h: No such file or directory sys/xattr.h should be part of a libc6-dev (or glibc-headers) package your distribution provides, I think. Christian. -- SHA = "Schneier has access" From alexferro@tiscali.it Tue May 19 08:10:01 2009 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,STOX_REPLY_TYPE autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4JD9x4T045352 for ; Tue, 19 May 2009 08:10:01 -0500 X-ASG-Debug-ID: 1242738604-127b02920000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.gware.it (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 958B319E4C3A for ; Tue, 19 May 2009 06:10:04 -0700 (PDT) Received: from mail.gware.it ([80.94.126.121]) by cuda.sgi.com with SMTP id wziRkgPHrHm0mnY4 for ; Tue, 19 May 2009 06:10:04 -0700 (PDT) Received: (qmail 16398 invoked from network); 19 May 2009 13:10:05 -0000 Received: from unknown (HELO ferroamd64) (192.168.0.174) by mail.gware.it with SMTP; 19 May 2009 13:10:05 -0000 Message-ID: <005601c9d883$1f378f20$ae00a8c0@ferroamd64> From: "Alessandro Ferrari" To: "Christian Kujau" Cc: References: <005e01c9d856$7a89d450$ae00a8c0@ferroamd64> X-ASG-Orig-Subj: Re: compilation error xfs_fsr.c:33:23 sys/xattr.h: No such file ordirectory Subject: Re: compilation error xfs_fsr.c:33:23 sys/xattr.h: No such file ordirectory Date: Tue, 19 May 2009 15:10:03 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.3138 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3350 X-Antivirus: avast! (VPS 090518-0, 18/05/2009), Outbound message X-Antivirus-Status: Clean X-Barracuda-Connect: UNKNOWN[80.94.126.121] X-Barracuda-Start-Time: 1242738609 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4756 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_NONE, STOX_REPLY_TYPE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26181 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 STOX_REPLY_TYPE STOX_REPLY_TYPE 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Chtistian! > > sys/xattr.h should be part of a libc6-dev (or glibc-headers) package your > distribution provides, I think. > > Christian. > -- > SHA = "Schneier has access" I searched xattr.h and I founded it into: - /usr/src/linux/include/linux/xattr.h dated 02/Dec/2008 09:01 (when I compiled my kernel 2.4.37) - /usr/include/linux/xattr.h dated 07/Mar/2002 - /usr/include/attr/xattr.h dated 18/May/2009 21:16 (when I compiled and installed attr_2.4.43-1 tarball) I am very confused?!?! Which is xattr.h correct for in xfs_fsr.c file ? Alessandro From josh@pha.jhu.edu Tue May 19 09:11:26 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4JEBQXj047818 for ; Tue, 19 May 2009 09:11:26 -0500 X-ASG-Debug-ID: 1242742295-7b2403240000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from concorde.pha.jhu.edu (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9476C296F49 for ; Tue, 19 May 2009 07:11:36 -0700 (PDT) Received: from concorde.pha.jhu.edu (concorde.pha.jhu.edu [128.220.143.18]) by cuda.sgi.com with ESMTP id ALxFjz3KImEACiVW for ; Tue, 19 May 2009 07:11:36 -0700 (PDT) Received: from [128.220.233.109] (cue.pha.jhu.edu [128.220.233.109]) (authenticated bits=0) by concorde.pha.jhu.edu (8.13.1/8.13.1) with ESMTP id n4JEBXTu014659 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Tue, 19 May 2009 10:11:34 -0400 Message-ID: <4A12BE15.3080908@pha.jhu.edu> Date: Tue, 19 May 2009 10:11:33 -0400 From: Josh Greenberg User-Agent: Thunderbird 2.0.0.21 (X11/20090324) MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: question on agcount and agsize Subject: question on agcount and agsize Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: concorde.pha.jhu.edu[128.220.143.18] X-Barracuda-Start-Time: 1242742296 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26185 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I've just installed xfs for the first time and I'm trying to put an xfs file system on a large disk. When I just tried with no arguments, it told me that the agsize was too large and the maximum is 268435455 blocks. I wasn't familiar with allocation groups at all so I researched this a little bit. I found out what an allocation group is but there aren't many recommendations on agcount other than "don't make it too big" because it slows the disk down as it gets full. However, after playing with the numbers, I found that the lowest number it will accept for agcount is 44. I now have a file system with the following structure: meta-data=/dev/md0 isize=256 agcount=44, agsize=266361205 blks = sectsz=512 data = bsize=4096 blocks=11719892992, imaxpct=25 = sunit=0 swidth=0 blks, unwritten=1 naming =version 2 bsize=4096 log =internal log bsize=4096 blocks=32768, version=1 = sectsz=512 sunit=0 blks realtime =none extsz=65536 blocks=0, rtextents=0 I have two questions: 1. Does the agcount have to be a power of 2? Almost every example of agcount I've seen online has been a power of 2 (2, 4, 8, 16, and 32). I originally tried an agcount of 64 which worked but then tried to size it down so it wasn't too large. Will this cause problems later. 2. Is 44 too large? Will I experience a slow down as the disk fills? I've seen people recommend that you not go over agcount=32 and even someone who said not to exceed agcount=8. What are the long term ramifications of this? Thanks, Josh From sandeen@sandeen.net Tue May 19 10:13:32 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4JFDVAA051152 for ; Tue, 19 May 2009 10:13:31 -0500 X-ASG-Debug-ID: 1242746333-62b601ce0000-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 E28BCFCB2CC for ; Tue, 19 May 2009 08:18:53 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id OeAFO81QT08tpYpE for ; Tue, 19 May 2009 08:18:53 -0700 (PDT) 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 n4JFDepB001114; Tue, 19 May 2009 11:13:40 -0400 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 n4JFDdOY013410; Tue, 19 May 2009 11:13:39 -0400 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 n4JFDcxG004098; Tue, 19 May 2009 11:13:39 -0400 Message-ID: <4A12CCA2.3030003@sandeen.net> Date: Tue, 19 May 2009 10:13:38 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Josh Greenberg CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: question on agcount and agsize Subject: Re: question on agcount and agsize References: <4A12BE15.3080908@pha.jhu.edu> In-Reply-To: <4A12BE15.3080908@pha.jhu.edu> 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: 1242746333 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26188 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Josh Greenberg wrote: > I've just installed xfs for the first time and I'm trying to put an xfs > file system on a large disk. When I just tried with no arguments, it > told me that the agsize was too large and the maximum is 268435455 > blocks. Odd, mkfs.xfs w/ no args should always work. Which version of e2fsprogs? How big is the block device (from /proc/partitions?) > I wasn't familiar with allocation groups at all so I researched > this a little bit. I found out what an allocation group is but there > aren't many recommendations on agcount other than "don't make it too > big" because it slows the disk down as it gets full. However, after > playing with the numbers, I found that the lowest number it will accept > for agcount is 44. I now have a file system with the following structure: > > meta-data=/dev/md0 isize=256 agcount=44, agsize=266361205 blks > = sectsz=512 > data = bsize=4096 blocks=11719892992, imaxpct=25 > = sunit=0 swidth=0 blks, unwritten=1 > naming =version 2 bsize=4096 > log =internal log bsize=4096 blocks=32768, version=1 > = sectsz=512 sunit=0 blks > realtime =none extsz=65536 blocks=0, rtextents=0 > 43T, nice :) > I have two questions: > 1. Does the agcount have to be a power of 2? Almost every example of > agcount I've seen online has been a power of 2 (2, 4, 8, 16, and 32). nope > I > originally tried an agcount of 64 which worked but then tried to size it > down so it wasn't too large. Will this cause problems later. No, this is likely fine. This should be the default; for filesystems > 32T it should max the AG size and give you 1 AG per Terabyte. > 2. Is 44 too large? Will I experience a slow down as the disk fills? > I've seen people recommend that you not go over agcount=32 and even > someone who said not to exceed agcount=8. What are the long term > ramifications of this? well, smaller agcount -> larger AG. There's also a limit to the AG size (1T IIRC), so there is no hard upper limit on ag count; bigger filesystems will eventually require more AGs. The upstream default is 4 AGs for smaller filesystems, but for 43T I think the default is to go to 1T AGs. Subdirectories spread out over AGs (each new subdir's files go to a new AG, in general, all other things being equal) so for smaller filesystems, 8 or 16 AGs was getting a little painful because stuff was being flung all over the disk. One thing you probably do want to do, however, is match the xfs geometry to your raid geometry, and specify sunit/swidth or su/sw combinations at mkfs time. mkfs.xfs gets this geometry from lvm/md/evms/etc but can't get it from a hardware raid; you'll need to input that yourself. -Eric From lists@nerdbynature.de Tue May 19 11:46:08 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_21 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4JGk6WV055937 for ; Tue, 19 May 2009 11:46:07 -0500 X-ASG-Debug-ID: 1242751887-144a021d0000-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 E8FB3FCFA63 for ; Tue, 19 May 2009 09:51:28 -0700 (PDT) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.187]) by cuda.sgi.com with ESMTP id vywvFOHsBoLkLHeE for ; Tue, 19 May 2009 09:51:28 -0700 (PDT) Received: from bogon.housecafe.de (ppp-93-104-70-45.dynamic.mnet-online.de [93.104.70.45]) by mrelayeu.kundenserver.de (node=mreu1) with ESMTP (Nemesis) id 0MKv1o-1M6SSD3KET-000jLi; Tue, 19 May 2009 18:46:14 +0200 Received: from localhost ([127.0.0.1] helo=localhost.localdomain) by bogon.housecafe.de with esmtp (Exim 4.69) (envelope-from ) id 1M6SSE-0002jF-9c; Tue, 19 May 2009 18:46:14 +0200 Date: Tue, 19 May 2009 09:46:14 -0700 (PDT) From: Christian Kujau To: Alessandro Ferrari cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: compilation error xfs_fsr.c:33:23 sys/xattr.h: No such file ordirectory Subject: Re: compilation error xfs_fsr.c:33:23 sys/xattr.h: No such file ordirectory In-Reply-To: <005601c9d883$1f378f20$ae00a8c0@ferroamd64> Message-ID: References: <005e01c9d856$7a89d450$ae00a8c0@ferroamd64> <005601c9d883$1f378f20$ae00a8c0@ferroamd64> User-Agent: Alpine 2.01 (DEB 1184 2008-12-16) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Provags-ID: V01U2FsdGVkX19i9D713eS0TCTRulwEDcZJRtb6zK2pdHziOsU U4s6WtJpH8kj5m28RNbXL6ovoz1EhNbmzhlQaejspwj4+L7fon sOV4hXKz5LgXxSB1okXyw== X-Barracuda-Connect: moutng.kundenserver.de[212.227.126.187] X-Barracuda-Start-Time: 1242751889 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26193 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, 19 May 2009, Alessandro Ferrari wrote: > I searched xattr.h and I founded it into: Apparently there's no sys/xattr.h on your system. What distribution do you have? You'll need to install either the libc6-dev or glibc-headers package, depending on which package of your distribution provides this file. Christian. -- Vs lbh nfxrq Oehpr Fpuarvre gb qrpelcg guvf, ur'q pehfu lbhe fxhyy jvgu uvf ynhtu. From barr.smithrobert@gmail.com Tue May 19 21:24:21 2009 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_05,URIBL_SBL autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4K2OLO9079979 for ; Tue, 19 May 2009 21:24:21 -0500 X-ASG-Debug-ID: 1242786269-358a00440000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from webmail.icp-qv1-irony-out4.iinet.net.au (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5C2FC19E2EAE for ; Tue, 19 May 2009 19:24:30 -0700 (PDT) Received: from webmail.icp-qv1-irony-out4.iinet.net.au (webmail.icp-qv1-irony-out4.iinet.net.au [203.59.1.152]) by cuda.sgi.com with ESMTP id r5BmwruhopIDxo9f for ; Tue, 19 May 2009 19:24:30 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Aq8ZAGMGE0oKAikm/2dsb2JhbAAIkFysUgiRZYQDBYYo X-IronPort-AV: E=Sophos;i="4.41,218,1241366400"; d="scan'208";a="370404582" Received: from unknown (HELO iinet-qmail-sat.iinet.net.au) ([10.2.41.38]) by webmail.icp-qv1-irony-out4.iinet.net.au with SMTP; 20 May 2009 10:24:28 +0800 Received: (qmail 14445 invoked from network); 20 May 2009 02:24:26 -0000 Received: from unknown (HELO localhost.localdomain) (127.0.0.1) by mail.iinet.net.au with SMTP; 20 May 2009 02:24:26 -0000 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 From: "Barr.Smith Robert" To: info@lawfirm.com X-ASG-Orig-Subj: Business partner Subject: Business partner Reply-To: barr.smithrobert@gmail.com X-Origin: 217.21.79.211 Date: Wed, 20 May 2009 10:24:26 +0800 Message-Id: <3339.1242786266@iinet.net.au> X-Mailer: AtMail 4.51 - 217.21.79.211 - infowebs@iinet.net.au X-Barracuda-Connect: webmail.icp-qv1-irony-out4.iinet.net.au[203.59.1.152] X-Barracuda-Start-Time: 1242786271 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5871 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.75 X-Barracuda-Spam-Status: No, SCORE=0.75 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26232 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Business partner is needed (Deal) if interested contact me for more details= via=20 email barr.smithrobert@w.cn Thanks, Barr. Smith Rober From milind@gslab.com Wed May 20 00:43:29 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4K5hSbt090893 for ; Wed, 20 May 2009 00:43:29 -0500 X-ASG-Debug-ID: 1242798216-079303490000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from padma.gslab.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 692CA299FCD for ; Tue, 19 May 2009 22:43:36 -0700 (PDT) Received: from padma.gslab.com (padma.gslab.com [59.163.66.102]) by cuda.sgi.com with SMTP id l6PdIVegFNgrpRrw for ; Tue, 19 May 2009 22:43:36 -0700 (PDT) Received: from [172.20.25.198] (unknown [172.20.25.198]) (Authenticated sender: milind) by padma.gslab.com (Postfix) with ESMTP id 9793D1770207; Wed, 20 May 2009 11:13:35 +0530 (IST) X-ASG-Orig-Subj: Re: EXT vs XFS at 80% filled filesystem Subject: Re: EXT vs XFS at 80% filled filesystem From: Milind To: Theodore Tso Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com In-Reply-To: <20090518131755.GJ32019@mit.edu> References: <49F9565E.40804@gslab.com> <20090430183450.GB19276@mit.edu> <1242651808.3339.28.camel@alhena> <20090518131755.GJ32019@mit.edu> Content-Type: text/plain Date: Wed, 20 May 2009 11:13:30 +0530 Message-Id: <1242798210.3457.4.camel@alhena> Mime-Version: 1.0 X-Mailer: Evolution 2.26.1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: padma.gslab.com[59.163.66.102] X-Barracuda-Start-Time: 1242798218 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.26244 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I am building xfsprogs to add it to my toolchain and want xfsprogs to refer to my toolchain's libuuid. So I need libuuid.so in my toolchain. But building e2fsprogs from sources doesn't build libuuid as .so (builds as .a). Could you please give some pointers on building libuuid as .so? Do I have to change Makefiles? How do you do it for ubuntu/debian packages that you maintain? Thanks in advance -Miline On Mon, 2009-05-18 at 09:17 -0400, Theodore Tso wrote: > On Mon, May 18, 2009 at 06:33:28PM +0530, Milind wrote: > > Hi Theodore, > > > > I am facing some weird problem of cross compiling libuuid sources. I > > downloaded e2fsprogs and cross-compiled them but when I do "make > > install-libs" it doesn't really install libuuid.so but installs > > libuuid.a. > > The "make install" taret is designed to install what is needed to run > the e2fsprogs programs, including shared libraries; "make > install-libs" is designed to install what as needed for development > purpoes. > > So running "make install" in the lib/uuid" should do what you want. > > - Ted > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From stunnel@attglobal.net Wed May 20 01:58:30 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4K6wTA9095330 for ; Wed, 20 May 2009 01:58:30 -0500 X-ASG-Debug-ID: 1242802718-1d2402ea0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from kcout02.prserv.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3672A19EED77 for ; Tue, 19 May 2009 23:58:38 -0700 (PDT) Received: from kcout02.prserv.net (kcout02.prserv.net [12.154.55.32]) by cuda.sgi.com with ESMTP id tSLC7D6IPoRE6iuX for ; Tue, 19 May 2009 23:58:38 -0700 (PDT) Received: from [127.0.0.1] (cpe-76-169-247-82.socal.res.rr.com[76.169.247.82]) by prserv.net (kcout02) with ESMTP id <20090520065837202008d6lue> (Authid: usinet.athertn); Wed, 20 May 2009 06:58:37 +0000 X-Originating-IP: [76.169.247.82] Message-ID: <4A13AA1B.7080801@attglobal.net> Date: Tue, 19 May 2009 23:58:35 -0700 From: Eddie Atherton Reply-To: stunnel@attglobal.net User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: XFS internal error xfs_trans_cancel at line 1164 of file fs/xfs/xfs_trans.c Subject: XFS internal error xfs_trans_cancel at line 1164 of file fs/xfs/xfs_trans.c Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: kcout02.prserv.net[12.154.55.32] X-Barracuda-Start-Time: 1242802719 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0278 1.0000 -1.8406 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.84 X-Barracuda-Spam-Status: No, SCORE=-1.84 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26249 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I'm trying to install a clean Slackware 12.2 (2.6.27.7) under ESXi, and can almost guarantee getting this error immediately after formatting the root partition. It's happened 4 out of the 5 times I've tried, so far. The sequence of commands, after digging through the install scripts, that lead to this failure are just: mkfs.xfs mount mkdir Apologies for posting the stack trace as a couple of jpg's, but it's the only way I could capture them, as I don't have any VMs set up, yet, that have conectivity to upload any files. The stack trace can be found at: http://www.bogolinux.net/xfs_crash_a.JPG http://www.bogolinux.net/xfs_crash_b.JPG I'm guessing that it's something to do with this running under a VM, but is there any way to stop it happening. Cheers, Eddie From SRS0+wXGl+74+fromorbit.com=david@internode.on.net Wed May 20 04:05:54 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4K95rX4098250 for ; Wed, 20 May 2009 04:05:54 -0500 X-ASG-Debug-ID: 1242810361-414d030d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0E9A719EF6B5 for ; Wed, 20 May 2009 02:06:01 -0700 (PDT) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id c9TupWdIcS6QC5Cf for ; Wed, 20 May 2009 02:06:01 -0700 (PDT) Received: from discord (unverified [121.44.1.36]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 37123-1927428 for multiple; Wed, 20 May 2009 18:36:00 +0930 (CST) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1M6hkM-00032y-7E; Wed, 20 May 2009 19:05:58 +1000 Date: Wed, 20 May 2009 19:05:58 +1000 From: Dave Chinner To: Alex Samad Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Kernel crash with 2.6.29 + nfs + xfs (radix-tree) Subject: Re: Kernel crash with 2.6.29 + nfs + xfs (radix-tree) Message-ID: <20090520090558.GQ16929@discord.disaster> References: <20090520003745.GA27491@samad.com.au> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090520003745.GA27491@samad.com.au> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1242810364 X-Barracuda-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.26256 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, May 20, 2009 at 10:37:45AM +1000, Alex Samad wrote: > Hi > > I have been quit a lot of crashes on my debian amd64 box in the 2.6.29 > series of kernel. Seems for me to be when the system is under load and > there is network action -> nfsd -> xfs. Perhaps a use after free or a reference counting problem. Thanks for reporting it. > May 5 19:45:38 x kernel: ------------[ cut here ]------------ > May 5 19:45:39 x kernel: kernel BUG at lib/radix-tree.c:485! > May 5 19:45:39 x kernel: invalid opcode: 0000 [#1] SMP > May 5 19:45:39 x kernel: last sysfs file: > /sys/block/sdc/queue/nr_requests > May 5 19:45:39 x kernel: CPU 0 > May 5 19:45:39 x kernel: Pid: 335, comm: kswapd0 Not tainted 2.6.29.2 #1 S2895 > May 5 19:45:39 x kernel: RIP: 0010:[] [] radix_tree_tag_set+0x86/0xc6 > May 5 19:45:39 x kernel: RSP: 0018:ffff88016e2d1c88 EFLAGS: 00010246 > May 5 19:45:39 x kernel: RAX: 0000000000000004 RBX: 0000000000000000 RCX: 0000000000000000 > May 5 19:45:39 x kernel: RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88016a822b58 > May 5 19:45:39 x kernel: RBP: 0000000000000004 R08: 0000000000000000 R09: 8000000000000000 > May 5 19:45:39 x kernel: R10: ffffa5a5a5a5a5a5 R11: ffffffff8037541d R12: 0000000000000001 > May 5 19:45:39 x kernel: R13: 0000000000000000 R14: ffff88016d1bc310 R15: 0000000000000000 > May 5 19:45:39 x kernel: FS: 00007fea1903f6e0(0000) GS:ffffffff80759040(0000) knlGS:0000000000000000 > May 5 19:45:39 x kernel: CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b > May 5 19:45:39 x kernel: CR2: 00007fd2df5ae8e0 CR3: 000000016bad0000 CR4: 00000000000006e0 > May 5 19:45:39 x kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 > May 5 19:45:39 x kernel: DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 > May 5 19:45:39 x kernel: Process kswapd0 (pid: 335, threadinfo ffff88016e2d0000, task ffff88016f23eac0) > May 5 19:45:39 x kernel: Stack: > May 5 19:45:39 x kernel: 000000000069d804 0000000000000000 ffff88016d1bc2d0 ffff88000a8b7400 > May 5 19:45:39 x kernel: ffff88000a8b7400 ffff88016df30000 ffff88000a8b74f8 ffff88016d1bc30c > May 5 19:45:39 x kernel: ffffffff80376b02 ffff88000a8b7580 0000000000000024 ffff88016e2d1d60 > May 5 19:45:39 x kernel: Call Trace: > May 5 19:45:39 x kernel: [] ? xfs_inode_set_reclaim_tag+0x69/0x89 > May 5 19:45:39 x kernel: [] ? xfs_reclaim+0x99/0x9f > May 5 19:45:39 x kernel: [] ? xfs_fs_destroy_inode+0x36/0x54 > May 5 19:45:39 x kernel: [] ? dispose_list+0xcd/0xfb > May 5 19:45:39 x kernel: [] ? shrink_icache_memory+0x1f4/0x22a > May 5 19:45:39 x kernel: [] ? shrink_slab+0xe4/0x157 > May 5 19:45:39 x kernel: [] ? kswapd+0x44f/0x5c9 > May 5 19:45:39 x kernel: [] ? isolate_pages_global+0x0/0x231 > May 5 19:45:39 x kernel: [] ? autoremove_wake_function+0x0/0x2e > May 5 19:45:39 x kernel: [] ? __wake_up_common+0x44/0x73 > May 5 19:45:39 x kernel: [] ? kswapd+0x0/0x5c9 > May 5 19:45:39 x kernel: [] ? kthread+0x47/0x73 > May 5 19:45:39 x kernel: [] ? child_rip+0xa/0x20 > May 5 19:45:39 x kernel: [] ? kthread+0x0/0x73 > May 5 19:45:39 x kernel: [] ? child_rip+0x0/0x20 > May 5 19:45:39 x kernel: Code: 83 e5 3f 89 ea e8 04 fc ff ff 85 c0 75 > 10 48 8b 54 24 08 48 8d 84 13 18 02 00 00 0f ab 28 48 63 c5 48 8b 5c c3 > 18 48 85 db 75 04 <0f> 0b eb fe 41 83 ed 06 41 ff cc 45$ > May 5 19:45:39 x kernel: RIP [] > radix_tree_tag_set+0x86/0xc6 > May 5 19:45:39 x kernel: RSP > May 5 19:45:39 x kernel: ---[ end trace aed81d6fef80e624 ]--- > > > I have logged a bug with debian > ( more info http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526406), > there has been one other to report this problem. > > we believe somebody has already reported a similar problem here > http://groups.google.com/group/linux.kernel/browse_thread/thread/dd00f52e93397c9e/6b6814dab9b41a05?pli=1 Which no-one noticed was related to XFS (not in the subject line) and so most people (like me) would have simply deleted it without reading it.... > has any one else seen this problem, who do I need to raise this too ? I've cc'd the XFS list. > I am able to reproduce this problem on my machine (amd64 phenomem II 8G > ram), running virtualbox, I have a vm access the local filesystem via > nfs (udp) and when I do a rm -fr I see the bug I run debian, XFS and 2.6.29 on all my machines but I haven't tripped over the problem - it all appears to be related to calling dispose_list() during/just after removing a lot of files. If you have a simple method of reproducing the problem (e.g. a simple shell script) it would help track down the problem much faster.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From johannes@sipsolutions.net Wed May 20 04:06:47 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=unavailable version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4K96kE2098289 for ; Wed, 20 May 2009 04:06:47 -0500 X-ASG-Debug-ID: 1242810415-4ce002700000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sipsolutions.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 93FAF19EF6C0; Wed, 20 May 2009 02:06:55 -0700 (PDT) Received: from sipsolutions.net (xc.sipsolutions.net [83.246.72.84]) by cuda.sgi.com with ESMTP id ADDSLC6wMo3Ueyqf; Wed, 20 May 2009 02:06:55 -0700 (PDT) Received: by sipsolutions.net with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.69) (envelope-from ) id 1M6hlF-0001an-5Y; Wed, 20 May 2009 11:06:53 +0200 X-ASG-Orig-Subj: inconsistent lock state on -rc6 Subject: inconsistent lock state on -rc6 From: Johannes Berg To: Felix Blyakher Cc: xfs-masters@oss.sgi.com, xfs@oss.sgi.com, Christoph Hellwig Content-Type: text/plain Date: Wed, 20 May 2009 11:06:19 +0200 Message-Id: <1242810379.19216.5.camel@johannes.local> Mime-Version: 1.0 X-Mailer: Evolution 2.26.1.1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: xc.sipsolutions.net[83.246.72.84] X-Barracuda-Start-Time: 1242810416 X-Barracuda-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.26256 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I also had it crash again, with 4K pages, but didn't capture that -- trying to reproduce right now. [ 713.951398] ================================= [ 713.965386] [ INFO: inconsistent lock state ] [ 713.972354] 2.6.30-rc6-wl-23952-g30cf869-dirty #56 [ 713.979370] --------------------------------- [ 713.986362] inconsistent {RECLAIM_FS-ON-W} -> {IN-RECLAIM_FS-R} usage. [ 713.993450] kswapd0/183 [HC0[0]:SC0[0]:HE1:SE1] takes: [ 714.000521] (&(&ip->i_lock)->mr_lock){+++++?}, at: [] .xfs_ilock+0x90/0xb0 [ 714.007832] {RECLAIM_FS-ON-W} state was registered at: [ 714.015079] [] .mark_held_locks+0x7c/0xcc [ 714.022410] [] .lockdep_trace_alloc+0xd8/0x110 [ 714.029787] [] .kmem_cache_alloc+0x50/0x22c [ 714.037168] [] .kmem_zone_alloc+0x94/0x114 [ 714.044530] [] .kmem_zone_zalloc+0x38/0x80 [ 714.051890] [] .xfs_da_state_alloc+0x34/0x50 [ 714.059251] [] .xfs_dir2_node_lookup+0x38/0x158 [ 714.066592] [] .xfs_dir_lookup+0x17c/0x1e4 [ 714.073874] [] .xfs_lookup+0x80/0x118 [ 714.081044] [] .xfs_vn_lookup+0x5c/0xcc [ 714.088106] [] .real_lookup+0xc8/0x1b4 [ 714.095083] [] .do_lookup+0x98/0x140 [ 714.101963] [] .__link_path_walk+0xc04/0x1218 [ 714.108815] [] .path_walk+0xa4/0x158 [ 714.115593] [] .do_path_lookup+0x204/0x2b4 [ 714.122315] [] .do_filp_open+0x12c/0x9dc [ 714.129026] [] .do_sys_open+0x98/0x15c [ 714.135739] [] .SyS_open+0x4c/0x6c [ 714.142279] [] .init_post+0x60/0x1a0 [ 714.148642] [] .kernel_init+0x12c/0x150 [ 714.155036] [] .kernel_thread+0x54/0x70 [ 714.161425] irq event stamp: 503825 [ 714.167796] hardirqs last enabled at (503825): [] .free_hot_cold_page+0x280/0x3c0 [ 714.174477] hardirqs last disabled at (503824): [] .free_hot_cold_page+0x348/0x3c0 [ 714.181045] softirqs last enabled at (503088): [] .__do_softirq+0x2c0/0x304 [ 714.187527] softirqs last disabled at (503081): [] .do_softirq+0x6c/0xb8 [ 714.193929] [ 714.193930] other info that might help us debug this: [ 714.206519] 2 locks held by kswapd0/183: [ 714.212884] #0: (shrinker_rwsem){++++..}, at: [] .shrink_slab+0x74/0x290 [ 714.219555] #1: (iprune_mutex){+.+.-.}, at: [] .prune_icache+0x70/0x2d8 [ 714.226313] [ 714.226314] stack backtrace: [ 714.239539] Call Trace: [ 714.246127] [c00000021643efe0] [c00000000001099c] .show_stack+0xa0/0x1f0 (unreliable) [ 714.252957] [c00000021643f0b0] [c0000000004d14dc] .dump_stack+0x28/0x3c [ 714.259799] [c00000021643f130] [c00000000009b714] .print_usage_bug+0x1e0/0x21c [ 714.266639] [c00000021643f200] [c00000000009b850] .mark_lock_irq+0x100/0x330 [ 714.273476] [c00000021643f2c0] [c00000000009bd60] .mark_lock+0x2e0/0x484 [ 714.280290] [c00000021643f360] [c00000000009c080] .mark_irqflags+0x17c/0x1b8 [ 714.286878] [c00000021643f3f0] [c00000000009eefc] .__lock_acquire+0x6cc/0x8f4 [ 714.293237] [c00000021643f4f0] [c00000000009f270] .lock_acquire+0x14c/0x19c [ 714.299658] [c00000021643f5c0] [c00000000008a2a4] .down_read_nested+0x74/0x130 [ 714.306103] [c00000021643f660] [c000000000258a90] .xfs_ilock+0x90/0xb0 [ 714.312532] [c00000021643f6f0] [c00000000027afa4] .xfs_free_eofblocks+0x80/0x2b0 [ 714.318990] [c00000021643f7f0] [c00000000027b7c0] .xfs_inactive+0x138/0x514 [ 714.325430] [c00000021643f8b0] [c00000000028ae1c] .xfs_fs_clear_inode+0x9c/0xbc [ 714.331885] [c00000021643f940] [c000000000162004] .clear_inode+0xd4/0x150 [ 714.338203] [c00000021643f9d0] [c000000000162324] .dispose_list+0x94/0x190 [ 714.344376] [c00000021643fa80] [c0000000001626b8] .prune_icache+0x298/0x2d8 [ 714.350548] [c00000021643fb50] [c000000000162748] .shrink_icache_memory+0x50/0x90 [ 714.356744] [c00000021643fbe0] [c000000000111fdc] .shrink_slab+0x178/0x290 [ 714.362891] [c00000021643fcb0] [c0000000001124f8] .balance_pgdat+0x404/0x620 [ 714.368984] [c00000021643fe10] [c000000000112880] .kswapd+0x16c/0x170 [ 714.374990] [c00000021643fef0] [c000000000083d68] .kthread+0x98/0xec From alex@samad.com.au Wed May 20 04:56:44 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4K9uhO3099582 for ; Wed, 20 May 2009 04:56:43 -0500 X-ASG-Debug-ID: 1242813727-39b3004a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail5.tpgi.com.au (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9F00212FA055 for ; Wed, 20 May 2009 03:02:07 -0700 (PDT) Received: from mail5.tpgi.com.au (mail5.tpgi.com.au [203.12.160.101]) by cuda.sgi.com with ESMTP id 7H51EhSW9ADU1FcW for ; Wed, 20 May 2009 03:02:07 -0700 (PDT) X-TPG-Junk-Status: Message not scanned X-TPG-Antivirus: Passed X-TPG-Abuse: host=adsl.samad.com.au; ip=60.241.248.86; date=Wed, 20 May 2009 19:56:44 +1000 Received: from sydrt01.samad.com.au (adsl.samad.com.au [60.241.248.86]) by mail5.tpgi.com.au (envelope-from alex@samad.com.au) (8.14.3/8.14.3) with ESMTP id n4K9ud4b029131 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO); Wed, 20 May 2009 19:56:44 +1000 Received: from alex by smtp.samad.com.au with local (Exim 4.69 #1 (Debian)) id 1M6iXP-0007Ma-QH; Wed, 20 May 2009 19:56:39 +1000 Date: Wed, 20 May 2009 19:56:39 +1000 From: Alex Samad To: Dave Chinner Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Kernel crash with 2.6.29 + nfs + xfs (radix-tree) Subject: Re: Kernel crash with 2.6.29 + nfs + xfs (radix-tree) Message-ID: <20090520095639.GA27496@samad.com.au> References: <20090520003745.GA27491@samad.com.au> <20090520090558.GQ16929@discord.disaster> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="DocE+STaALJfprDB" Content-Disposition: inline In-Reply-To: <20090520090558.GQ16929@discord.disaster> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: mail5.tpgi.com.au[203.12.160.101] X-Barracuda-Start-Time: 1242813730 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26258 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --DocE+STaALJfprDB Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, May 20, 2009 at 07:05:58PM +1000, Dave Chinner wrote: > On Wed, May 20, 2009 at 10:37:45AM +1000, Alex Samad wrote: > > Hi > >=20 > > I have been quit a lot of crashes on my debian amd64 box in the 2.6.29 > > series of kernel. Seems for me to be when the system is under load and > > there is network action -> nfsd -> xfs. >=20 > Perhaps a use after free or a reference counting problem. Thanks for > reporting it. >=20 > > May 5 19:45:38 x kernel: ------------[ cut here ]------------ [snip] > > I have logged a bug with debian > > ( more info http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D526406), > > there has been one other to report this problem. > >=20 > > we believe somebody has already reported a similar problem here > > http://groups.google.com/group/linux.kernel/browse_thread/thread/dd00f5= 2e93397c9e/6b6814dab9b41a05?pli=3D1 >=20 > Which no-one noticed was related to XFS (not in the subject line) > and so most people (like me) would have simply deleted it without > reading it.... >=20 > > has any one else seen this problem, who do I need to raise this too ? >=20 thanks > I've cc'd the XFS list. >=20 > > I am able to reproduce this problem on my machine (amd64 phenomem II 8G > > ram), running virtualbox, I have a vm access the local filesystem via > > nfs (udp) and when I do a rm -fr I see the bug >=20 > I run debian, XFS and 2.6.29 on all my machines but I haven't > tripped over the problem - it all appears to be related to calling > dispose_list() during/just after removing a lot of files. If you > have a simple method of reproducing the problem (e.g. a simple shell > script) it would help track down the problem much faster.... my source directory was an openwrt trunk (svn co svn://svn.openwrt.org/openwrt/trunk/) which I had done a compile on, I went to delete it (just about every time it would cause this problem. on the original data set (I was in the process of moving from one location to another so I still have the original data) du -s --si=20 5.2G find | wc -l 313320 if you have a look at the debian bug, another person (mike) has experienced this on a machine that is basically a backup server so heavily stressed out - using xfs partitions - he found going back to 2.6.28-7 seems to be stable. >=20 > Cheers, >=20 > Dave. --DocE+STaALJfprDB 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) iEYEARECAAYFAkoT09QACgkQkZz88chpJ2P+DwCeKmpLZGr3qPzsnpa1Lp3Pur/0 QNMAoNSQLT3yKRVDZ8bGScMnyjO+9ux9 =NCm2 -----END PGP SIGNATURE----- --DocE+STaALJfprDB-- From tytso@mit.edu Wed May 20 05:50:13 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4KAoDiJ100833 for ; Wed, 20 May 2009 05:50:13 -0500 X-ASG-Debug-ID: 1242816622-4bb401860000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from thunker.thunk.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3F4D019EFE86 for ; Wed, 20 May 2009 03:50:22 -0700 (PDT) Received: from thunker.thunk.org (thunk.org [69.25.196.29]) by cuda.sgi.com with ESMTP id VCEjKS8hHQoeLasr for ; Wed, 20 May 2009 03:50:22 -0700 (PDT) Received: from root (helo=closure.thunk.org) by thunker.thunk.org with local-esmtp (Exim 4.50 #1 (Debian)) id 1M6jNG-0003k4-FL; Wed, 20 May 2009 06:50:14 -0400 Received: from tytso by closure.thunk.org with local (Exim 4.69) (envelope-from ) id 1M6jND-0006Qu-IN; Wed, 20 May 2009 06:50:11 -0400 Date: Wed, 20 May 2009 06:50:11 -0400 From: Theodore Tso To: Milind Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: EXT vs XFS at 80% filled filesystem Subject: Re: EXT vs XFS at 80% filled filesystem Message-ID: <20090520105011.GD3523@mit.edu> References: <49F9565E.40804@gslab.com> <20090430183450.GB19276@mit.edu> <1242651808.3339.28.camel@alhena> <20090518131755.GJ32019@mit.edu> <1242798210.3457.4.camel@alhena> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1242798210.3457.4.camel@alhena> User-Agent: Mutt/1.5.18 (2008-05-17) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@mit.edu X-SA-Exim-Scanned: No (on thunker.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: thunk.org[69.25.196.29] X-Barracuda-Start-Time: 1242816623 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26262 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, May 20, 2009 at 11:13:30AM +0530, Milind wrote: > I am building xfsprogs to add it to my toolchain and want xfsprogs to > refer to my toolchain's libuuid. So I need libuuid.so in my toolchain. > But building e2fsprogs from sources doesn't build libuuid as .so (builds > as .a). Could you please give some pointers on building libuuid as .so? Add to the configure script --enable-elf-shared (I assume this is on a Linux system, right?). There are a number of configure options. Run configure --help to see them.... > Do I have to change Makefiles? How do you do it for ubuntu/debian > packages that you maintain? The debian packages are built using the standard debian packaging framework, which means a number of support programs, one of which eventually runs "make -f debian/rules" with various makefile targets. Take a look at it, but be warned it's rather complicated. The debian packages ultimately end up building e2fsprogs three times, with different sets of configure options. One is the standard build, one is for the restricted-size build for boot floppies (which arguably we don't need any more since we these days CD-ROM's have plenty of space, and Debian doesn't support boot floppies any more) and one is for the static build for e2fsck.static (although the utility of that one is somewhat dubious given that even the shell is with shared library, so if the filesystem is corrupted enough that shared libaries don't work, it's rescue CD-ROM time; the main use for e2fsck.static is for emergency use when someone running an older version of Debian needs a newer e2fsck to fix a filesystem corruption). - Ted From milind@gslab.com Wed May 20 06:51:15 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4KBpEdb102071 for ; Wed, 20 May 2009 06:51:15 -0500 X-ASG-Debug-ID: 1242820282-4b8103190000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from padma.gslab.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id B19A619EFFF6 for ; Wed, 20 May 2009 04:51:22 -0700 (PDT) Received: from padma.gslab.com (padma.gslab.com [59.163.66.102]) by cuda.sgi.com with SMTP id z4v9gtW8u5wCq23V for ; Wed, 20 May 2009 04:51:22 -0700 (PDT) Received: from [172.20.25.198] (unknown [172.20.25.198]) (Authenticated sender: milind) by padma.gslab.com (Postfix) with ESMTP id 516061770207; Wed, 20 May 2009 17:21:19 +0530 (IST) X-ASG-Orig-Subj: Re: EXT vs XFS at 80% filled filesystem Subject: Re: EXT vs XFS at 80% filled filesystem From: Milind To: Theodore Tso Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com In-Reply-To: <20090520105011.GD3523@mit.edu> References: <49F9565E.40804@gslab.com> <20090430183450.GB19276@mit.edu> <1242651808.3339.28.camel@alhena> <20090518131755.GJ32019@mit.edu> <1242798210.3457.4.camel@alhena> <20090520105011.GD3523@mit.edu> Content-Type: text/plain Date: Wed, 20 May 2009 17:21:14 +0530 Message-Id: <1242820274.3457.12.camel@alhena> Mime-Version: 1.0 X-Mailer: Evolution 2.26.1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: padma.gslab.com[59.163.66.102] X-Barracuda-Start-Time: 1242820284 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26264 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Thanks Theodore, It worked. I have one question regarding building libuuid.so $/usr/bin/ldd lib/libuuid.so.1.2 shows linux-vdso.so.1 => (0x00007fff075fe000) libc.so.6=> /home/miline/toolchain/x86_64-unknown-linux-gnu/glibc-2.7/lib/libc.so.6 (0x00007faafef52000) /lib64/ld-linux-x86-64.so.2 (0x00007faaff4a3000) my CFLAGS are CFLAGS=-Wl,--dynamic-linker,/home/miline/toolchain/x86_64-unknown-linux-gnu/glibc-2.7/lib/ld-linux-x86-64.so.2,--rpath,/home/miline/toolchain/x86_64-unknown-linux-gnu/glibc-2.7/lib/ libuuid.so is supposed to have dependancy on /home/miline/toolchain/x86_64-unknown-linux-gnu/glibc-2.7/lib/ld-linux-x86-64.so.2 (third entry in ldd output) right? And not on /lib64/ld-linux-x86-64.so.2 I tried modifying as follows but didn't really work. Any comments? lib/uuid/Makefile:321 - @(cd elfshared; $(CC) --shared -o $(ELF_LIB) $(LDFLAGS) \ + @(cd elfshared; $(CC) --shared -o $(ELF_LIB) $(CFLAGS) $(LDFLAGS) \ -Wl,-soname,$(ELF_SONAME) $(OBJS) $(ELF_OTHER_LIBS)) I have seen this problem in xfsprogs package too, should post the fix in new thread. -Miline On Wed, 2009-05-20 at 06:50 -0400, Theodore Tso wrote: > On Wed, May 20, 2009 at 11:13:30AM +0530, Milind wrote: > > I am building xfsprogs to add it to my toolchain and want xfsprogs to > > refer to my toolchain's libuuid. So I need libuuid.so in my toolchain. > > But building e2fsprogs from sources doesn't build libuuid as .so (builds > > as .a). Could you please give some pointers on building libuuid as .so? > > Add to the configure script --enable-elf-shared (I assume this is on a > Linux system, right?). There are a number of configure options. Run > configure --help to see them.... > > > Do I have to change Makefiles? How do you do it for ubuntu/debian > > packages that you maintain? > > The debian packages are built using the standard debian packaging > framework, which means a number of support programs, one of which > eventually runs "make -f debian/rules" with various makefile targets. > Take a look at it, but be warned it's rather complicated. > > The debian packages ultimately end up building e2fsprogs three times, > with different sets of configure options. One is the standard build, > one is for the restricted-size build for boot floppies (which arguably > we don't need any more since we these days CD-ROM's have plenty of > space, and Debian doesn't support boot floppies any more) and one is > for the static build for e2fsck.static (although the utility of that > one is somewhat dubious given that even the shell is with shared > library, so if the filesystem is corrupted enough that shared libaries > don't work, it's rescue CD-ROM time; the main use for e2fsck.static is > for emergency use when someone running an older version of Debian > needs a newer e2fsck to fix a filesystem corruption). > > - Ted > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From milind@gslab.com Wed May 20 07:00:24 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4KC0O2e102333 for ; Wed, 20 May 2009 07:00:24 -0500 X-ASG-Debug-ID: 1242820832-7bd502a50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from padma.gslab.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 89EAF29B09B for ; Wed, 20 May 2009 05:00:33 -0700 (PDT) Received: from padma.gslab.com (padma.gslab.com [59.163.66.102]) by cuda.sgi.com with SMTP id 05Tegv39kdszFcoX for ; Wed, 20 May 2009 05:00:33 -0700 (PDT) Received: from [172.20.25.198] (unknown [172.20.25.198]) (Authenticated sender: milind) by padma.gslab.com (Postfix) with ESMTP id E17D11770207; Wed, 20 May 2009 17:30:31 +0530 (IST) X-ASG-Orig-Subj: CFLAGS not taken while linking mkfs.xfs? Subject: CFLAGS not taken while linking mkfs.xfs? From: Milind To: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Cc: Theodore Tso Content-Type: text/plain Date: Wed, 20 May 2009 17:30:27 +0530 Message-Id: <1242820827.3457.21.camel@alhena> Mime-Version: 1.0 X-Mailer: Evolution 2.26.1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: padma.gslab.com[59.163.66.102] X-Barracuda-Start-Time: 1242820834 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26264 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean My CFLAGS are -Wl,--dynamic-linker,/home/beehive/toolchain/x86_64-unknown-linux-gnu/glibc-2.7/lib/ld-linux-x86-64.so.2,--rpath,/home/beehive/toolchain/x86_64-unknown-linux-gnu/glibc-2.7/lib/ when I cross compile xfsprogs and do ldd on mkfs/mkfs.xfs I see following thing linux-vdso.so.1 => (0x00007fff8e5fe000) libuuid.so.1 => /home/miline/toolchain/x86_64-unknown-linux-gnu/glibc-2.7/lib/libuuid.so.1 (0x00007f4386030000) librt.so.1 => /home/miline/toolchain/x86_64-unknown-linux-gnu/glibc-2.7/lib/librt.so.1 (0x00007f4385e15000) libpthread.so.0 => /home/miline/toolchain/x86_64-unknown-linux-gnu/glibc-2.7/lib/libpthread.so.0 (0x00007f4385bfa000) libc.so.6 => /home/miline/toolchain/x86_64-unknown-linux-gnu/glibc-2.7/lib/libc.so.6 (0x00007f43858b1000) /lib64/ld-linux-x86-64.so.2 (0x00007f4386236000) shouldn't mkfs.xfs be dependant on /home/miline/toolchain/x86_64-unknown-linux-gnu/glibc-2.7/lib/ld-linux-x86-64.so.2 rather than /lib64/ld-linux-x86-64.so.2 (0x00007f4386236000)? When do following changes it works. ifdef LTCOMMAND $(LTCOMMAND) : $(SUBDIRS) $(OBJECTS) $(LTDEPENDENCIES) - $(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) + $(LTLINK) -o $@ $(CFLAGSS) $(LDFLAGS) $(OBJECTS) $(LDLIBS) endif linking of mkfs.xfs happes as follows with above change libtool: link: gcc -Wl,--dynamic-linker,/home/miline/toolchain/x86_64-unknown-linux-gnu/glibc-2.7/lib/ld-linux-x86-64.so.2, --rpath,/home/miline/toolchain/x86_64-unknown-linux-gnu/glibc-2.7/lib -o mkfs.xfs maxtrres.o proto.o xfs_mkfs.o ../libxfs/.libs/libxfs.a -luuid ../libdisk/.libs/libdisk.a -lrt -lpthread above problem is seen for other binaries too. Like xfs_io, xfs_copy. -Miline From willy@parisc-linux.org Wed May 20 07:46:14 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4KCkDFw103418 for ; Wed, 20 May 2009 07:46:14 -0500 X-ASG-Debug-ID: 1242823583-793303cc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.parisc-linux.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2825329B3DC for ; Wed, 20 May 2009 05:46:23 -0700 (PDT) Received: from mail.parisc-linux.org (palinux.external.hp.com [192.25.206.14]) by cuda.sgi.com with ESMTP id 7WXqOvR7lIpo46lB for ; Wed, 20 May 2009 05:46:23 -0700 (PDT) Received: by mail.parisc-linux.org (Postfix, from userid 26919) id D6221494009; Wed, 20 May 2009 06:46:22 -0600 (MDT) Date: Wed, 20 May 2009 06:46:22 -0600 From: Matthew Wilcox To: Theodore Tso Cc: Milind , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: EXT vs XFS at 80% filled filesystem Subject: Re: EXT vs XFS at 80% filled filesystem Message-ID: <20090520124622.GJ31779@parisc-linux.org> References: <49F9565E.40804@gslab.com> <20090430183450.GB19276@mit.edu> <1242651808.3339.28.camel@alhena> <20090518131755.GJ32019@mit.edu> <1242798210.3457.4.camel@alhena> <20090520105011.GD3523@mit.edu> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090520105011.GD3523@mit.edu> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: palinux.external.hp.com[192.25.206.14] X-Barracuda-Start-Time: 1242823584 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26265 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, May 20, 2009 at 06:50:11AM -0400, Theodore Tso wrote: > The debian packages ultimately end up building e2fsprogs three times, > with different sets of configure options. One is the standard build, > one is for the restricted-size build for boot floppies (which arguably > we don't need any more since we these days CD-ROM's have plenty of > space, and Debian doesn't support boot floppies any more) and one is > for the static build for e2fsck.static (although the utility of that > one is somewhat dubious given that even the shell is with shared > library, so if the filesystem is corrupted enough that shared libaries > don't work, it's rescue CD-ROM time; the main use for e2fsck.static is > for emergency use when someone running an older version of Debian > needs a newer e2fsck to fix a filesystem corruption). If you install sash, you really do get a statically linked shell: $ ldd /bin/sash ldd: exited with unknown exit code (126) $ file /bin/sash /bin/sash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.8, stripped -- Matthew Wilcox Intel Open Source Technology Centre "Bill, look, we understand that you're interested in selling us this operating system, but compare it to ours. We can't possibly take such a retrograde step." From tytso@mit.edu Wed May 20 09:20:39 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4KEKdfT105991 for ; Wed, 20 May 2009 09:20:39 -0500 X-ASG-Debug-ID: 1242829249-319e00cf0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from thunker.thunk.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C4C1419F0FAA for ; Wed, 20 May 2009 07:20:49 -0700 (PDT) Received: from thunker.thunk.org (THUNK.ORG [69.25.196.29]) by cuda.sgi.com with ESMTP id vSSGlMG937Kz5ehx for ; Wed, 20 May 2009 07:20:49 -0700 (PDT) Received: from root (helo=closure.thunk.org) by thunker.thunk.org with local-esmtp (Exim 4.50 #1 (Debian)) id 1M6meu-0004if-Qs; Wed, 20 May 2009 10:20:40 -0400 Received: from tytso by closure.thunk.org with local (Exim 4.69) (envelope-from ) id 1M6mes-0003Fj-T1; Wed, 20 May 2009 10:20:38 -0400 Date: Wed, 20 May 2009 10:20:38 -0400 From: Theodore Tso To: Milind Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: EXT vs XFS at 80% filled filesystem Subject: Re: EXT vs XFS at 80% filled filesystem Message-ID: <20090520142038.GD24836@mit.edu> References: <49F9565E.40804@gslab.com> <20090430183450.GB19276@mit.edu> <1242651808.3339.28.camel@alhena> <20090518131755.GJ32019@mit.edu> <1242798210.3457.4.camel@alhena> <20090520105011.GD3523@mit.edu> <1242820274.3457.12.camel@alhena> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1242820274.3457.12.camel@alhena> User-Agent: Mutt/1.5.18 (2008-05-17) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@mit.edu X-SA-Exim-Scanned: No (on thunker.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: THUNK.ORG[69.25.196.29] X-Barracuda-Start-Time: 1242829249 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26273 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, May 20, 2009 at 05:21:14PM +0530, Milind wrote: > my CFLAGS are > CFLAGS=-Wl,--dynamic-linker,/home/miline/toolchain/x86_64-unknown-linux-gnu/glibc-2.7/lib/ld-linux-x86-64.so.2,--rpath,/home/miline/toolchain/x86_64-unknown-linux-gnu/glibc-2.7/lib/ > > libuuid.so is supposed to have dependancy > on /home/miline/toolchain/x86_64-unknown-linux-gnu/glibc-2.7/lib/ld-linux-x86-64.so.2 (third entry in ldd output) right? And not on /lib64/ld-linux-x86-64.so.2 > > I tried modifying as follows but didn't really work. Any comments? > I suggest you read the man page for "ld", in particular for the option --rpath-link.... - Ted From birdlandchildrensctr@bellnet.ca Wed May 20 10:01:46 2009 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_40,MIME_8BIT_HEADER, RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_BRBL,RCVD_IN_SBL autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4KF1jYn108704 for ; Wed, 20 May 2009 10:01:46 -0500 X-ASG-Debug-ID: 1242831715-3e63032c0000-w1Z2WR 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 6F11729BC3E for ; Wed, 20 May 2009 08:01:55 -0700 (PDT) Received: from simmts12-srv.bellnexxia.net (simmts12-qfe0.srvr.bell.ca [206.47.199.141]) by cuda.sgi.com with ESMTP id EpDwQRyM6jChSeHp for ; Wed, 20 May 2009 08:01:55 -0700 (PDT) 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 <20090520150155.FYXB1599.simmts12-srv.bellnexxia.net@simip9-ac.srvr.bell.ca>; Wed, 20 May 2009 11:01:55 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ai3hANGwE0rOL8eg/2dsb2JhbACBT4lggjElAZIgoEiOYYI1gUAF Received: from simfep5.srvr.bell.ca (HELO smtpacout.sympatico.ca) ([206.47.199.160]) by simip9-ac.srvr.bell.ca with SMTP; 20 May 2009 11:08:00 -0400 X-Mailer: Openwave WebEngine, version 2.8.10 (webedge20-101-191-20030113) X-Originating-IP: [41.220.75.3] From: Camelot Reply-To: cgpaycenter2009@8u8.hk To: X-ASG-Orig-Subj: Your =?iso-8859-1?B?ozEsMjMwLDMxMA==?= Jackpot Subject: Your =?iso-8859-1?B?ozEsMjMwLDMxMA==?= Jackpot Date: Wed, 20 May 2009 11:01:55 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Message-Id: <20090520150155.FYXB1599.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: 1242831716 X-Barracuda-Bayes: INNOCENT GLOBAL 0.6663 1.0000 1.1274 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.13 X-Barracuda-Spam-Status: No, SCORE=1.13 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MAILTO_TO_SPAM_ADDR X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26275 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean You were selected for the sum of =A31,230,310 GBP. Verify this mail immed= iately by sending in your information. This will include your Names, Addr= ess, Age, Phone number etc to : cgpaycenter2009@8u8.hk From sandeen@sandeen.net Wed May 20 10:19:36 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4KFJZdi109395 for ; Wed, 20 May 2009 10:19:35 -0500 X-ASG-Debug-ID: 1242832762-319801e70000-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 B1D9219F1A31 for ; Wed, 20 May 2009 08:19:22 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id ejggCqpOfJ1Tkhwt for ; Wed, 20 May 2009 08:19:22 -0700 (PDT) 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 n4KFJIHe014931; Wed, 20 May 2009 11:19:18 -0400 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 n4KFJHCK025793; Wed, 20 May 2009 11:19:17 -0400 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 n4KFJEBK030150; Wed, 20 May 2009 11:19:16 -0400 Message-ID: <4A141F72.3020607@sandeen.net> Date: Wed, 20 May 2009 10:19:14 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: stunnel@attglobal.net CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS internal error xfs_trans_cancel at line 1164 of file fs/xfs/xfs_trans.c Subject: Re: XFS internal error xfs_trans_cancel at line 1164 of file fs/xfs/xfs_trans.c References: <4A13AA1B.7080801@attglobal.net> In-Reply-To: <4A13AA1B.7080801@attglobal.net> Content-Type: text/plain; charset=us-ascii 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: 1242832762 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26276 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Eddie Atherton wrote: > I'm trying to install a clean Slackware 12.2 (2.6.27.7) under ESXi, and > can almost guarantee getting this error immediately after formatting the > root partition. It's happened 4 out of the 5 times I've tried, so far. > > The sequence of commands, after digging through the install scripts, > that lead to this failure are just: > > mkfs.xfs > mount > mkdir > > Apologies for posting the stack trace as a couple of jpg's, but it's the > only way I could capture them, as I don't have any VMs set up, yet, that > have conectivity to upload any files. The stack trace can be found at: > > http://www.bogolinux.net/xfs_crash_a.JPG > http://www.bogolinux.net/xfs_crash_b.JPG > > I'm guessing that it's something to do with this running under a VM, but > is there any way to stop it happening. > > Cheers, > Eddie Not sure what that is offhand, seems odd. xfs_mkdir() is getting some error and cancelling a dirty transaction. Perhaps someone on the list remembers better than me, a few causes of this were fixed but I don't remember details. Any chance you can try, say, .28 or .29? :) -Eric From stunnel@attglobal.net Wed May 20 11:51:05 2009 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,HTML_MESSAGE, J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4KGp4i3113030 for ; Wed, 20 May 2009 11:51:04 -0500 X-ASG-Debug-ID: 1242838272-38d801170000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from kcout02.prserv.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 37F1C1BC3EA4 for ; Wed, 20 May 2009 09:51:12 -0700 (PDT) Received: from kcout02.prserv.net (kcout02.prserv.net [12.154.55.32]) by cuda.sgi.com with ESMTP id 2FCuYiuPtq8TAH88 for ; Wed, 20 May 2009 09:51:12 -0700 (PDT) Received: from [127.0.0.1] (cpe-76-169-247-82.socal.res.rr.com[76.169.247.82]) by prserv.net (kcout02) with ESMTP id <20090520165109202008cufae> (Authid: usinet.athertn); Wed, 20 May 2009 16:51:11 +0000 X-Originating-IP: [76.169.247.82] Message-ID: <4A1434FA.8010006@attglobal.net> Date: Wed, 20 May 2009 09:51:06 -0700 From: Eddie Atherton Reply-To: stunnel@attglobal.net User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Eric Sandeen CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS internal error xfs_trans_cancel at line 1164 of file fs/xfs/xfs_trans.c Subject: Re: XFS internal error xfs_trans_cancel at line 1164 of file fs/xfs/xfs_trans.c References: <4A13AA1B.7080801@attglobal.net> <4A141F72.3020607@sandeen.net> In-Reply-To: <4A141F72.3020607@sandeen.net> Content-Type: multipart/alternative; boundary="------------010605040202030201050206" X-Barracuda-Connect: kcout02.prserv.net[12.154.55.32] X-Barracuda-Start-Time: 1242838275 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-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.26281 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format. --------------010605040202030201050206 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Eric Sandeen wrote: > Eddie Atherton wrote: > >> I'm trying to install a clean Slackware 12.2 (2.6.27.7) under ESXi, and >> can almost guarantee getting this error immediately after formatting the >> root partition. It's happened 4 out of the 5 times I've tried, so far. >> >> The sequence of commands, after digging through the install scripts, >> that lead to this failure are just: >> >> mkfs.xfs >> mount >> mkdir >> >> Apologies for posting the stack trace as a couple of jpg's, but it's the >> only way I could capture them, as I don't have any VMs set up, yet, that >> have conectivity to upload any files. The stack trace can be found at: >> >> http://www.bogolinux.net/xfs_crash_a.JPG >> http://www.bogolinux.net/xfs_crash_b.JPG >> >> I'm guessing that it's something to do with this running under a VM, but >> is there any way to stop it happening. >> >> Cheers, >> Eddie >> > > Not sure what that is offhand, seems odd. xfs_mkdir() is getting some > error and cancelling a dirty transaction. Perhaps someone on the list > remembers better than me, a few causes of this were fixed but I don't > remember details. Any chance you can try, say, .28 or .29? :) > I'm not sure I can, because it's not a running system, where I can just recompile the kernel myself. It's the Slack installer, that comes as a bootable initrd.img. Cheers, Eddie > -Eric > > > --------------010605040202030201050206 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Eric Sandeen wrote:
Eddie Atherton wrote:
  
I'm trying to install a clean Slackware 12.2 (2.6.27.7) under ESXi, and 
can almost guarantee getting this error immediately after formatting the 
root partition.  It's happened 4 out of the 5 times I've tried, so far.

The sequence of commands, after digging through the install scripts, 
that lead to this failure are just:

mkfs.xfs
mount
mkdir

Apologies for posting the stack trace as a couple of jpg's, but it's the 
only way I could capture them, as I don't have any VMs set up, yet, that 
have conectivity to upload any files.  The stack trace can be found at:

http://www.bogolinux.net/xfs_crash_a.JPG
http://www.bogolinux.net/xfs_crash_b.JPG

I'm guessing that it's something to do with this running under a VM, but 
is there any way to stop it happening.

Cheers,
Eddie
    

Not sure what that is offhand, seems odd.  xfs_mkdir() is getting some
error and cancelling a dirty transaction.  Perhaps someone on the list
remembers better than me, a few causes of this were fixed but I don't
remember details.  Any chance you can try, say, .28 or .29? :)
  
I'm not sure I can, because it's not a running system, where I can just recompile the kernel myself.  It's the Slack installer, that comes as a bootable initrd.img.

Cheers,
Eddie

-Eric


  
--------------010605040202030201050206-- From arekm@maven.pl Wed May 20 15:21:43 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4KKLfjD122157 for ; Wed, 20 May 2009 15:21:42 -0500 X-ASG-Debug-ID: 1242851229-4c58026b0000-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 DE65EB8F75D for ; Wed, 20 May 2009 13:27:09 -0700 (PDT) Received: from main.carme.maven.pl (main.carme.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id A4YKp421Ro6W55ks for ; Wed, 20 May 2009 13:27:09 -0700 (PDT) Received: from chello089076031091.chello.pl ([89.76.31.91]:40980 helo=t400.maven.pl) by main.carme.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1M6sIO-000Q8I-LT for xfs@oss.sgi.com; Wed, 20 May 2009 22:21:48 +0200 Received: from arekm by t400.maven.pl with local (Exim 4.69) (envelope-from ) id 1M6sHu-00037P-8V for xfs@oss.sgi.com; Wed, 20 May 2009 22:21:18 +0200 From: Arkadiusz Miskiewicz To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: CFLAGS not taken while linking mkfs.xfs? Subject: Re: CFLAGS not taken while linking mkfs.xfs? Date: Wed, 20 May 2009 22:21:18 +0200 User-Agent: KMail/1.11.2 (Linux/2.6.30-rc6; KDE/4.2.3; x86_64; ; ) References: <1242820827.3457.21.camel@alhena> In-Reply-To: <1242820827.3457.21.camel@alhena> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Message-Id: <200905202221.18217.arekm@maven.pl> X-Barracuda-Connect: main.carme.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1242851230 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26294 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wednesday 20 of May 2009, Milind wrote: > My CFLAGS are > -Wl,--dynamic-linker,/home/beehive/toolchain/x86_64-unknown-linux-gnu/gli= bc >-2.7/lib/ld-linux-x86-64.so.2,--rpath,/home/beehive/toolchain/x86_64-unkno= wn >-linux-gnu/glibc-2.7/lib/ CFLAGS are meant for compilation LDFLAGS for linking =2D-=20 Arkadiusz Mi=C5=9Bkiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From sandeen@redhat.com Thu May 21 15:14:59 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_53,J_CHICKENPOX_55,J_CHICKENPOX_62,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKEx1p183008 for ; Thu, 21 May 2009 15:14:59 -0500 X-ASG-Debug-ID: 1242936908-420c01470000-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 A099B19FBF2B for ; Thu, 21 May 2009 13:15:09 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id yisvPwNctJ596FA9 for ; Thu, 21 May 2009 13:15:09 -0700 (PDT) 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 n4LKF8NS012615; Thu, 21 May 2009 16:15:08 -0400 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 n4LKF7xJ020273; Thu, 21 May 2009 16:15:07 -0400 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 n4LKF5J0020700; Thu, 21 May 2009 16:15:06 -0400 Message-ID: <4A15B649.70801@redhat.com> Date: Thu, 21 May 2009 15:15:05 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: xfs mailing list , ext4 development X-ASG-Orig-Subj: [PATCH] xfstests: enable many tests to run on ext2/3/4 Subject: [PATCH] xfstests: enable many tests to run on ext2/3/4 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: 1242936909 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0005 1.0000 -2.0180 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.26388 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This gets many of the tests running on ext4 (and should on ext2/ext3 as well). A few things could still be cleaned up; rather than -xfs, -ext3, -ext4 etc it'd be better to do --fstype xfs or whatnot, and lose as much of the special-casing as possible. But this gets it going, so maybe worth merging now as a first step. This creates a new supported_fs "generic" type which should run on any generic filesystem (well, assuming it supports acls & xattrs, along with general posix-ness). It also adds a "generic" group, so you can do: ./check -ext4 -g generic and that way it'll avoid any fs-specific tests. They wouldn't fail anyway, but it gets noisy to see all the "notrun" tests. Long term there's probably a better way to do this; maybe just skip all output when there's a fs type mismatch, not sure. Right now fs compat info is in the test itself, so putting "generic" into the group file might kind of be a sort of layering violation, whaddya think? (OTOH "udf" was there already; maybe non-generic tests -should- have fs types in the group file and then you could do: ./check -ext4 -g generic -g ext4 or that last part could be automatic...) There are a few more tests which could almost work for ext4 with a bit more work: 020 runs into different attribute limits I think 051 ditto but for acls 075 uses the -x preallocation call for xfs 062 gets a different recursive walk of files 164 uses xfs_io to do file mapping 192 is doing something odd I haven't sorted out yet Signed-off-by: Eric Sandeen --- 001 | 2 +- 002 | 2 +- 005 | 2 +- 006 | 2 +- 007 | 2 +- 010 | 2 +- 011 | 2 +- 013 | 2 +- 014 | 2 +- 069 | 4 ++-- 070 | 2 +- 074 | 2 +- 076 | 2 +- 093 | 2 +- 097 | 2 +- 099 | 2 +- 100 | 2 +- 105 | 2 +- 123 | 2 +- 124 | 2 +- 125 | 2 +- 128 | 2 +- 131 | 2 +- 184 | 2 +- 193 | 2 +- common | 18 ++++++++++++++++++ common.rc | 17 +++++++++++++---- group | 50 +++++++++++++++++++++++++------------------------- new | 2 +- 29 files changed, 83 insertions(+), 56 deletions(-) diff --git a/001 b/001 index 2ff2c05..2dddffb 100755 --- a/001 +++ b/001 @@ -33,7 +33,7 @@ done_cleanup=false trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15 # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux verbose=true diff --git a/002 b/002 index 13c6be3..c2d2b5a 100755 --- a/002 +++ b/002 @@ -30,7 +30,7 @@ _cleanup() } # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/005 b/005 index d21dcb5..644f63d 100755 --- a/005 +++ b/005 @@ -53,7 +53,7 @@ _touch() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic # IRIX UDF does not support symlinks if [ $FSTYP == 'udf' ]; then diff --git a/006 b/006 index 4da277f..49b5949 100755 --- a/006 +++ b/006 @@ -40,7 +40,7 @@ _count() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/007 b/007 index 290f716..7a97d71 100755 --- a/007 +++ b/007 @@ -34,7 +34,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/010 b/010 index c51ecb2..f1bc885 100755 --- a/010 +++ b/010 @@ -42,7 +42,7 @@ _filter_dbtest() [ -x $here/src/dbtest ] || _notrun "dbtest was not built for this platform" # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/011 b/011 index 655229b..e1a3d7d 100755 --- a/011 +++ b/011 @@ -32,7 +32,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/013 b/013 index 1c99e8f..e417d5a 100755 --- a/013 +++ b/013 @@ -78,7 +78,7 @@ _do_test() # real QA test starts here -_supported_fs xfs udf +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/014 b/014 index acc3696..f5b64d0 100755 --- a/014 +++ b/014 @@ -30,7 +30,7 @@ _cleanup() . ./common.rc . ./common.filter -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/069 b/069 index 11efd98..8da6a68 100755 --- a/069 +++ b/069 @@ -23,7 +23,7 @@ trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15 . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _require_scratch @@ -32,7 +32,7 @@ rm -f $seq.full umount $SCRATCH_DEV >/dev/null 2>&1 echo "*** mkfs" -_scratch_mkfs >/dev/null || _fail "mkfs failed" +_scratch_mkfs &>/dev/null || _fail "mkfs failed" echo "*** mount FS" _scratch_mount >/dev/null || _fail "mount failed" diff --git a/070 b/070 index 65e158a..9302500 100755 --- a/070 +++ b/070 @@ -30,7 +30,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/074 b/074 index d5e0364..0bd0807 100755 --- a/074 +++ b/074 @@ -97,7 +97,7 @@ _process_args() # real QA test starts here rm -f $here/$seq.full -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux # diff --git a/076 b/076 index 975de2e..c0f6675 100755 --- a/076 +++ b/076 @@ -39,7 +39,7 @@ trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15 . ./common.filter # real QA test starts here -_supported_fs xfs udf +_supported_fs generic _supported_os IRIX Linux _require_scratch diff --git a/093 b/093 index c1243e2..1139788 100755 --- a/093 +++ b/093 @@ -43,7 +43,7 @@ _filefilter() } # real QA test starts here -_supported_fs xfs udf +_supported_fs generic _supported_os IRIX [ -x $runas ] || _notrun "$runas executable not found" diff --git a/097 b/097 index b7fe1f2..9c38d18 100755 --- a/097 +++ b/097 @@ -58,7 +58,7 @@ else fi # real QA test starts here -_supported_fs udf xfs +_supported_fs generic _supported_os IRIX _require_scratch diff --git a/099 b/099 index 1c5daeb..6b824dd 100755 --- a/099 +++ b/099 @@ -62,7 +62,7 @@ rm -f $seq.full #------------------------------------------------------- # real QA test starts here -_supported_fs xfs udf +_supported_fs generic _supported_os IRIX _acl_setup_ids diff --git a/100 b/100 index aa6c4ca..57e9bb6 100755 --- a/100 +++ b/100 @@ -29,7 +29,7 @@ _cleanup() } # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux # Use _populate_fs() in common.rc to create a directory structure. diff --git a/105 b/105 index cd201dd..f154422 100755 --- a/105 +++ b/105 @@ -32,7 +32,7 @@ _cleanup() . ./common.attr # Modify as appropriate. -_supported_fs xfs udf +_supported_fs generic _supported_os IRIX Linux # real QA test starts here diff --git a/123 b/123 index 63cd48f..ba7c454 100755 --- a/123 +++ b/123 @@ -57,7 +57,7 @@ _user_do() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os Linux IRIX _require_user diff --git a/124 b/124 index 29af340..5adef48 100755 --- a/124 +++ b/124 @@ -33,7 +33,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os Linux _setup_testdir diff --git a/125 b/125 index ff538ef..f432034 100755 --- a/125 +++ b/125 @@ -28,7 +28,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os Linux _require_user diff --git a/128 b/128 index 24bdac7..227d05c 100755 --- a/128 +++ b/128 @@ -30,7 +30,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os Linux _setup_testdir diff --git a/131 b/131 index 78627f5..67adb81 100755 --- a/131 +++ b/131 @@ -28,7 +28,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os Linux _setup_testdir diff --git a/184 b/184 index 30839cb..408e645 100755 --- a/184 +++ b/184 @@ -30,7 +30,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/193 b/193 index 54c51a2..743c70f 100755 --- a/193 +++ b/193 @@ -50,7 +50,7 @@ _cleanup_files() . ./common.filter # real QA test starts here -_supported_fs xfs nfs udf +_supported_fs generic _supported_os Linux _require_user diff --git a/common b/common index 92ec9e2..ea31375 100644 --- a/common +++ b/common @@ -105,6 +105,9 @@ check options -xfs test XFS (default) -udf test UDF -nfs test NFS + -ext2 test ext2 + -ext3 test ext3 + -ext4 test ext4 -l line mode diff -xdiff graphical mode diff -udiff show unified diff (default) @@ -132,6 +135,21 @@ testlist options xpand=false ;; + -ext2) # -ext2 ... set FSTYP to ext2 + FSTYP=ext2 + xpand=false + ;; + + -ext3) # -ext3 ... set FSTYP to ext3 + FSTYP=ext3 + xpand=false + ;; + + -ext4) # -ext4 ... set FSTYP to ext4 + FSTYP=ext4 + xpand=false + ;; + -nfs) # -nfs ... set FSTYP to nfs FSTYP=nfs xpand=false diff --git a/common.rc b/common.rc index 317e009..06304c8 100644 --- a/common.rc +++ b/common.rc @@ -49,6 +49,10 @@ _mount_opts() nfs) export MOUNT_OPTIONS=$NFS_MOUNT_OPTIONS ;; + ext2|ext3|ext4) + # acls & xattrs aren't turned on by default on ext$FOO + export MOUNT_OPTIONS="-o acl,user_xattr $EXT_MOUNT_OPTIONS" + ;; *) ;; esac @@ -546,7 +550,7 @@ _supported_fs() { for f do - if [ "$f" = "$FSTYP" ] + if [ "$f" = "$FSTYP" -o "$f" = "generic" ] then return fi @@ -585,7 +589,7 @@ _require_scratch() _notrun "this test requires a valid \$SCRATCH_DEV" fi ;; - nfs*|ext2|ext3|reiserfs) + nfs*|ext2|ext3|ext4|reiserfs) echo $SCRATCH_DEV | grep -q ":" > /dev/null 2>&1 if [ ! -z "$SCRATCH_DEV" -a ! -b "$SCRATCH_DEV" -a "$?" != "0" ] then @@ -988,6 +992,10 @@ _check_testdir() esac } +_setup_generic_testdir() +{ + testdir=$TEST_DIR +} _setup_xfs_testdir() { @@ -1067,7 +1075,7 @@ _setup_testdir() _setup_nfs_scratchdir ;; *) - _fail "\$FSTYP is not xfs, udf or nfs" + _setup_generic_testdir ;; esac } @@ -1088,7 +1096,8 @@ _cleanup_testdir() [ -n "$testdir" ] && $UMOUNT_PROG $testdir ;; *) - _fail "\$FSTYP is not xfs, udf or nfs" + # do nothing, testdir is $TEST_DIR + : ;; esac } diff --git a/group b/group index 0ac33c2..6ce06b5 100644 --- a/group +++ b/group @@ -103,20 +103,20 @@ atime # test-group association ... one line per test # -001 rw dir udf auto quick -002 metadata udf auto quick +001 generic rw dir auto quick +002 generic metadata auto quick 003 db auto quick 004 db auto quick -005 dir udf auto quick -006 dir udf auto quick -007 dir udf auto quick +005 generic dir auto quick +006 generic dir auto quick +007 generic dir auto quick 008 rw ioctl auto quick 009 rw ioctl auto quick -010 other udf auto -011 dir udf auto quick +010 generic other auto +011 generic dir auto quick 012 rw auto quick -013 other ioctl udf auto quick -014 rw udf auto quick +013 generic other ioctl auto quick +014 generic rw auto quick 015 other auto quick 016 rw auto quick 017 mount auto quick @@ -171,14 +171,14 @@ atime 066 dump ioctl auto quick 067 acl attr auto quick 068 other auto -069 rw udf auto quick -070 attr udf auto quick +069 generic rw auto quick +070 generic attr auto quick 071 rw 072 rw auto quick 073 copy auto -074 rw udf auto +074 generic rw auto 075 rw udf auto quick -076 metadata rw udf auto quick +076 generic metadata rw auto quick 077 acl attr auto 078 growfs auto quick 079 acl attr ioctl metadata auto quick @@ -195,19 +195,19 @@ atime 090 rw auto 091 rw auto quick 092 other auto quick -093 attr cap udf auto +093 generic attr cap auto 094 metadata dir ioctl auto 095 log v2log auto 096 mkfs v2log auto quick -097 udf auto +097 generic auto 098 udf auto -099 udf auto -100 udf auto +099 generic auto +100 generic auto 101 udf 102 udf 103 metadata dir ioctl auto quick 104 growfs ioctl -105 acl auto quick +105 generic acl auto quick 106 quota 107 quota 108 quota @@ -225,15 +225,15 @@ atime 120 other auto quick 121 log auto quick 122 other auto quick -123 perms auto quick -124 pattern auto quick -125 other auto +123 generic perms auto quick +124 generic pattern auto quick +125 generic other auto 126 perms auto quick 127 rw auto -128 perms auto quick +128 generic perms auto quick 129 rw auto quick 130 pattern auto quick -131 perms auto quick +131 generic perms auto quick 132 pattern auto 133 rw auto 134 quota auto quick @@ -289,7 +289,7 @@ atime 181 log auto quick 182 metadata rw auto 183 rw other auto quick -184 metadata auto quick +184 generic metadata auto quick 185 dmapi auto 186 attr auto quick 187 attr auto quick @@ -298,7 +298,7 @@ atime 190 rw auto quick 191 nfs4acl auto 192 atime -193 metadata auto quick +193 generic metadata auto quick 194 rw auto 195 ioctl dump auto quick 196 quota auto quick diff --git a/new b/new index c924ffe..ac61221 100755 --- a/new +++ b/new @@ -99,7 +99,7 @@ _cleanup() # real QA test starts here # Modify as appropriate. -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux # if error From felixb@oss.sgi.com Thu May 21 15:26:39 2009 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQd8T183781 for ; Thu, 21 May 2009 15:26:39 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQYL8183752; Thu, 21 May 2009 15:26:34 -0500 Date: Thu, 21 May 2009 15:26:34 -0500 Message-Id: <200905212026.n4LKQYL8183752@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.29-rc1, created. v2.6.29-rc1 X-Git-Refname: refs/tags/v2.6.29-rc1 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 7a3862d6e9934ffe107fe7ddfbe2c63dba321793 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 annotated tag, v2.6.29-rc1 has been created at 7a3862d6e9934ffe107fe7ddfbe2c63dba321793 (tag) tagging c59765042f53a79a7a65585042ff463b69cb248c (commit) replaces v2.6.28 tagged by Linus Torvalds on Sat Jan 10 15:43:15 2009 -0800 - Log ----------------------------------------------------------------- Linux 2.6.29-rc1 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAklpMpgACgkQF3YsRnbiHLsCVQCfYMnTXkmXMmoh5fCD02ZnHKlB B9YAnjqxNxK1hTAvk9lg8r/xXA6jE1xB =aNdq -----END PGP SIGNATURE----- Abbas, Mohamed (3): iwl3945: add debugfs support iwl3945: Fix iwl3945 rate scaling. iwl3945: Fix rate scale for B-mode connection Abhijeet Kolekar (3): iwlwifi : fix checkpatch.pl errors iwl3945 : Fix ad-hoc mode for 3945 iwl3945 : Fix a-band association for passive channels Adam Jackson (1): PCI quirks: piix3: warn softer about enabling passive release Adam Lackorzynski (1): vmalloc.c: fix flushing in vmap_page_range() Adrian Bunk (3): The overdue eepro100 removal. parisc: lib/: make code static parisc: drivers/parisc/: make code static Adrian Hunter (5): MTD: nandsim: suppress unnecessary warning MTD: nandsim: add option to use a file to cache pages [MTD] update internal API to support 64-bit device size mmc_block: print better error messages mmc_block: ensure all sectors that do not have errors are read Adrian McMenamin (1): Input: add support for Maple controller as a joystick Adrian-Ken Rueegsegger (10): libcrc32c: Fix "crc32c undefined" compilation error crypto: sha1 - Switch to shash crypto: md4 - Switch to shash crypto: md5 - Switch to shash crypto: sha256 - Switch to shash crypto: tgr192 - Switch to shash crypto: wp512 - Switch to shash crypto: michael_mic - Switch to shash crypto: sha512 - Move message schedule W[80] to static percpu area crypto: sha512 - Switch to shash Akinobu Mita (4): SLUB: failslab support backlight: hp680_bl - Use platform_device_register_simple() backlight: progear_bl - Use platform_device_register_simple() backlight: crbllcd_bl - Use platform_device_register_simple() Al Viro (42): ixgbe: section fixes sparc32: pdev_to_pnode() is used from __devinit Audit: Log TIOCSTI [S390] audit: get s390 ret_from_fork in sync with other architectures fix switch_names() breakage in short-to-short case take init_fs to saner place kill ->dir_notify() nfsd/create race fixes, infrastructure nfsd race fixes: ext2 nfsd race fixes: ext3 nfsd race fixes: ext4 nfsd race fixes: reiserfs remove the rudiment of a.out for sparc sanitize ifdefs in binfmt_aout get rid of special-casing the /sbin/loader on alpha don't reallocate buffer in every audit_sockaddr() sanitize audit_socketcall sanitize audit_ipc_obj() sanitize audit_ipc_set_perm() sanitize audit_mq_getsetattr() sanitize audit_mq_notify() sanitize AUDIT_MQ_SENDRECV sanitize audit_mq_open() sanitize audit_fd_pair() sanitize audit_log_capset() audit_update_lsm_rules() misses the audit_inode_hash[] ones fixing audit rule ordering mess, part 1 audit rules ordering, part 2 make sure that filterkey of task,always rules is reported clean up audit_rule_{add,del} a bit audit: validate comparison operations, store them in sane form affs: do not zero ->i_op isofs check for NULL ->i_op in root directory is dead code ntfs: don't NULL i_op inode->i_op is never NULL zero i_uid/i_gid on inode allocation fix the treatment of jfs special inodes fix breakage in reiserfs_new_inode() get rid of the last symlink in uml build uml got broken by commit 30742d5c2277c325fb0e9d2d817d55a19995fe8f X86_DEBUGCTLMSR won't work on uml [SCSI] cxgb3i: add missing include Alain Kalker (1): V4L/DVB (9665): af9015: Add support for the Digittrade DVB-T USB Stick remote Alain Knaff (1): vfs: lseek(fd, 0, SEEK_CUR) race condition Alan Cox (50): tty: Flags should be accessed via the foo_bit interfaces tty: driverdata and discdata are void * [SCSI] Clean up my email address and use a single standard address for everything V4L/DVB (9491): rationalise addresses to one common one n_tty: clean up coding style devpts: Coding style clean up sierra: Fix formatting pty: simplify resize tty: Fix close races in USB serial tty: Fix PPP hang under load tty_port: Add a port level carrier detect operation rio: Kill off ckmalloc tty: Pull the dtr raise into tty port isicom: redo locking to use tty port locks tty: relock generic_serial tty: rocketport uses different port flags to everyone else tty: relock riscom8 using port locks tty: relock the mxser driver tty: Introduce a tty_port generic block_til_ready tty: Rework istallion to use the tty port changes tty: rework stallion to use the tty_port bits tty: ESP has been broken for locking etc forver tty: tty port zero baud open tty: Introduce some close helpers for ports tty: USB tty devices can block in tcdrain when unplugged tty: PTYs set TTY_DO_WRITE_WAKEUP when they don't need to tty: Remove some pointless casts tty: kref nozomi hso: net driver using tty without locking tty: Fix the HSO termios handling a bit tty: relock epca tty: refcount the epca driver tty: Make epca use the port helpers tty: Redo the rocket driver locking tty: make rocketport use standard port->flags tty: kref the rocket driver tty: use port methods for the rocket driver synclink_cs: Convert to tty_port tty: Drop the lock_kernel in the private ioctl hook tty: We want the port object to be persistent tty: Fix an ircomm warning and note another bug x86: update Alan Cox's email addresses mm: update my address i2o: Update my address touchscreen: Fix build of da9034 pata_hpt3x3: Workarounds for chipset pata_ali: force initialise a few bits pata_ali: Fix and workaround for FIFO DMA bug libata: Add 32bit PIO support libata: clean up the SFF code for coding style Alan Horstmann (1): ALSA: ice1724 - Fix a typo in IEC958 PCM name Alan McIvor (2): V4L/DVB (9522): Increase number of SAA7134 devices supported in a system V4L/DVB (9523): Increase number of BT8XX devices supported in a system Alan Nisota (1): V4L/DVB (9928): Convert GP8PSK module to use S2API Alan Stern (28): [SCSI] simplify scsi_io_completion() [SCSI] Fix uninitialized variable error in scsi_io_completion HID: automatically call usbhid_set_leds in usbhid driver Fix misspellings in pm.h macros Driver core: move the bus notifier call points USB: straighten out inline code in sysfs.c USB: change interface to usb_lock_device_for_reset() USB: usb-storage: add "quirks=" module parameter USB: add asynchronous autosuspend/autoresume support USB: announce new devices earlier usb-storage: clean up unusual_devs.h USB: usb-storage: remove us->sensebuf USB: g_file_storage: add CD-ROM emulation USB: usb-storage: merge CB and CBI transport routines USB: usb-storage: merge ATAPI and QIC-157 protocol routines USB: storage: set bounce limit for non-DMA-capable host controllers USB: utilize round_jiffies_up_relative() USB: Enhance usage of pm_message_t USB: usb-storage: merge DPCM support into SDDR09 USB: utilize the bus notifiers USB: storage: add last-sector hacks USB: storage: make the "quirks=" module parameter writable USB: storage: set CAPACITY_HEURISTICS flag for bad vendors USB: fix up suspend and resume for PCI host controllers USB: automatically enable wakeup for PCI host controllers USB: cancel pending Set-Config requests if userspace gets there first USB: re-enable interface after driver unbinds PCI: fix incorrect error return in pci_enable_wake Alasdair G Kergon (2): dm mpath: move trigger_event to system workqueue dm snapshot: split out exception store implementations Aleksey Senin (2): RDMA/addr: Add support for translating IPv6 addresses RDMA/cma: Add IPv6 support Ales Jurik (1): V4L/DVB (9470): Disable PLL Loop while tuning Alessandro Zummo (8): rtc: add alarm/update irq interfaces rtc: pxa27x/pxa3xx driver fixes, revised rtc: rtc-ds1390 probe sequence and misc fixes rtc: kconfig cleanup rtc: rtc-max6902 fixes rtc: rtc-ds3234 fixes rtc: use set_mmss when set_time is not available rtc: rtc-ds1216 fixes Alex Chiang (2): btrfs-progs: Stop stomping on 'name' input parameter PCI hotplug: acpiphp whitespace cleanup Alex Raimondi (2): avr32: Allow reserving multiple pins at once avr32: Hammerhead board support Alex Zeffertt (1): xen: add xenfs to allow usermode <-> Xen interaction Alexander Beregalov (6): ext4: fix printk format warning ASoC: switch davinci DPRINTK to pr_debug() fix for tty-serial-move-port Staging: otus: remove dependence on kernel version Staging: me4000: switch to list_for_each*() Staging: usbip: switch to list_for_each_entry() Alexander Duyck (20): e1000e: enable ECC correction on 82571 silicon igb: update name to reflect new hardware igb: simplify swap in clean_rx_irq if using packet split igb: Fix tx/rx_ring_count parameters for igb on suspend/resume/ring resize ixgbe: this patch adds support for DCB to the kernel and ixgbe driver DCB: Add interface to query for the DCB capabilities of an device. DCB: Add interface to query # of TCs supported by device DCB: Add interface to query the state of PFC feature. DCB: Add support for DCB BCN e1000e: disable correctable errors for quad ports while going to D3 igb: do not use phy ops in ethtool test cleanup for non-copper parts igb: remove unneeded bit refrence when enabling jumbo frames igb: loopback bits not correctly cleared from RCTL register igb: link up/down messages must follow a specific format igb: Add support for pci-e Advanced Error Reporting igb/e1000e: Naming interrupt vectors igb: update handling of RCTL for smaller buffer sizes igb: Correctly determine pci-e function number in virtual environment igb: defeature tx head writeback igb: re-order queues to support cleaner use of ivar on 82576 Alexander van Heukelum (19): i386, dumpstack: move crash_kexec before bust_spinlocks(0) in oops_end x86, dumpstack: let signr=0 signal no do_exit x86_64, dumpstack: move kexec_crash from __die to oops_end x86, dumpstack: always call oops_exit from oops_end i386, dumpstack: use x86_64's method to account die_nest_count i386, dumpstack: use oops_begin/oops_end in die_nmi i386, dumpstack: unify die() x86: irq: fix apicinterrupts on 64 bits x86: entry_64.S: remove whitespace at end of lines x86: move entry_64.S register saving out of the macros x86: clean up after: move entry_64.S register saving out of the macros x86: introduce save_rest and restructure the PTREGSCALL macro in entry_64.S x86: entry_64.S: factor out save_paranoid and paranoid_exit x86: entry_64.S: split out some macro's and move common code to paranoid_exit x86: split out some macro's and move common code to paranoid_exit, fix x86: include ENTRY/END in entry handlers in entry_64.S x86: KPROBE_ENTRY should be paired wth KPROBE_END x86_64: get rid of the use of KPROBE_ENTRY / KPROBE_END i386: get rid of the use of KPROBE_ENTRY / KPROBE_END Alexey Dobriyan (92): net: reduce structures when XFRM=n net: don't use INIT_RCU_HEAD xfrm: C99 for xfrm_dev_notifier xfrm: remove unused struct xfrm_policy::next net: '&' redux netfilter: netns-aware ipt_addrtype netfilter: arptable_filter: merge forward hook netfilter: netns ebtables: part 1 netfilter: netns ebtables: part 2 netfilter: netns ebtables: more cleanup during ebt_unregister_table() netfilter: netns ebtables: ebtable_broute in netns netfilter: netns ebtables: ebtable_filter in netns netfilter: netns ebtables: ebtable_nat in netns netfilter: netns ebtables: br_nf_pre_routing_finish() fixup net: #ifdef ->sk_security net: mark flow_cache_cpu_prepare() as __init net: remove struct neigh_table::pde net: remove struct dst_entry::entry_size net: ifdef struct sock::sk_async_wait_queue net: use %pF for /proc/net/ptype ematch: simpler tcf_em_unregister() netfilter: xt_recent: don't save proc dirs netfilter: ip6table_filter: merge LOCAL_IN and FORWARD hooks netfilter: nf_conntrack_proto_gre: spread __exit net: fix tunnels in netns after ndo_ changes ah4/ah6: remove useless NULL assignments xfrm: remove useless forward declarations xfrm: initialise xfrm_policy_gc_work statically netns xfrm: add netns boilerplate netns xfrm: add struct xfrm_state::xs_net netns xfrm: per-netns xfrm_state_all list netns xfrm: per-netns xfrm_state_bydst hash netns xfrm: per-netns xfrm_state_bysrc hash netns xfrm: per-netns xfrm_state_byspi hash netns xfrm: per-netns xfrm_state_hmask netns xfrm: per-netns xfrm_state counts netns xfrm: per-netns xfrm_hash_work netns xfrm: per-netns state GC list netns xfrm: per-netns state GC work netns xfrm: per-netns km_waitq netns xfrm: add struct xfrm_policy::xp_net netns xfrm: per-netns policy list netns xfrm: per-netns xfrm_policy_byidx hash netns xfrm: per-netns xfrm_policy_byidx hashmask netns xfrm: per-netns inexact policies netns xfrm: per-netns xfrm_policy_bydst hash netns xfrm: per-netns policy counts netns xfrm: per-netns policy hash resizing work netns xfrm: propagate netns into bydst/bysrc/byspi hash functions netns xfrm: trivial netns propagations netns xfrm: state flush in netns netns xfrm: state lookup in netns netns xfrm: fixup xfrm_alloc_spi() netns xfrm: finding states in netns netns xfrm: state walking in netns netns xfrm: propagate netns into policy byidx hash netns xfrm: policy insertion in netns netns xfrm: policy flushing in netns netns xfrm: finding policy in netns netns xfrm: policy walking in netns netns xfrm: lookup in netns netns xfrm: xfrm_policy_check in netns netns xfrm: xfrm_route_forward() in netns netns xfrm: flushing/pruning bundles in netns netns xfrm: dst garbage-collecting in netns netns xfrm: xfrm_input() fixup netns xfrm: per-netns NETLINK_XFRM socket netns xfrm: xfrm_user module in netns netns xfrm: pass netns with KM notifications netns xfrm: KM reporting in netns netns xfrm: ->dst_lookup in netns netns xfrm: ->get_saddr in netns netns xfrm: flush SA/SPDs on netns stop netns PF_KEY: part 1 netns PF_KEY: part 2 netns PF_KEY: per-netns /proc/pfkey netns xfrm: AH/ESP in netns! netns xfrm: per-netns MIBs netns xfrm: /proc/net/xfrm_stat in netns netns xfrm: per-netns sysctls sched: move double_unlock_balance() higher netdev: remove pathetic compile-command lines UBIFS: fix section mismatch hydra: fix compilation simeth: convert to net_device_ops netns: igmp: allow IPPROTO_IGMP sockets in netns netns: igmp: make /proc/net/{igmp,mcfilter} per netns smsc911x: compile fix re netif_rx signature changes proc: stop using BKL proc: remove useless WARN_ONs proc: remove '##' usage Remove remaining unwinder code Alexey Fisher (1): ipw2200: make association only if SSID is known. Alexey Klimov (14): V4L/DVB (9518): radio-mr800: remove warn, info and err messages V4L/DVB (9539): dsbr100: add suspend and resume V4L/DVB (9540): dsbr100: add disabled controls and fix version V4L/DVB (9655): radio-mr800: fix unplug V4L/DVB (10052): radio-mr800: correct unplug, fix to previous patch V4L/DVB (10053): radio-mr800: disable autosuspend support V4L/DVB (10054): dsbr100: fix unplug oops V4L/DVB (10057): dsbr100: place dev_warn instead of printk V4L/DVB (10058): dsbr100: fix codingstyle, add dev_err messages V4L/DVB (10059): dsbr100: dev_err instead of dev_warn V4L/DVB (10060): dsbr100: fix and add right comments V4L/DVB (10061): dsbr100: increase driver version V4L/DVB (10062): dsbr100: change return values in 3 functions HID: don't allow DealExtreme usb-radio be handled by usb hid driver Alexey Korolev (8): MTD: nandsim: use less RAM [MTD] LPDDR qinfo probing. [MTD] LPDDR QINFO records definitions [MTD] LPDDR PFOW definition [MTD] LPDDR Command set driver [MTD] LPDDR added new pfow_base parameter [MTD] LPDDR extended physmap driver to support LPDDR flash [MTD] LPDDR Makefile and KConfig Alexey Starikovskiy (2): ACPI: EC: Add some basic check for ECDT data Newly inserted battery might differ from one just removed, so Alok Kataria (7): x86: add a synthetic TSC_RELIABLE feature bit x86: add X86_FEATURE_HYPERVISOR feature bit x86: Hypervisor detection and get tsc_freq from hypervisor x86: Add a synthetic TSC_RELIABLE feature bit. x86: Skip verification by the watchdog for TSC clocksource. x86: VMware: Fix vmware_get_tsc code x86: vmware: look for DMI string in the product serial key Amit Shah (4): KVM: x86: Fix typo in function name KVM: SVM: Set the 'g' bit of the cs selector for cross-vendor migration KVM: SVM: Set the 'busy' flag of the TR selector KVM: x86 emulator: Fix handling of VMMCALL instruction Anders Blomdell (1): Staging: comedi: add usb dt9812 driver Anders Larsen (1): qnx: include for definitions of __[us]{8,16,32,64} types Andi Kleen (6): x86: remove simnow earlyprintk support dm: support barriers on simple devices kconfig: add script to manipulate .config files on the command line kbuild: add a symlink to the source for separate objdirs x86: only scan the root bus in early PCI quirks compiler-gcc.h: add more comments to RELOC_HIDE Andre Noll (9): md: raid0_make_request(): Replace chunksize_bits by chunksect_bits. md: raid0_make_request(): Remove local variable chunk_size. md: raid0_make_request(): Replace local variable block by sector. md: raid0: Represent device offset in sectors. md: raid0: Represent zone->zone_offset in sectors. md: raid0 create_strip_zones(): Make two local variables sector-based. md: raid0 create_strip_zones(): Add KERN_INFO/KERN_ERR to printk's. md: raid0: Represent the size of strip zones in sectors. md: raid0: make hash_spacing and preshift sector-based. Andreas Eversberg (14): mISDN: Add feature via MISDN_CTRL_FILL_EMPTY to fill fifo if empty mISDN: Add some debug option for clock problems mISDN: Fix queue limit counting problem mISDN: Fixed more indexing bugs mISDN: Add ISDN sample clock API to mISDN core mISDN: Fix irq detection mISDN: Fix deactivation, if peer IP is removed from l1oip instance. mISDN: Correct busy device detection mISDN: Minor fixes mISDN: Add different different timer settings for hfc-pci mISDN: Add missing release functions mISDN: Minor cleanups mISDN: Added missing create_l1() call mISDN: Fix kernel crash when doing hardware conference with more than two members Andreas Gruenbacher (2): genksyms: track symbol checksum changes genksyms: allow to ignore symbol checksum changes Andreas Herrmann (10): x86: microcode_amd: fix wrong handling of equivalent CPU id x86: microcode_amd: fix typos and trailing whitespaces in log messages x86: microcode_amd: fix checkpatch warnings/errors x86: microcode_amd: fix compile warning x86: microcode_amd: don't pass superfluous function pointer for get_ucode_data x86: microcode_amd: replace inline asm by common rdmsr/wrmsr functions x86: microcode_amd: consolidate macro definitions x86: microcode_amd: remove (wrong) chipset deivce ID checks x86: microcode_amd: use 'packed' attribute for structs x86: microcode_amd: modify log messages Andreas Oberritter (1): V4L/DVB (9361): Dynamic DVB minor allocation Andres Salomon (13): ALSA: cs5535audio: stick AD1888 bitshift values into a header file ALSA: cs5535audio: suspend/resume callbacks are only defined with CONFIG_PM ALSA: cs5535audio: invert EAPD for OLPC (newer than B3) ALSA: cs5535audio: drop ec_analog_input flag for OLPC stuff ALSA: cs5535audio: decouple HPF from V_REFOUT in OLPC code ALSA: cs5535audio: create function for setting OLPC's Analog Input mode ALSA: cs5535audio: rename OLPC's analog input control && drop AD1888's HPF ALSA: cs5535audio: check OLPC's Analog Input status vis GPIO ALSA: cs5535audio: rename V_REFOUT control to MIC Bias ALSA: cs5535audio: for OLPC, default to Analog Input being off ALSA: cs5535audio: turn off mic bias on OLPCs by default ALSA: cs5535audio: clean up OLPC code ALSA: cs5535audio: ensure MIC Bias/Analog Input bail if not on an OLPC machine Andrew Morton (11): lock debug: sit tight when we are already in a panic profiling: clean up profile_nop() drivers/net/smc911x.c: smc911x_drv_probe() cleanup dlm: fs/dlm/ast.c: fix warning devpts: fix unused function warning drivers/char/cyclades.c: cy_pci_probe: fix error path mm: write_cache_pages more terminate quickly vmscan: shrink_active_list(): reduce lru_lock hold time dma_alloc_from_coherent(): fix fallback to generic memory dma_alloc_coherent: clean it up PCI: uninline pci_ioremap_bar() Andrew Patterson (8): ACPI/PCI: include missing acpi.h file in pci-acpi.h. ACPI/PCI: call _OSC support during root bridge discovery ACPI/PCI: PCI extended config _OSC support called when root bridge added ACPI/PCI: PCIe ASPM _OSC support capabilities called when root bridge added ACPI/PCI: PCIe AER _OSC support capabilities called when root bridge added ACPI/PCI: PCI MSI _OSC support capabilities called when root bridge added ACPI/PCI: remove obsolete _OSC capability support functions PCI: Use msleep instead of cpu_relax during ASPM link retraining Andrew Vasquez (8): [SCSI] qla2xxx: Remove support for reading/writing HW-event-log. [SCSI] qla2xxx: Don't fallback to interrupt-polling during re-initialization with MSI-X enabled. [SCSI] qla2xxx: Don't pollute kernel logs with ZIO/RIO status messages. [SCSI] qla2xxx: Collapse EFT/FCE copy procedures during a firmware dump. [SCSI] qla2xxx: Correct MQ-chain information retrieval during a firmware dump. [SCSI] qla2xxx: Use proper request/response queues with MQ instantiations. [SCSI] qla2xxx: Add ISP81XX support. [SCSI] qla2xxx: Update version number to 8.03.00-k1. Andrew Victor (4): [ARM] 5287/2: [AT91] Configuration of Static Memory Controller [ARM] 5288/1: [AT91] Remove SMC configuration from devices.c files [ARM] 5289/1: [AT91] Convert boards to use sam9_smc_configure() [ARM] 5290/1: [AT91] Add support for the Adeneo NeoCore 926 board Andrey Borzenkov (3): orinoco: reload firmware on resume orinoco: cache downloadable firmware image in memory for use during resume orinoco: indicate it is using dBm in wireless_stats and spy Andrey Yurovsky (4): ath5k: fix mesh point operation mac80211: allow all interfaces types to handle RX action frames mac80211: disable BSSID filtering for mesh interfaces mac80211_hwsim: enable Mesh Point operation Andy Adamson (4): NFS: remove white space from nfs4xdr.c NFS: fix tabs in nfs4xdr.c NFS: increment number of operations in each encode routine NFS: remove unused status from encode routines Andy Fleming (6): gianfar: Use gfar_halt to stop DMA in gfar_probe gianfar: Convert gianfar to an of_platform_driver gianfar: Add macros for stepping through BDs phylib: Remove unnecessary "reset" fixups in genphy_setup_forced gianfar: Fix packet drop when out of memory gianfar: Continue polling until both tx and rx are empty Andy Gospodarek (1): bonding: update docs to correctly reflect arp_ip_target behavior Andy Spencer (1): i8k: Enable i8k on Dell Precision Systems Andy Walls (39): V4L/DVB (9474): cx18: Remove redundant block scope variable in cx18_probe() for sparse V4L/DVB (9512): cx18: Fix write retries for registers that always change - part 3. V4L/DVB (9514): cx18: Fix PLL freq computation for debug display V4L/DVB (9513): cx18: Reduce number of mmio read retries V4L/DVB (9592): cx18: Use default kernel work queue; fix streaming flag for work handler V4L/DVB (9593): cx18: Add outgoing mailbox mutexes and check for ack via waitq vs poll V4L/DVB (9594): cx18: Roll driver version number due to significant changes V4L/DVB (9595): cx18: Improve handling of outgoing mailboxes detected to be busy V4L/DVB (9596): cx18: Further changes to improve mailbox protocol integrity & performnce V4L/DVB (9597): cx18: Minor fixes to APU firmware load process V4L/DVB (9598): cx18: Prevent CX23418 from clearing it's outgoing ack interrupts to driver V4L/DVB (9599): cx18: Fix unitialized variable problem upon APU firmware file read failure V4L/DVB (9720): cx18: Major rewrite of interrupt handling for incoming mailbox processing V4L/DVB (9721): cx18: Change to singlethreaded global work queue thread for deferable work V4L/DVB (9722): cx18: Convert per stream queue spinlocks into mutexes V4L/DVB (9723): cx18: Propagate staleness of mailbox and mdl ack data to work handler V4L/DVB (9724): cx18: Streamline cx18-io[ch] wrappers and enforce MMIO retry strategy V4L/DVB (9725): cx18: Remove unnecessary MMIO accesses in time critical irq handling path V4L/DVB (9726): cx18: Restore buffers that have fallen out of the transfer rotation V4L/DVB (9727): cx18: Adjust outgoing mailbox timeouts and remove statistics logging V4L/DVB (9728): cx18: Copyright attribution update for files modified by awalls V4L/DVB (9729): cx18: Update version due to significant irq handling changes V4L/DVB (9730): cx18: Quiet a sometimes common warning that often has benign consequences V4L/DVB (9776): cx18: Change to per CX23418 device work queues for deferrable work handling V4L/DVB (9778): cx18: cx18_writel_expect() should not declare success on a PCI read error V4L/DVB (9800): cx18: Eliminate q_io from stream buffer handling V4L/DVB (9801): cx18: Allow more than 63 capture buffers in rotation per stream V4L/DVB (9802): cx18: Add module parameters for finer control over buffer allocations V4L/DVB (9803): cx18: Increment version number due to siginificant buffering changes V4L/DVB (9804): cx18: Avoid making firmware API calls with the queue lock held V4L/DVB (9805): cx18: Port fix for raw/sliced VBI mixup from ivtv and cx25840 V4L/DVB (9806): cx18: Enable raw VBI capture V4L/DVB (9891): cx18 Replace magic number 63 with CX18_MAX_FW_MDLS_PER_STREAM V4L/DVB (9892): cx18: VBI comment corrections and comments about VBI issues V4L/DVB (9893): cx18: Convert some list manipulations to emphasize entries not lists V4L/DVB (9894): cx18: Use a known open task handle when setting stream CX2341x parameters V4L/DVB (9895): cx18: Refine the firmware load and firmware startup process V4L/DVB (9936): cx18: Disable locking of Video and Audio PLL for analog captures V4L/DVB (9937): cx18: Use a consistent crystal value for computing all PLL parameters Andy Whitcroft (22): netfilter: ip{,6}t_policy.h should include xp_policy.h serial: RS485 ioctl structure uses __u32 include linux/types.h checkpatch: add checks for in_atomic() checkpatch: comment detection may miss an implied comment on the last hunk checkpatch: widen implied comment detection to allow multiple stars checkpatch: structure member assignments are not complex checkpatch: __weak is an official attribute checkpatch: detect multiple bitfield declarations checkpatch: comment ends inside strings is most likely not an open comment checkpatch: dissallow spaces between stars in pointer types checkpatch: version: 0.25 checkpatch: update MAINTAINERS entry checkpatch: update copyrights checkpatch: allow parentheses on return for comparisons checkpatch: loosen spacing on typedef function checks checkpatch: fix continuation detection when handling spacing on operators checkpatch: track #ifdef/#else/#endif when tracking blocks checkpatch: do not report nr_static as a static declaration checkpatch: ensure we actually detect if assignments split across lines checkpatch: struct file_operations should normally be const checkpatch: fix the perlcritic errors checkpatch: version: 0.26 Aneesh (2): btrfs: Code cleanup Btrfs: Some code cleanups Aneesh Kumar K.V (21): ext4: Fix the delalloc writepages to allocate blocks at the right offset. ext4: avoid ext4_error when mounting a fs with a single bg ext4: Don't overwrite allocation_context ac_status ext4: sparse fixes ext4: Add blocks added during resize to bitmap ext4: Use EXT4_GROUP_INFO_NEED_INIT_BIT during resize ext4: cleanup mballoc header files jbd2: Call journal commit callback without holding j_list_lock tracing: branch tracer, fix writing to trace/trace_options ext4: don't use blocks freed but not yet committed in buddy cache init ext4: Fix lockdep recursive locking warning ext4: fix BUG when calling ext4_error with locked block group ext4: Fix race between read_block_bitmap() and mark_diskspace_used() ext4: Use high 16 bits of the block group descriptor's free counts fields ext4: code cleanup ext4: Fix the race between read_inode_bitmap() and ext4_new_inode() ext4: Use new buffer_head flag to check uninit group bitmaps initialization ext4: mark the blocks/inode bitmap beyond end of group as used ext4: Don't allow new groups to be added during block allocation ext4: Init the complete page while building buddy cache ext4: Fix s_dirty_blocks_counter if block allocation failed with nodelalloc Anirban Chakraborty (6): [SCSI] qla2xxx: Refactor qla data structures [SCSI] qla2xxx: Code changes for qla data structure refactoring [SCSI] qla2xxx: Fix for build warning [SCSI] qla2xxx: Code changes for vport bus reset [SCSI] qla2xxx: add support for multi-queue adapter [SCSI] qla2xxx: changes in multiq code Anisse Astier (1): trivial: chack -> check typo fix in main Makefile Anna Neal (2): libertas: Fine grained configuration of wake-on-lan. libertas: Create sysfs entry for changing the mesh probe response limit Anne Smorthit (1): Staging: comedi: add icp_multi driver Anton Vorontsov (41): powerpc: Remove device_type = "rtc" properties in .dts files [ARM] pxa: add basic support for HP iPAQ h5000 powerpc and sparc: Introduce dev_archdata node accessors of/i2c: Fill the archdata for I2C devices of/gpio: Implement of_get_gpio_flags() powerpc/qe: Move cmxgcr_lock definition from the ucc.c into the qe.c powerpc: Remove `have_of' global variable ucc_geth: Fix endless loop in stop_{tx,rx} routines ucc_geth: Fix TX watchdog timeout handling ucc_geth: Fix IRQ freeing code in ucc_geth_open() ucc_geth: Cleanup repetitive ucc_geth_memclean() calls ucc_geth: Fix IO memory (un)mapping code ucc_geth: Remove UGETH_FILTERING dead code of: Minor simplification for the of_parse_phandles_with_args() of: of_parse_phandles_with_args() learns to differentiate 'hole' cells of/gpio: Implement of_gpio_count() powerpc: Make default kexec/crash_kernel ops implicit powerpc: Remove default kexec/crash_kernel ops assignments powerpc: Prepare xmon_save_regs for use with kdump powerpc/32/kdump: Implement crash_setup_regs() using ppc_save_regs() powerpc/32: Allow __ioremap on RAM addresses for kdump kernel ucc_geth: Eliminate the need for forward references powerpc: Implement get_brgfreq() and get_baudrate() stubs powerpc/83xx: Fix sparse warnings in board files powerpc/83xx: Fix sparse warnings in mpc836x_mds.c powerpc/qe: Implement QE Pin Multiplexing API powerpc: Add device tree bindings for BCSR GPIO banks powerpc: Implement GPIO driver for simple memory-mapped banks powerpc/83xx: Add USB Host/Gadget support for MPC8360E-MDS boards powerpc/83xx: Add USB Host support for MPC8360E-RDK boards powerpc/fsl_pci: Fix sparse warnings powerpc/83xx: Fix few build errors with CONFIG_QUICC_ENGINE=n powerpc/qe: Fix few build errors with CONFIG_QUICC_ENGINE=n powerpc/qe: Select QE_USB with USB_GADGET_FSL_QE mmc: Add mmc_vddrange_to_ocrmask() helper function mmc_spi: Add support for OpenFirmware bindings rtc: bunch of drivers: fix 'no irq' case handing USB: protect hcd.h from multiple inclusions USB: fsl_qe_udc: Check for muram allocation errors powerpc/kdump: Use ppc_save_regs() in crash_setup_regs() powerpc/mm: Make clear_fixmap() actually work Antonio Ospite (7): V4L/DVB (9682): gspca: New subdriver parameter 'bulk_nurbs'. V4L/DVB (9712): gspca:Subdriver ov534 added. V4L/DVB (9855): gspca: Simplify frame rate setting and debug in ov534. V4L/DVB (9856): gspca: Use u8 values for USB control messages in ov534. V4L/DVB (9857): gspca: Use smaller chunks for urb buffer in ov534. V4L/DVB (9882): gspca - ov534: Fix typo. V4L/DVB (9883): gspca - ov534: Show sensor ID. Antti Palosaari (1): V4L/DVB (9526): af9015: add support for KWorld USB DVB-T TV Stick II (VS-DVBT 395U) Aoi Shinkai (1): sh: Delete unnecessary mov in the interrupt exception entry point. Aristeu Rozanski (3): x86, NMI watchdog: add support to enable and disable IOAPIC NMI x86, NMI watchdog: disable NMIs on LVT0 in case NMI watchdog is not working x86, nmi-watchdog: update procfs nmi_watchdog file documentation v2 Arjan van de Ven (38): debug: add notifier chain debugging debug: add notifier chain debugging, v2 x86: corruption-check: fix some style issues x86: corruption check: move the corruption checks into their own file x86: corruption check: run the corruption checks from a work queue x86: corruption-check: some post-move cleanups mutex: improve header comment to be actually informative about the API pci: use pci_ioremap_bar() in drivers/net tracing: add "power-tracer": C/P state tracer to help power optimization debug warnings: consolidate warn_slowpath and warn_on_slowpath debug warnings: print the DMI board info name in a WARN/WARN_ON scripts: improve the decodecode script resources: skip sanity check of busy resources [SCSI] advansys, arcmsr, ipr, nsp32, qla1280, stex: use pci_ioremap_bar() pci: use pci_ioremap_bar() in drivers/mmc expand some comments (d_path / seq_path) UIO: use pci_ioremap_bar() in drivers/uio pci: use pci_ioremap_bar() in drivers/misc oops: increment the oops UUID every time we oops scripts: script from kerneloops.org to pretty print oops dumps pci: use pci_ioremap_bar() in drivers/video pci: use pci_ioremap_bar() in drivers/edac async: Asynchronous function calls to speed up kernel boot fastboot: make scsi probes asynchronous fastboot: make the libata port scan asynchronous fastboot: Make libata initialization even more async async: make the final inode deletion an asynchronous event bootchart: improve output based on Dave Jones' feedback async: don't do the initcall stuff post boot USB: use pci_ioremap_bar() in drivers/usb resource: allow MMIO exclusivity for device drivers bootchart: improve output based on Dave Jones' feedback async: make async_synchronize_full() more serializing partial revert of asynchronous inode delete async: make async a command line option for now libata: Add a per-host flag to opt-in into parallel port probes libata: only ports >= 0 need to synchronize bootgraph: make the bootgraph script show async waiting time Arnaldo Carvalho de Melo (3): markers: add missing stdargs.h include, needed due to va_list usage blktrace: port to tracepoints dccp_diag: LISTEN sockets don't have CCIDs Arnaud Ebalard (1): net: Remove unused parameter of xfrm_gen_index() Arnd Bergmann (1): powerpc/cell: fix build breakage with CONFIG_SPUFS disabled Artem Bityutskiy (51): UBIFS: slight compression optimization UBIFS: use bit-fields to store compression type UBIFS: introduce compression mount options UBIFS: separate debugging fields out UBIFS: add debugfs support UBIFS: run debugging checks only if they are enabled UBIFS: dump stack in LPT check functions UBIFS: introduce LPT dump function UBI: fix warnings when debugging is enabled UBI: fix deadlock UBI: some code re-structuring UBI: fix error path UBI: handle write errors in WL worker MTD: tests: add mtd_oobtest MTD: tests: add mtd_pagetest MTD: tests: add mtd_readtest MTD: tests: add mtd_speedtest MTD: tests: add mtd_stresstest MTD: tests: add mtd_subpagetest UBI: document UBI ioctls MTD: tests: add mtd_torturetest MTD: add MTD tests to compilation [MTD] fix dataflash 64-bit divisions [MTD] fix m25p80 64-bit divisions UBIFS: use PAGE_CACHE_MASK correctly UBIFS: fix tnc dumping UBIFS: improve budgeting dump UBIFS: various comment improvements and fixes UBIFS: fix available blocks count UBIFS: use nicer 64-bit math UBIFS: re-calculate min_idx_size after the commit UBIFS: avoid unnecessary calculations UBI: fix checkpatch.pl warnings UBIFS: fix constants initialization UBIFS: fix file-system synchronization UBIFS: always commit in sync_fs UBIFS: use ubi_sync UBIFS: always commit on unmount UBIFS: restore budg_uncommitted_idx UBIFS: do not lie about used blocks UBIFS: simplify make_free_space UBIFS: fix sparse warnings UBIFS: fix checkpatch.pl warnings UBIFS: fix writing uncompressed files UBIFS: allow mounting when short of space UBIFS: fix numerous spelling mistakes UBIFS: print debugging messages properly UBIFS: add more useful debugging prints UBIFS: do not use WB_SYNC_HOLD [JFFS2] remove junk prototypes rbtree: add const qualifier to some functions Arun KS (3): ASoC: Add support for omap2evm board ASoC: Fix TWL4030 Kconfig dependency ARM: OMAP3: Pin multiplexing updates for 24xx and 34xx Arun R Bharadwaj (1): sched: add uid information to sched_debug for CONFIG_USER_SCHED Arve HjønnevĂ¥g (2): Staging: android: add binder driver Staging: android: add ram_console driver Arvo Jarve (7): V4L/DVB (9345): Add event with changed status only V4L/DVB (9429): Add support for the Satelco Easywatch DVB-S2 PCI card V4L/DVB (9430): stb0899: avoid parameter overwriting V4L/DVB (9432): Increment the AGC1 and AGC2 gain respectively, improves sensitivity slightly V4L/DVB (9433): Limit bandwidth with a 3dB response fall V4L/DVB (9438): Bug! RTF is signed V4L/DVB (9440): Bug in previous commit Atsushi Nemoto (6): tc35815: Define more Rx status bits [MTD] physmap: fix leak of memory returned by parse_mtd_partitions tc35815: Enable StripCRC feature tx4939ide: Do not use zero count PRD entry tx493[89]ide: Fix length for __ide_flush_dcache_range rtc: add rtc-tx4939 driver Avi Kivity (13): KVM: VMX: Conditionally request interrupt window after injecting irq KVM: x86 emulator: reduce duplication in one operand emulation thunks KVM: x86 emulator: consolidate emulation of two operand instructions KVM: x86 emulator: Extract 'pop' sequence into a function KVM: x86 emulator: allow pop from mmio KVM: x86 emulator: switch 'pop reg' instruction to emulate_pop() KVM: x86 emulator: fix ret emulation KVM: x86 emulator: fix popf emulation KVM: Remove extraneous semicolon after do/while KVM: Advertise the bug in memory region destruction as fixed KVM: Consolidate userspace memory capability reporting into common code KVM: MMU: Don't treat a global pte as such if cr4.pge is cleared KVM: Add locking to virtual i8259 interrupt controller BARRE Sebastien (1): rtc-ds1307: SMBus compatibility Babu Moger (1): [SCSI] scsi_dh_rdac: Add LSI vendor and product ids in rdac device list Bahadir Balban (1): RealView: Add support for the Cortex-A8 Platform Baseboard Balaji Rao (3): Btrfs: Remove unused variable in fixup_tree_root_location Introduce btrfs_iget helper NFS support for btrfs - v3 Balazs Scheidler (1): TPROXY: implemented IP_RECVORIGDSTADDR socket option Balbir Singh (4): memcg: memory cgroup hierarchy documentation memcg: memory cgroup resource counters for hierarchy memcg: memory cgroup hierarchical reclaim memcg: memory cgroup hierarchy feature selector Baodong Chen (1): Documentation/x86/boot.txt: payload length was changed to payload_length 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 Bartlomiej Zolnierkiewicz (72): ide: fix IDE ACPI regression breaking suspend ide: unify ide_intr()'s exit points ide: IDE settings don't need an ide_lock held ide: __ide_port_unregister_devices() doesn't need an ide_lock held ide: ide_hwgroup_t.rq doesn't need an ide_lock held ide: push ide_lock to __ide_end_request() ide: ide_lock + __blk_end_request() -> blk_end_request() ide: use queue lock instead of ide_lock when possible ide: replace the global ide_lock spinlock by per-hwgroup spinlocks (v2) ide: cleanup ide_do_request() ide-cd: remove obsolete seek optimization ali14xx: doesn't use shared IRQs cmd64x: set IDE_HFLAG_SERIALIZE explictly for CMD646 gayle: set IDE_HFLAG_SERIALIZE explictly ide: fix ->quirk_list checking in ide_do_request() ide: always set nIEN on idle devices rz1000: apply chipset quirks early (v2) ide: add ->max_sectors field to struct ide_port_info trm290: add IDE_HFLAG_TRM290 host flag cy82c693: remove superfluous ide_cy82c693 chipset type ide: rework handling of serialized ports (v2) ide: remove redundant code from ide_end_drive_cmd() ide: remove inline tags from ide-probe.c ide: checkpatch.pl fixes for ide-lib.c ide: use ATA_DMA_* defines in ide-dma-sff.c ide: move Power Management support to ide-pm.c ide: move legacy ISA/VLB ports handling to ide-legacy.c (v2) ide: remove superfluous local_irq_{save,restore}() from ide_dump_status() ide: push local_irq_{save,restore}() to do_identify() ide-cd: remove dead dsc_overlap setting tx493x: fix indentation ide: remove chipset type fixup from ide_host_register() ide: small ide_register_port() cleanup ide: factor out device type classifying from do_identify() ide: move sysfs support to ide-sysfs.c ide: don't execute the next queued command from the hard-IRQ context (v2) ide: remove IDE PM hack from do_ide_request() ide: remove "paranoia" checks for hwgroup->busy ide: add ide_[un]lock_hwgroup() helpers ide: use per-device request queue locks (v2) ide: fix LOCKDEP warning ide: fix setting nIEN on idle devices ide: add ->cur_port to struct ide_host and use it for serialized hosts ide: use per-port IRQ handlers ide: remove hwgroup->hwif and {drive,hwif}->next ide: use lock bitops for ports serialization (v2) ide: merge ide_hwgroup_t with ide_hwif_t (v2) ide: update ide_unregister() documentation ide: move ide_init_port_data() and friends to ide-probe.c ide: remove HWIF() macro ide: remove local_irq_set() macro ide: remove ide_pci_enablebit_t typedef ide: remove 'byte' typedef ide: remove ide_driver_t typedef ide: unexport ide_wait_not_busy() ide: remove ->error method from struct ide_driver amd74xx: use ide_get_pair_dev() helper cmd640: use ide_get_pair_dev() helper cmd64x: use ide_get_pair_dev() helper it821x: use ide_get_pair_dev() helper ide: NUMA aware allocation of host and port structures ide: dynamic allocation of device structures ide: add port and host iterators ide: make "paranoia" ->handler check in ide_intr() more strict ide: use ide_pci_is_in_compatibility_mode() helper in setup-pci.c ide: remove superfluous hwif variable assignment from ide_timer_expiry() ide: struct ide_atapi_pc - remove unused fields and update documentation ide: remove unused ide_hwif_t.sg_mapped field ide: remove now redundant ->cur_dev checks ide: fix ide_port_scan() to do ACPI setup after initializing request queues ide: update warm-plug HOWTO piix: sync ich_laptop[] with ata_piix.c Baruch Siach (2): enc28j60: reduce the number of spi transfers in enc28j60_set_bank() enc28j60: fix RX buffer overflow Bastian Blank (1): sparc: Use 64BIT config entry Becky Bruce (5): powerpc: Add sync_*_for_* to dma_ops powerpc: Fix !CONFIG_PPC_NEED_DMA_SYNC_OPS build warning swiotlb: store phys address in io_tlb_orig_addr array swiotlb: add support for systems with highmem powerpc/86xx: Update 8641hpcn dts file to match latest u-boot Ben Dooks (137): [ARM] S3C: Move regs-watchdog.h to arch/arm/plat-s3c/include/plat [ARM] S3C: Move i2c headers to arch/arm/plat-s3c/include/plat. [ARM] S3C: Move regs-rtc.h to arch/arm/plat-s3c/include/plat [ARM] S3C: Move nand headers to arch/arm/plat-s3c/include/plat [ARM] S3C: Move regs-ac97.h to arch/arm/plat-s3c/include/plat. [ARM] S3C24XX: Movev udc headers to arch/arm/plat-s3c24xx/include/plat [ARM] S3C: Move plat/regs-spi.h to arch/arm/plat-s3c/include/plat. [ARM] S3C24XX: Move mci.h to arch/arm/plat-s3c24xx/include/plat Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into s3c-moves2 [ARM] KS8695: Add GPIO to IRQ mapping function [ARM] S3C24XX: Default SPI pin configuration for SPI [ARM] S3C: Add for initial cpufreq definitions [ARM] S3C2410: Move base clock code to plat-s3c24xx [ARM] S3C: Make common [ARM] S3C24XX: Move vmalloc.h to plat-s3c [ARM] S3C24XX: Add default header [ARM] S3C24XX: Move initialisation code to arch/arm/plat-s3c [ARM] S3C24XX: Split DCLK/CLKOUT definitions out of clock.c [ARM] S3C24XX: Split pll code out of regs-clock.h [ARM] CPUFREQ: S3C24XX serial CPU frequency scaling support. [ARM] S3C24XX: Change clock locking to use spinlocks. [ARM] S3C24XX: Update clock data on resume [ARM] S3C24XX: Move headers from plat-s3c24xx to plat-s3c [ARM] S3C: Move S3C2410_EXTINT to common regs-irqtype.h header [ARM] S3C: Move time.c to arch/arm/plat-s3c [ARM] S3C: Move core clock support to plat-s3c [ARM] S3C: Move pwm-clock.c to arch/arm/plat-s3c [ARM] S3C: BUG_ON() if clock has already been registered [ARM] S3C24XX: Reduce code lineage of gpiolib.c [ARM] S3C: Add set_rate/round_rate methods for pwm-scaler clock [ARM] S3C: Fix scaler1 clock rate information [ARM] S3C24A0: Debug macro definitions [ARM] S3C24XX: Split map.h into plat-s3c24xx and mach-s3c2410 [ARM] S3C24A0: Initial architecture support files [ARM] S3C24XX: Split timer pending code out [ARM] S3C64XX: Initial arch directory [ARM] S3C64XX: Initial arch header files [ARM] S3C64XX: Add [ARM] S3C64XX: Add [ARM] S3C64XX: Add [ARM] S3C64XX: Add system boot-time support [ARM] S3C64XX: Add UARTdevice definitions [ARM] S3C64XX: Add IRQ definitions for VIC0 and VIC1 [ARM] S3C64XX: Basic CPU detection and map initialisation [ARM] S3C6410: Initial CPU support code [ARM] S3C64XX: Add VIC0 and VIC1 sourced interripts [ARM] S3C6400: Add [ARM] S3C: Fix PWM build on S3C6400 [ARM] S3C64XX: Map timer memory and interrupts [ARM] S3C64XX: Common init code for S3C6400 and S3C6410 [ARM] S3C64XX: Add PLL definitions [ARM] S3C64XX: Add initial clock framework [ARM] S3C: Add TICK_MAX for timer code [ARM] S3C64XX: Clock support for S3C6400/S3C6410 [ARM] S3C6400: serial support for S3C6400 and S3C6410 SoCs [ARM] S3C: Update serial driver IRQ handling [ARM] S3C64XX: Demux UART interrupts [ARM] VIC: Update asm/hardware/vic.h with PL192 information [ARM] S3C64XX: Map GPIO block [ARM] S3C64XX: Add IRQ_EINT support [ARM] SMDK6410: Initial machine support [ARM] S3C64XX: Add s3c6400_defconfig [ARM] S3C64XX: Reduce some output from INFO to DEBUG [ARM] S3C64XX: Fix warnings from map_io initilaisers [ARM] S3C64XX: Add external interrupt group definitions [ARM] S3C: Move HSMMC device definition to plat-s3ec [ARM] SMDK6410: Add HSMMC0 device [ARM] S3C64XX: Add gpio bank numbering [ARM] S3C: Move common GPIO code from plat-s3c24xx [ARM] S3C: Add GPIO chip tracking [ARM] S3C64XX: GPIO library support [ARM] S3C: Add new GPIO configuration calls [ARM] S3C6400: Register clk_fout_epll [ARM] S3C6XX: Add enable for clk_48 [ARM] S3C: Add Samsung SDHCI register definitions [ARM] S3C6410: Add helper for setting SDHCI device information [ARM] S3C: Add SDHCI (HSMMC) channel 1 device definition [ARM] S3C: Make i2c device definition common to plat-s3c [ARM] S3C64XX: GPIO definitions for BANKS A,B,C [ARM] S3C64XX: GPIO definitions for BANKS D,E,F [ARM] S3C64XX: GPIO definitions for BANKS G,H,I,J [ARM] S3C64XX: GPIO definitions for BANKS N,O,P,Q [ARM] S3C64XX: Add i2c device setup for I2C device 0 [ARM] SMDK6410: Add i2c device [ARM] S3C64XX: Setup functions for i2c bus 1. [ARM] SMDK6410: Add second I2C channel. [ARM] SMDK6410: Add I2C device board information [ARM] S3C: Add header for initial i2c device core setup. [ARM] S3C64XX: Fix missing definition of s3c64xx_init_io() [ARM] S3C64XX: Fix MMC0 clock source register mask [ARM] SMDK6410: Add availability of second hsmmc channel [ARM] s3c6400_defconfig: Add I2C driver and devices [ARM] s3c6400_defconfig: Add SDHCI driver [ARM] S3C6410: Fix gpio configuration for channel 1. [ARM] S3C: Fix SDHCI setup compilation [ARM] S3C: Add register defines for new style framebuffer [ARM] S3C: Add i2c1 device definition [ARM] S3C: Add new FB device definition [ARM] S3C64XX: Add standard S3C64XX 24BPP LCD GPIO setup [ARM] SMDK6410: Add LCD (LCD48WVGA) definitions [ARM] S3C64XX: Update TCFG for new timer divider settings. [ARM] S3C: Update time initialisation to fix S3C64XX time problems [ARM] S3C: Add UART FIFO selection during arch decompression i2c-s3c2410: Fixup style problems from checkpatch.pl i2c-s3c2410: Use platform data for gpio configuration i2c-s3c2410: Remove default platform data. i2c-s3c2410: Allow more than one i2c-s3c2410 adapter i2c-s3c2410: Change IRQ to be plain integer. Merge branch 'i2c-for-ben' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 into i2c-next i2c-omap: fix type of irq handler function [ARM] S3C24XX: ADC driver core [ARM] JIVE: fix spi gpio implementation [ARM] S3C24XX: Add extra GPIOs via Kconfig [ARM] ANUBIS: Add SM501 GPIO and update I2C setup [ARM] S3C24XX: AT2440EVB MMC [ARM] AT2440EVB: LCD frame buffer support. Merge branch 'next-s3c24xx' into next-merged Merge branch 'next-s3c64xx' into next-merged Merge branch 'next-s3c64xx-device' into next-merged [ARM] S3C: Update number of serial ports [ARM] S3C: Update CONFIG_SERIAL_SAMSUNG_UARTS handling [ARM] S3C24XX: Add fourth UART definition for S3C2443 [ARM] S3C64XX: Remove __virt_to_bus/__bus_to_virt macros [ARM] S3C: Remove cpufreq warnings for unset serial information [ARM] S3C24A0: Remove duplicate file [ARM] S3C: Remove unnecessary includes [ARM] 5349/1: VFP: Add PM code to save and restore current VFP state [ARM] S3C64XX: Ensure CPU_V6 is selected Merge branch 'i2c-next-s3c' into i2c-next spi: use generic gpio calls in spi_s3c24xx_gpio USB: gadget: s3c2410_udc uses standard GPIO calls [ARM] arch/arm/kernel/isa.c: missing definition of register_isa_ports [ARM] footbridge: add isa_init_irq() to common header [ARM] footbridge: dc21285.c warning fixes [ARM] S3C24XX: Add gpio_to_irq() facility [ARM] S3C24XX: Add gpio_to_irq implementation [ARM] Ensure CONFIG_SERIAL_SAMSUNG_UARTS is always set. Ben Efros (2): USB: storage devices and SAT USB: storage: Flag devices known to support SANE_SENSE Ben Greear (1): ipv4: Fix ARP behavior with many mac-vlans Ben Hutchings (43): sfc: Correct address of gPXE boot configuration in EEPROM sfc: Clean up non-volatile memory partitioning sfc: Expose flash region storing boot code as MTD sfc: Use lm87 and lm90 drivers for board temperature/power monitoring sfc: Do not reset when hardware monitor detects a fault sfc: Fix dependency for SFC_MTD sfc: Board support fixes sfc: Change SPI lengths to type size_t sfc: Remove unneeded register write sfc: Correct interpretation of second param to ethtool phys_id() sfc: Clean up waits for flash/EEPROM operations sfc: Work around unreliable strap pins sfc: Restore phy_flash_cfg module parameter sfc: Provide hints to irqbalance daemon sfc: Abbreviate self-test names so they are not truncated sfc: Don't count RX checksum errors during loopback self-test sfc: Remove MII extension cruft sfc: Add support for MMDs numbered >15 sfc: Add phy_type device attribute sfc: Clean up board identification sfc: Clean up MDIO flag setting sfc: Add support for sub-10G speeds sfc: Implement auto-negotiation sfc: Rework MAC, PHY and board event handling sfc: Add support for Solarflare 10Xpress SFT9001 sfc: Add support for SFN4111T sfc: Remove leading spaces sfc: Specify a meaningful component for loopback RX-side and PHY tests sfc: Use mutex_lock_interruptible() for ethtool EEPROM access sfc: Use model numbers for PHY type names sfc: Use kzalloc() to ensure struct efx_spi_device is fully initialised sfc: Fix synchronisation of efx_mtd_{probe,rename,remove} sfc: Version 2.3 sfc: Generate unique names for per-NIC workqueues sfc: Fix unreliable link detection in some loopback modes sfc: Clean up PHY mode management in loopback self-test sfc: Merge top-level functions for self-tests sfc: Add support for multiple PHY self-tests sfc: SFT9001: Add cable diagnostics sfc: When disabling the NIC, close the device rather than unregistering it sfc: If AN is enabled, always read speed/duplex from the AN advertising bits PCI: Add pci_clear_master() as opposite of pci_set_master() net: sfc: Use pci_clear_master() to disable bus mastering Ben Nizette (1): avr32: Remove DMATEST from defconfigs Ben Stanley (2): ALSA: ca0106 Add comments to snd_ca0106_details struct ALSA: ca0106 MSI K8N Diamond MB spi_dac 2->1 Benjamin Herrenschmidt (33): powerpc: Fix domain numbers in /proc on 64-bit powerpc: Silence software timebase sync powerpc/pci: Cleanup debug printk's powerpc/pci: Use common PHB resource hookup powerpc/pci: Remove pcibios_do_bus_setup() powerpc/pci: Split pcibios_fixup_bus() into bus setup and device setup powerpc/eeh: Make EEH device add/remove more robust powerpc/pci: Make pcibios_allocate_bus_resources more robust powerpc/pci: Fix various pseries PCI hotplug issues powerpc/pci: Cosmetic cleanups of pci-common.c powerpc: Fix ppc32 mm_struct CPU tracking in SMP powerpc/4xx: Add support for ISA holes on 4xx PCI/X/E powerpc: Fix bogus cache flushing on all 40x and BookE processors v2 powerpc: Fix asm EMIT_BUG_ENTRY with !CONFIG_BUG powerpc/mm: Add local_flush_tlb_mm() to SW loaded TLB implementations powerpc/mm: Rename tlb_32.c and tlb_64.c to tlb_hash32.c and tlb_hash64.c powerpc/mm: Remove flush_HPTE() powerpc/4xx: Extended DCR support v2 powerpc/mm: Split mmu_context handling powerpc/mm: Rework context management for CPUs with no hash table powerpc/mm: Introduce MMU features powerpc/mm: Add SMP support to no-hash TLB handling powerpc/mm: Split low level tlb invalidate for nohash processors powerpc/44x: No need to mask MSR:CE, ME or DE in _tlbil_va on 440 powerpc/mm: Runtime allocation of mmu context maps for nohash CPUs powerpc/mm: Rework usage of _PAGE_COHERENT/NO_CACHE/GUARDED powerpc/44x: 44x TLB doesn't need "Guarded" set for all pages powerpc: Fix missing 'blr' in _tlbia() Merge commit 'kumar/kumar-next' into next PCI: Add legacy_io/mem to all busses Merge commit 'origin/master' into next powerpc/pci: Reserve legacy regions on PCI powerpc: Fix missing semicolons in mmu_decl.h Benjamin Krill (2): powerpc/cell: add QPACE as a separate Cell platform serial: Add driver for the Cell Network Processor serial port NWP device Benjamin Marzinski (1): GFS2: Fix typo in gfs_page_mkwrite() Benjamin Thery (11): net: fix /proc/net/ip_mr_cache display - V2 net: /proc/net/ip_mr_cache, display Iif as a signed short netns: ip6mr: allocate mroute6_socket per-namespace. netns: ip6mr: dynamically allocates vif6_table netns: ip6mr: store netns in struct mfc6_cache netns: ip6mr: dynamically allocate mfc6_cache_array netns: ip6mr: declare counter cache_resolve_queue_len per-namespace netns: ip6mr: declare mroute_do_assert and mroute_do_pim per-namespace netns: ip6mr: declare reg_vif_num per-namespace netns: ip6mr: declare ip6mr /proc/net entries per-namespace netns: ip6mr: enable namespace support in ipv6 multicast forwarding code Benny Halevy (8): sunrpc: get rid of rpc_rqst.rq_bufsize nfs: return compound hdr.status when there are no op replies nfs: remove incorrect usage of nfs4 compound response hdr.status NFS: fix comment placement in nfs4xdr.c nfsd: dprint each op status in nfsd4_proc_compound nfsd: git rid of nfs4_cb_null_ops declaration nfsd: last_byte_offset nfsd: get rid of NFSD_VERSION Benoit PAPILLAULT (2): ath9k : Display MAC/BB and RF version at startup (v2) ath5k: fix 802.11 header padding on RX, unpadding on TX Bernd Porr (2): Staging: comedi: add usb usbdux driver Staging: comedi: add usb usbduxfast driver Bernd Schmidt (5): Blackfin arch: Remove all traces of the relocation stack Blackfin arch: fix bugs in linker script when using upstream binutils Blackfin arch: fix bug - crashes in tcp_v4_send_reset Blackfin arch: Replace C version of 64 bit multiply with hand optimized assembly Blackfin arch: Faster C implementation of no-MPU CPLB handler Bernhard Walle (1): pci, acpi: reroute PCI interrupt to legacy boot interrupt equivalent, warning fix Bharata B Rao (3): sched: include group statistics in /proc/sched_debug sched: add hierarchical accounting to cpu accounting controller sched: use RCU variant of list traversal in for_each_leaf_rt_rq() Bjorn Helgaas (44): clocksource, acpi_pm.c: put acpi_pm_read_slow() under CONFIG_PCI ACPI: PCI: use conventional PCI address format ACPI: PCI: remove unnecessary null pointer checks ACPI: PCI: simplify buffer management for evaluating _PRT ACPI: PCI: ignore _PRT function information ACPI: PCI: fix GSI/IRQ naming confusion ACPI: PCI: move struct acpi_prt_entry declaration out of public header file ACPI: PCI: add a helper to convert _PRT INTx pin number to name ACPI: PCI: always use the PCI INTx pin values, not the _PRT ones ACPI: PCI: use 1-based encoding for _PRT quirks ACPI: PCI: lookup _PRT entry by PCI dev and pin, not segment/bus/dev/pin ACPI: PCI: tweak _PRT lookup debug ACPI: PCI: remove callback from acpi_pci_irq_lookup & acpi_pci_irq_derive ACPI: PCI: use positive logic to simplify code ACPI: PCI: follow typical PCI INTx swizzling pattern ACPI: PCI: combine lookup and derive ACPI: PCI: simplify list of _PRT entries ACPI: PCI: simplify struct acpi_prt_entry ACPI: PCI: expand acpi_pci_allocate_irq() and acpi_pci_free_irq() inline ACPI: PCI: whitespace and useless initialization cleanup ACPI: PCI: add HP copyright PCI: make PCI bus resource messages more meaningful x86/PCI: make PCI bus locality messages more meaningful PCI: pcie port driver: remove extra printks PCI hotplug: cpqphp: use config space PCI interrupt pin encoding PCI: use config space encoding in pci_get_interrupt_pin() x86/PCI: use config space encoding for interrupt pins x86/PCI: minor logic simplications PCI: add pci_swizzle_interrupt_pin() PCI: arm: use generic pci_swizzle_interrupt_pin() PCI: sh: use generic pci_swizzle_interrupt_pin() PCI: powerpc: use generic pci_swizzle_interrupt_pin() PCI: alpha: use generic pci_swizzle_interrupt_pin() PCI: x86: use generic pci_swizzle_interrupt_pin() PCI: mips: use generic pci_swizzle_interrupt_pin() PCI: parisc: use generic pci_swizzle_interrupt_pin() PCI: add pci_common_swizzle() for INTx swizzling PCI: alpha: use generic INTx swizzle from PCI core PCI: arm: use generic INTx swizzle from PCI core PCI: mips: use generic INTx swizzle from PCI core PCI: sh: use generic INTx swizzle from PCI core PCI: x86/visws: use generic INTx swizzle from PCI core PCI: use dev_printk for PCI bus resource mssages x86/PCI: use dev_printk for PCI bus locality messages Bob Copeland (11): mac80211: fix a few typos in mac80211 kernel doc ath9k: remove useless conditional ath5k: fix keytable type buglet in ath5k_hw_reset_key ath5k: enable hardware encryption for WEP ath5k: update keycache to support TKIP handling ath5k: set mac address in add_interface ath5k: preserve higher order bits when setting mac address ath5k: clean up ath5k_hw_set_key ath5k: enable combined michael mic in key cache ath5k: fix endianness of bitwise ops when installing mic ath5k: correct packet length in tx descriptors Bob Moore (25): ACPICA: Fix several warnings under gcc 4 compiler ACPICA: Update FACS waking vector interfaces ACPICA: Optimize execution of AML While loops ACPICA: Add a mechanism to escape infinite AML While() loops ACPICA: Update debug output for IndexField I/O ACPICA: Fix namestring for the SystemCMOS address space ACPICA: Emit warning if two FACS or DSDT tables found in the FADT ACPICA: Add global pointer for FACS table to simplify FACS access ACPICA: Reformat comments, no functional changes ACPICA: Add support to externally execute _OSI method ACPICA: Remove references to obsolete ACPI_DUMP_APP ACPICA: Fix to allow aliases within ASL namepaths ACPICA: Add Buffer->String conversion for predefined methods ACPICA: Consolidate method arg count validation code ACPICA: Update version to 20081031 ACPICA: New: acpi_get_gpe_device interface ACPICA: New: Public GPE group enable/disable interfaces ACPICA: New: acpi_read and acpi_write public interfaces ACPICA: Move all public H/W interfaces to new hwxface ACPICA: New: acpi_reset interface - write to reset register ACPICA: Restructure includes into public/private ACPICA: Fixes for various ACPI data tables ACPICA: Add ACPI_MUTEX_TYPE configuration option ACPICA: FADT parsing changes and fixes ACPICA: FADT: Update error msgs for consistency Borislav Petkov (23): ide-cd: move debug defines into header ide: make IDE_AFLAG_.. numbering continuous again ide-atapi: add a dev_is_idecd-inline ide-atapi: combine drive-specific assignments ide-atapi: setup dma for ide-cd ide-atapi: accomodate transfer length calculation for ide-cd ide-atapi: teach ide atapi about drive->waiting_for_dma ide-cd: move cdrom_timer_expiry to ide-atapi.c ide-atapi: remove ide-scsi remnants from ide_issue_pc ide-atapi: remove ide-scsi remnants from ide_transfer_pc() ide-atapi: remove ide-scsi remnants from ide_pc_intr() ide: remove the last ide-scsi remnants ide-atapi: compute cmd_len based on device type in ide_transfer_pc ide-atapi: assign expiry and timeout based on device type ide-atapi: split drive-specific functionality in ide_issue_pc ide-cd: remove xferlen arg to cdrom_start_packet_command ide-cd: remove handler wrappers ide-atapi: remove timeout arg to ide_issue_pc ide-atapi: put the rest of non-ide-cd code into the else-clause of ide_transfer_pc ide-atapi: start dma in a drive-specific way ide-cd: wait for DRQ to get set per default ide-cd: start DMA before sending the actual packet command ide-cd: convert to ide-atapi facilities Brent Casavant (1): ioc4: automatically load sgiioc4 subordinate module Brian Haley (1): bonding: send IPv6 neighbor advertisement on failover Brian King (19): powerpc: Update page-in counter for CMM powerpc: Disable Collaborative Memory Manager for kdump powerpc: Add reboot notifier to Collaborative Memory Manager [SCSI] ibmvfc: Fix log level filtering [SCSI] ibmvfc: Fix error reporting for some FC errors [SCSI] ibmvfc: Error handling fixes [SCSI] ibmvfc: Fix target initialization failure retry handling [SCSI] ibmvfc: Quiet gcc warning in ibmvfc_reset_device [SCSI] ibmvfc: Driver version 1.0.3 [SCSI] ibmvfc: Fix oops in interrupt handler [SCSI] ibmvfc: Fix command timeouts due to cached CRQ access [SCSI] ibmvfc: Handle port login required response [SCSI] ibmvfc: Driver version 1.0.4 [SCSI] ibmvfc: Delay NPIV login retry and add retries [SCSI] ibmvfc: Fix errors due to inconsistent command data [SCSI] ibmvscsi: Don't fail EH due to insufficient resources [SCSI] ibmvfc: Improve async event handling [SCSI] ibmvfc: Fixup command response translation [SCSI] ibmvscsi: Make max_requests module parameter more accurate Brice Goglin (10): myri10ge: fix per-slice rx/tx_dropped counters myri10ge: remove hardcoded sram_size myri10ge: update DCA comments myri10ge: update firmware headers myri10ge: check fragmentation in LRO get_frag_header() myri10ge: update firmware headers to 1.4.37 myri10ge: update driver version to 1.4.4-1.395 myri10ge: print MAC and serial number on probe failure mm: rework do_pages_move() to work on page_sized chunks mm: move_pages: no need to set pp->page to ZERO_PAGE(0) by default Bruce Allan (12): e1000e: commit speed/duplex changes for m88 PHY e1000e: 82571 check for link fix on 82571 serdes e1000e: update comments listing supported parts for each MAC family e1000e: check return of pci_save_state e1000e: ESB2 config after link up e1000e: link up/down messages must follow a specific format e1000e: sync change flow control variables with ixgbe e1000e: cosmetic newline in debug message e1000e: store EEPROM version number to prevent unnecessary NVM reads e1000e: fix incorrect link status when switch module pulled e1000e: check return code from NVM accesses and fix bank detection e100: cosmetic cleanup Bruno PrĂ©mont (1): viafb: fix crashes due to 4k stack overflow Bryan Wu (13): Blackfin arch: add support for Blackfin latest processor family BF51x Blackfin arch: fix bug - gpio_bank() macros messed up bank number caculating with positioning a gpio Blackfin arch: Use GPIO_BANKSIZE macro to replace const number 16 for GPIO_BANK_NUM macro caculating ASoC: Blackfin: Simplify the MMAP_SUPPORT macros protected code Blackfin arch: Fix bug - wrong endpoint number and dma channels of USB USB: musb: use new platform data interface of musb to replace old one USB: musb: add Blackfin driver to MUSB framework (v2) USB: musb: add Blackfin version low level register accessing helper functions USB: musb: enable low level DMA operation for Blackfin USB: musb: add Blackfin specific configuration to MUSB USB: musb: add Blackfin Kconfig options and Makefile USB: musb: Blackfin provides read/write I/O accessor in header files USB: musb: Kill some compiling warning in musb Blackfin part Carl Love (2): powerpc/oprofile: IBM CELL: cleanup and restructuring powerpc/oprofile: IBM CELL: add SPU event profiling support Casey Schaufler (1): smack: Add support for unlabeled network hosts and networks Catalin Marinas (20): Add "thumbee" to the hwcap_str array Add HWCAP_NEON to the ARM hwcap.h file ARMv7: Add extra barriers for flush_cache_all compressed/head.S ARMv7: Branch over conditional undefined instructions in vfphw.S Do not flush the cache in flush_cache_v(un)map for VIPT caches ARMv7: Do not set TTBR0 in __v7_setup RealView: Change the clcd panel controls to use RGB instead of BGR RealView: Add debug-macro.S support for the PB1176 platform RealView: Make more vmalloc space by changing IO_ADDRESS Modern processors may need to drain the WB before WFI Fix the teehbr_read function prototype slab: Update the kmem_cache_create documentation regarding the name parameter RealView: Allow PHYS_OFFSET at 0x70000000 RealView: Use only the shadow mapping of ARM11MPCore local timers RealView: Clean up the machine_is_*() calls in platsmp.c RealView: Refactor the Ethernet device registration RealView: Allow the in-kernel smc911x.c driver on RealView RealView: Update the realview_defconfig file to a newer kernel RealView: Update the realview-smp_defconfig file to a newer kernel RealView: Select CPU_V6 for MACH_REALVIEW_PB11MP Chaithrika U S (1): phy: Add LSI ET1011C PHY driver Chandra Seetharaman (2): [SCSI] scsi_dh: Make sure the state of a path is set properly when controller is swapped from passive to active [SCSI] scsi_dh: Retry mode select in rdac device handler Chandra shekhar (1): i2c-omap: Add support for omap34xx Chatre, Reinette (2): iwlwifi: replace magic constants with define iwlwifi: store ucode version number Cheng Renquan (3): block: use cancel_work_sync() instead of kblockd_flush_work() md: use list_for_each_entry macro directly md: need another print_sb for mdp_superblock_1 Chien Tung (2): RDMA/nes: Add loopback check to make_cm_node() RDMA/nes: Cleanup warnings Chr (1): p54: initialize all deprecated fields Chris Bagwell (1): LSA: hda - Add HP Acacia detection Chris Ball (1): ALSA: cs5535audio: enable OLPC's V_REFOUT bias when recording Chris J Arges (1): serial/pmac_zilog: Add console polling support Chris Mason (648): Btrfs: Initial checkin, basic working tree code Btrfs: Faster deletes, add Makefile and kerncompat Btrfs: Add backing store, memory management Btrfs: Commenting/cleanup Btrfs: early extent mapping support Btrfs: add mkfs.c Btrfs: extent fixes Btrfs: switch to early splits Btrfs: Block sized tree extents and extent deletion Btrfs: Break up ctree.c a little Btrfs: push_leaf_right Btrfs: cleanup & comment Btrfs: Add fsx-style randomized tree tester Btrfs: fixup dbfile perms Btrfs: u64 cleanups Btrfs: 32bit cleanups Btrfs: more 32 bit cleanups Btrfs: Take out the merge-during-search-on-delete code, it is buggy. Btrfs: Add sparse checking to Makefile Btrfs: return code checking Btrfs: more return code checking Btrfs: merge on the way down during deletes Btrfs: Fixup the code to merge during path walks Btrfs: pretend page cache & commit code Btrfs: Fix extent code to use merge during delete Btrfs: period commit during initial fill in the random tester Btrfs: early reference counting Btrfs: Fixup reference counting on cows Btrfs: get rid of add recursion Btrfs: Fixup last found extent caching Btrfs: recursion free-first pass fix leak in btrfs_drop_snapshot Btrfs: get/set for struct header fields Btrfs: Add sparse endian annotations to struct header Btrfs: struct key endian fixes Btrfs: struct item endian fixes Btrfs: node->blockptrs endian fixes Btrfs: struct extent_item endian rename funcs and structs to btrfs Btrfs: make some funcs static Btrfs: merge leaves before split Btrfs: Change the super to point to a tree of trees to enable persistent snapshots Btrfs: properly reset block cache on free Btrfs: add leaf data casting helper Btrfs: variable block size support Btrfs: reorder key offset and flags Btrfs: Use a chunk of the key flags to record the item type. Btrfs: add hash.h Btrfs: directory testing code and dir item fixes Btrfs: add inode item Btrfs: add a name_len to dir items, reorder key Btrfs: pin freed blocks from the FS tree too Btrfs: transaction handles everywhere Btrfs: minor comments Btrfs: add transaction.h to the Makefile Btrfs: Add inode map, and the start of file extent items Btrfs: Update TODO Btrfs: change dir-test to insert inode_items Btrfs: Better block record keeping, real mkfs Btrfs: initial move to kernel module land Mountable btrfs, with readdir Btrfs: transaction rework btrfs_create, btrfs_write_super, btrfs_sync_fs Btrfs: properly set new buffers for new blocks up to date Add generation number to btrfs_header, readdir fixes, hash collision fixes Btrfs: very minimal locking Btrfs: leak fixes, pinning fixes Btrfs: unlink and delete_inode Btrfs: very simple readdir readahead btrfs_mkdir Btrfs: add a radix back bit tree Btrfs: TODO update btrfs_dirty_inode btrfs_get_block, file read/write Btrfs: reference counts on data extents Btrfs: split out level field in struct header Btrfs: add generation field to file extent btrfs_truncate Btrfs: byte offsets for file keys btrfs_rmdir Btrfs: use a btree inode instead of sb_getblk Btrfs: sha256 csums on metadata Btrfs: btree address space fixes btrfs_file_write -- first pass Btrfs: verify csums on read Btrfs: hunting slab corruption Btrfs: corruption hunt continues Btrfs: still corruption hunting Btrfs: dynamic allocation of path struct Btrfs: corruptions fixed Btrfs: csum_verify_file_block locking fix Btrfs: don't wait on uptodate buffers on read Btrfs: early inline file data code Btrfs: support for items bigger than 1/2 the blocksize Btrfs: disable inline data code for now Btrfs: tweak the inode-map and free extent search starts on cold mount Btrfs: add dir inode index Btrfs: more inode indexed directory work Btrfs: finish off inode indexing in dirs, add overflows Btrfs: dirindex optimizations Btrfs: uuids Btrfs: start of support for many FS volumes Btrfs: groundwork for subvolume and snapshot roots Btrfs: snapshot progress Btrfs: drop the inode map tree Btrfs: drop owner and parentid Btrfs: cow file extents before writing Btrfs: only cow in get_block when create==1 Btrfs: when forced to cow for file_write, get the page uptodate first Btrfs: subvolumes Btrfs: detect duplicate subvol names Btrfs: use a dedicated inode num for root root dir Btrfs: early support for multiple devices Btrfs: create a logical->phsyical block number mapping scheme Btrfs: add disk ioctl, mostly working Btrfs: add a device id to device items Btrfs: early work to file_write in big extents Btrfs: progress on file_write Btrfs: rework csums and extent item ordering Btrfs: working file_write, reorganized key flags Btrfs: many file_write fixes, inline data Btrfs: directory inode index is back Btrfs: early fsync support Btrfs: write barriers on commit, balance level before split Btrfs: node balance optimizations Btrfs: add owner and type fields to the extents aand block headers Btrfs: fix extent owner/type setting on extent tree blocks Btrfs: new subvolume oops fix Btrfs: add dirty_inode call Btrfs: get rid of the extent_item type field Btrfs: fixup dirty_inode related deadlocks Btrfs: change around extent-tree prealloc Btrfs: start of block group code Btrfs: more block allocator work Btrfs: allocator tweaks Btrfs: try to drop dead cow pages from ram Btrfs: smarter transaction writeback Btrfs: prealloc more blocks for the extent map Btrfs: allocator improvements, inode block groups Btrfs: directory readahead Btrfs: fix page cache memory leak Btrfs: early metadata/data split Btrfs: more allocator enhancements Btrfs: allocator and tuning Btrfs: many allocator fixes, pretty solid Btrfs: fix check_node and check_leaf to use less cpu Btrfs: switch to crc32c instead of sha256 Btrfs: patch queue: fix corruption when splitting large items Btrfs: allocator optimizations, truncate readahead Btrfs: 2.6.21-git fixes Btrfs: rename Btrfs: symlinks and hard links Btrfs: sparse files! Btrfs: fixup various fsx failures Btrfs: block group switching Btrfs: use a separate flag for search_start vs a hint in find_free_extent Btrfs: d_type optimization Btrfs: add compat ioctl Btrfs: get forced transaction commits via workqueue Btrfs: reap dead roots right after commit Btrfs: remove device tree Btrfs: fix oops after block group lookup Btrfs: split up super.c Btrfs: 64 bit div fixes Btrfs: printk fixes Btrfs: no slashes in subvolume names Btrfs: add GPLv2 Btrfs: i386 fixes from axboe Btrfs: Added tag v0.2 for changeset 8edac0ff7fb5 Btrfs: patch queue: page_mkwrite Subject: Rework btrfs_file_write to only allocate while page locks are held Btrfs: Added tag v0.3 for changeset edfcc0faa35c Btrfs: cache the extent tree preallocation Btrfs: reada while dropping snapshots Btrfs: Switch to libcrc32c to avoid problems with cryptomgr on highmem machines Btrfs: Audit callers and return codes to make sure -ENOSPC gets up the stack Btrfs: Add the ability to find and remove dead roots after a crash. Btrfs: Documentation update Btrfs: Added tag v0.4 for changeset d4bf0a71f074 Btrfs: Fix mtime and ctime updates on parent dirs Btrfs: Fix super block updates during transaction commit Btrfs: Allow find_free_extent callers to pass in an exclusion range Btrfs: crash recovery fixes Btrfs: Added tag v0.5 for changeset 080c0640a527 Btrfs: deal with api changes in 2.6.23-rc1 Btrfs: Do snapshot deletion in smaller chunks. Btrfs: Fold some btree readahead routines into something more generic. Btrfs: Add run time btree defrag, and an ioctl to force btree defrag Btrfs: Added tag v0.6 for changeset c13e9a0bf9b4 Btrfs: Let some locks go during defrag and snapshot dropping Btrfs: Replace extent tree preallocation code with some bit radix magic. Btrfs: Further reduce the concurrency penalty of defrag and drop_snapshot Btrfs: Btree defrag on the extent-mapping tree as well Btrfs: Add BH_Defrag to mark buffers that are in need of defragging Btrfs: Added tag v0.7 for changeset 6125224d77d0 Btrfs: Do more extensive readahead during tree searches Btrfs: Make sure to cow the root during a snapshot Btrfs: Extent based page cache code. This uses an rbtree of extents and tests Btrfs: Add delayed allocation to the extent based page tree code Btrfs: Use mount -o subvol to select the subvol directory instead of dev: Btrfs: Add file data csums back in via hooks in the extent map code Btrfs: fsx delalloc fixes Btrfs: remove extra drop_extent_cache call Add support for defragging files via btrfsctl -d. Avoid OOM on extent tree Btrfs: Add more synchronization before creating a snapshot Btrfs: Reorder tests in set_extent_bit to properly find holes Btrfs: Find and remove dead roots the first time a root is loaded. Btrfs: Added tag v0.8 for changeset f5ce4cc64def Btrfs: Fix extra link count dec in rename Btrfs: add modules_install target Btrfs: Use balance_dirty_pages_nr on btree blocks Btrfs: Fix duplicate ENOSPC checks in find_free_extent btrfs_get_extent should treat inline extents as though they hold a whole block Btrfs: Create extent_buffer interface for large blocksizes Btrfs: Optimizations for the extent_buffer code Btrfs: Avoid memcpy where possible in extent_buffers Btrfs: Go back to kmaps instead of page_address in extent_buffers Btrfs: Fix extent_buffer and extent_state leaks Btrfs: Stop using radix trees for the block group cache Btrfs: Change the remaining radix trees used by extent-tree.c to extent_map trees Btrfs: Allow tree blocks larger than the page size Btrfs: Cache extent buffer mappings Btrfs: Use an array of pages in the extent buffers to reduce the cost of find_get_page Btrfs: Add back the online defragging code Btrfs: Fix allocation routines to avoid intermixing data and metadata allocations Btrfs: Add an extent buffer LRU to reduce radix tree hits Btrfs: Allow tails larger than one page Btrfs: extent_map optimizations to cut down on CPU usage Breakout BTRFS_SETGET_FUNCS into a separate C file, the inlines were too big. Btrfs: Add back metadata checksumming Btrfs: Large block related defrag optimizations Btrfs: balance_dirty_pages_ratelimited is causing problems, use nr == 1 always Btrfs: Defrag: only walk into nodes with the defrag bit set Btrfs: Add back file data checksumming Btrfs: Defrag only leaves, and only when the parent node has a single objectid Btrfs: Default to 8k max packed tails Btrfs: Fix typo: owner is a 64 bit field Btrfs: Fix read/write_extent_buffer to use KM_USER1 instead of KM_USER0 Btrfs: CPU usage optimizations in push and the extent_map code Btrfs: Avoid recursive KM_USER1 mappings in copy_extent_buffer Btrfs: Fix split_leaf to avoid incorrect double splits Btrfs: Optimize csum insertion to create larger items when possible Btrfs: Fix split_leaf to detect when it is extending an item Btrfs: Tune the automatic defrag code Btrfs: Compile fixes for 2.6.24-rc1 Add O_SYNC support to btrfs_file_write Btrfs: Fix PAGE_CACHE_SHIFT shifts on 32 bit machines Btrfs: Fix a number of inline extent problems that Yan Zheng reported. Btrfs: Add writepages support Btrfs: Make defrag check nodes against the progress key to prevent repeating work Btrfs: Optimize allocations as we need to mix data and metadata into one group Fix recursive KM_USER1 usage in btrfs_realloc_node Btrfs: Change push_leaf_{leaf,right} to empty the src leave during item deletion Btrfs: Use writepages for the metadata too Btrfs: Fix failure cleanups when allocating extent buffers fail Btrfs: Allow large data extents in a single file to span into metadata block groups Btrfs: Avoid extent_buffer lru corruption Btrfs: Add readpages support Btrfs: Fix extent bit range testing Btrfs: Avoid fragmentation from parallel delalloc filling Btrfs: Make sure page mapping dirty tag is properly cleared Btrfs: Add check for null block group to find_search_start Btrfs: Handle writeback under high memory pressure better Btrfs: Limit btree writeback to prevent seeks Btrfs: Only limit btree writeback for pdflush Btrfs: Fine tune the btree writeback exclusion some more Btrfs: Add efficient dirty accounting to the extent_map tree btrfs_drop_extents: make sure the item is getting smaller before truncate Btrfs: Add simple stripe size parameter Btrfs: Fix extent allocation for btree blocks as the disk fills Btrfs: Implement generation numbers in block pointers Btrfs: Add back pointers from extents to the btree or file referencing them Btrfs: Add lowest key information to back refs for extent tree blocks as well. Btrfs: Add back pointers from the inode to the directory that references it Btrfs: Extra NULL block group checks in find_free_extent Btrfs: Add backrefs for symbolic link inodes Btrfs: Fix typo in .. check (thanks Yan) Fix btrfs_inc_ref to add backref hints Btrfs: Reorder extent back refs to differentiate btree blocks from file data Fixes for loopback files in btrfs Btrfs: Add mount -o nodatasum to turn of file data checksumming Btrfs: Add mount option to turn off data cow Btrfs: Fix extent_map and extent_state leaks by flushing lrus on FS unmount Btrfs: Add mount option to enforce a max extent size Btrfs: Back port to 2.6.18-el kernels kmalloc a few large stack objects in the btrfs_ioctl path Btrfs: Fix delayed allocation to avoid missing delalloc extents Btrfs: Fix nodatacow extent lookup Btrfs: Less aggressive readahead on deletes Btrfs: Implement basic support for -ENOSPC Btrfs: Fix an off by one in the extent_map prepare write code Btrfs: Support for online FS resize (grow and shrink) Btrfs: Fix NULL block groups on reading the inode Btrfs: Add readahead to the online shrinker, and a mount -o alloc_start= for testing Btrfs: Explicitly send a root objectid to count_snapshots_in_path Btrfs: Reduce stack usage in the resizer, fix 32 bit compiles Btrfs: 32 bit compile fixes for the resizer and enospc checks Btrfs: Force inlining off in a few places to save stack usage count_snapshots: Properly update the leaf pointer after btrfs_next_leaf Btrfs: Fix lock ordering of the snapshot semaphore against the page lock Btrfs: Change st_blocksize to 4k Btrfs: Lower the max inline size to 8k Properly call btrfs_search_slot while shrinking Btrfs: resizer: don't hold the fs_mutex for long periods of time Btrfs: Change tree block csum tagging to avoid false error messages Btrfs: Add data=ordered support Btrfs: Move snapshot creation to commit time Btrfs: Add some simple throttling to wait for data=ordered and snapshot deletion Btrfs: Disable btree reada during extent backref lookups. Btrfs: online shrinking fixes Btrfs: Remove extent_map debugging message Btrfs: Add flush barriers on commit Btrfs: Fix extent_buffer usage when nodesize != leafsize Btrfs: Remove verbose WARN_ON Btrfs: Change magic string to reflect new format Btrfs: Only delete roots from sysfs when they were added to sysfs Btrfs: Delete any remaining extent_maps before freeing the inode Btrfs: Add drop inode func to avoid data=ordered deadlock Rework btrfs_drop_inode to avoid scheduling Btrfs: Disable delalloc accounting for now Btrfs: Run igrab on data=ordered inodes to prevent deadlocks during writeout Btrfs: Fix data=ordered vs wait_on_inode deadlock on older kernels Btrfs: Use blk_congestion_wait on older kernels Btrfs: Add mount -o ssd, which includes optimizations for seek free storage Btrfs: Include sched.h in the acl code for current (fixes compile on 2.6.23) Btrfs: Fix hole insertion corner cases Btrfs: Split the extent_map code into two parts Btrfs: Tune readahead during defrag to avoid reading too much at once Btrfs: Force f_pos to the max when a readdir hits the end of the directory. Btrfs: Add some extra debugging around file data checksum failures Btrfs: extent_io and extent_state optimizations Btrfs: During deletes and truncate, remove many items at once from the tree Btrfs: Add inode item and backref in one insert, reducing cpu usage Btrfs: Do delalloc accounting via hooks in the extent_state code Btrfs: mount -o max_inline=size to control the maximum inline extent size Btrfs: Leave on the tree defragger in mount -o ssd, it still helps there Btrfs: Copy correct tree when inserting into slot 0 Properly align the hole size in btrfs_setattr Fix hole start calculation in btrfs_settar Btrfs: Enable delalloc accounting Btrfs: Add data block hints to SSD mode too Btrfs: Add a lookup cache to the extent state tree Btrfs: Insert extent record and the first backref in a single balance Btrfs: Hash in the offset and owner for file extent backref keys Btrfs: Use last_alloc optimizations for metadata, even without -o ssd Btrfs: Fix delalloc account on state deletion Btrfs: Lower stack usage in transaction.c Btrfs: Add debugging for block group update failure Btrfs: Update magic Btrfs: Add checks for last byte in disk to allocator grouping Btrfs: Use 2MB as the empty_size for clustered allocations Btrfs: Don't case unsigned long to int in bio submission Btrfs: Create larger bios for btree blocks Btrfs: Fix i_blocks accounting Btrfs: Disable tree defrag in SSD mode Btrfs: Allocator improvements Btrfs: Remove extent back refs in batches, and avoid duplicate searches Btrfs: Properly clear dirty and delalloc extent bits while preparing the file for write Btrfs: Take the extent lock before dropping the delalloc bits Btrfs: Properly cast before shifting Btrfs: checksum file data at bio submission time instead of during writepage Btrfs: While doing checksums on bios, cache the extent_buffer mapping Btrfs: Misc 2.6.25 updates Btrfs: Make sure bio pages are adjacent during bulk csumming Btrfs: Disable sysfs files on older kernels Btrfs: Use KM_USERN instead of KM_IRQ during data summing Match the extent tree code to btrfs-progs for multi-device merging Btrfs: Add support for multiple devices per filesystem Btrfs: Dynamic chunk and block group allocation Btrfs: Bring back find_free_extent CPU usage optimizations Add /dev/btrfs-control for device scanning ioctls Btrfs: Make the FS tree the last objectid in the tree of tree roots Btrfs: Move device information into the super block so it can be scanned Btrfs: Bring back mount -o ssd optimizations Btrfs: Add support for device scanning and detection ioctls Btrfs: Implement raid0 when multiple devices are present Create a btrfs backing dev info Btrfs: Use a higher default ra pages Btrfs: Add leak debugging for extent_buffer and extent_state Reorder the flags field in struct btrfs_header and record a flag on writeout Btrfs: Keep fs_mutex during reads done by snapshot deletion Btrfs: Verify checksums on tree blocks found without read_tree_block Btrfs: Properly dirty buffers in the split corner cases Btrfs: Add support for mirroring across drives Btrfs: Add support for duplicate blocks on a single spindle Btrfs: Don't allow written blocks from this transaction to be reallocated Btrfs: Fix allocation profile init Change btrfs_map_block to return a structure with mappings for all stripes Btrfs: Add additional debugging for metadata checksum failures Btrfs: Do metadata checksums for reads via a workqueue Btrfs: Handle data block end_io through the async work queue Btrfs: Retry metadata reads in the face of checksum failures Btrfs: Handle checksumming errors while reading data blocks Btrfs: Disable extra debugging checks on tree blocks Btrfs: Add O_DIRECT read and write (writes == buffered + cache flush) Btrfs: Write out all super blocks on commit, and bring back proper barrier support Btrfs: Add extra checks to avoid removing extent_state from pages we can't free Btrfs: Fixup a few u64<->pointer casts for 32 bit Add a min size parameter to btrfs_alloc_extent Btrfs: A few updates for 2.6.18 and versions older than 2.6.25 Btrfs: Add chunk uuids and update multi-device back references Btrfs: Add RAID10 support Btrfs: Create a work queue for bio writes Btrfs: Write bio checksumming outside the FS mutex Btrfs: Don't wait on tree block writeback before freeing them anymore Btrfs: Only do async bio submission for pdflush Btrfs: Use the extent map cache to find the logical disk block during data retries Btrfs: Avoid 64 bit div for RAID10 Btrfs: Remove bogus max_sector warnings from the extent_io code Btrfs: Check device uuids along with devids Btrfs: Add support for labels in the super block Btrfs: Don't drop extent_map cache during releasepage on the btree inode Btrfs: Calculate appropriate chunk sizes for both small and large filesystems Btrfs: Fix chunk allocation when some devices don't have enough room for stripes Btrfs: Set the btree inode i_size to OFFSET_MAX Force page->private removal in btrfs_invalidatepage Btrfs: Scale the bdi ra_pages by the number of devices in the FS Btrfs: Add 1MB to the min_free in alloc_chunk Btrfs: Remove debugging statements from the invalidatepage calls Btrfs: Make an unplug function that doesn't unplug every spindle Btrfs: Simplify device selection for mirrored reads Btrfs: Add a special device list for chunk allocations Deal with page == NULL in the btrfs_unplug_io_fn Btrfs: Set nodatasum on the inode when written by a nodatasum mount Fix btrfs_get_extent and get_block corner cases, and disable O_DIRECT reads Btrfs: Fix the unplug_io_fn to grab a consistent copy of page->mapping Btrfs: Make sure nodes have enough room for a double split Btrfs: Fix split_node to require more empty slots in the node as well Btrfs: Don't empty the middle buffer in push_nodes_for_insert Btrfs: Fix balance_level to free the middle block if there is room in the left one Btrfs: Throttle file_write when data=ordered is flushing the inode Btrfs: write_extent_pages came in 2.6.23 Btrfs: Add failure handling for read_sys_array Btrfs: write_cache_pages came in 2.6.22 Btrfs: Make the resizer work based on shrinking and growing devices Btrfs: Avoid recursive chunk allocations Btrfs: Do more optimal file RA during shrinking and defrag Btrfs: Add new ioctl to add devices Btrfs: Add balance ioctl to restripe the chunks Btrfs: Drop some verbose printks Btrfs: Deal with failed writes in mirrored configurations Btrfs: Tune stripe selection for raid1 and raid10 Btrfs: Fixes for 2.6.18 enterprise kernels Btrfs: Compile warning fixup in volume.c Btrfs: Fix do_sync_file_range ifdefs (2.6.22) Btrfs: Silence bogus inode.c compiler warnings Btrfs: Fix clone ioctl to not hold the path over inserts Btrfs: Add support for online device removal Btrfs: Properly find the root for snapshotted blocks during chunk relocation Btrfs: Update nodatacow mode to support cloned single files and resizing Btrfs: Only open block devices once during mount -o subvol= Btrfs: A number of nodatacow fixes Btrfs: Chunk relocation fine tuning, and add a few printks to show progress Btrfs: Don't do btree balance_dirty_pages on old kernels, it stalls forever Btrfs: Pass down the expected generation number when reading tree blocks Btrfs: Handle write errors on raid1 and raid10 Btrfs: Add mount -o degraded to allow mounts to continue with missing devices Fix btrfs_open_devices to deal with changes since the scan ioctls Fix corners in writepage and btrfs_truncate_page Btrfs: Change the congestion functions to meter the number of async submits as well Btrfs: Enable btree balancing on old kernels again Btrfs: Handle transid == 0 while opening devices Btrfs: Use kzalloc on the fs_devices allocation Btrfs: Allocator fix variety pack Btrfs: Always use the async submission queue for checksummed writes Btrfs: Fix race in running_transaction checks Btrfs: Add async worker threads for pre and post IO checksumming Btrfs: Fix mount -o max_inline=0 Btrfs: Add backport for the kthread work on kernels older than 2.6.20 Btrfs: Worker thread optimizations Btrfs: Add a mount option to control worker thread pool size Btrfs: Add a thread pool just for submit_bio Btrfs: Start btree concurrency work. Btrfs: Replace the big fs_mutex with a collection of other locks Drop locks in btrfs_search_slot when reading a tree block. Fix btrfs_del_ordered_inode to allow forcing the drop during unlinks Fix btrfs_next_leaf to check for new items after dropping locks Btrfs: Add a skip_locking parameter to struct path, and make various funcs honor it Btrfs: Fix snapshot deletion to release the alloc_mutex much more often. Add btrfs_end_transaction_throttle to force writers to wait for pending commits Btrfs: Replace the transaction work queue with kthreads Btrfs: Add btree locking to the tree defragmentation code Btrfs: Change find_extent_buffer to use TestSetPageLocked Btrfs: Add a per-inode csum mutex to avoid races creating csum items Btrfs: Online btree defragmentation fixes Btrfs: Reduce contention on the root node Btrfs: Fix deadlock while searching for dead roots on mount Btrfs: Add locking around volume management (device add/remove/balance) Btrfs: Drop some verbose printks Btrfs: New data=ordered implementation Btrfs: Use async helpers to deal with pages that have been improperly dirtied Btrfs: Update on disk i_size only after pending ordered extents are done btrfs_start_transaction: wait for commits in progress to finish Btrfs: Don't pin pages in ram until the entire ordered extent is on disk. Add a per-inode lock around btrfs_drop_extents btrfs_next_leaf: do readahead when skip_locking is turned on Btrfs: Force caching of metadata block groups on mount to avoid deadlock Btrfs: Cleanup and comment ordered-data.c Btrfs: Handle data checksumming on bios that span multiple ordered extents Btrfs: Don't allow releasepage to succeed if EXTENT_ORDERED is set Btrfs: Keep extent mappings in ram until pending ordered extents are done Fix btrfs_wait_ordered_extent_range to properly wait Btrfs: Data ordered fixes Btrfs: Index extent buffers in an rbtree Btrfs: Use a mutex in the extent buffer for tree block locking Btrfs: Fix some data=ordered related data corruptions Btrfs: Use mutex_lock_nested for tree locking Btrfs: Add some conditional schedules near the alloc_mutex Btrfs: alloc_mutex latency reduction Btrfs: Take the csum mutex while reading checksums Btrfs: Fix 32 bit compiles by using an unsigned long byte count in the ordered extent Btrfs: Search data ordered extents first for checksums on read Btrfs: Fix some build problems on 2.6.18 based enterprise kernels Btrfs: Add version strings on module load Btrfs: Fix the defragmention code and the block relocation code for data=ordered Btrfs: Rev the disk format magic Btrfs: Leaf reference cache update Btrfs: Fix version.sh when used outside of an hg repo Btrfs: Throttle operations if the reference cache gets too large Btrfs: Fix verify_parent_transid Btrfs: Add missing hunk from Yan Zheng's cache reclaim patch Btrfs: Throttle tuning Btrfs: Fix streaming read performance with checksumming on Btrfs: Drop some debugging around the extent_map pinned flag Btrfs: Hold a reference on bios during submit_bio, add some extra bio checks Btrfs: Improve and cleanup locking done by walk_down_tree Btrfs: Throttle less often waiting for snapshots to delete btrfs_search_slot: reduce lock contention by cowing in two stages Btrfs: More throttle tuning Btrfs: Hold csum mutex while reading in sums during readpages Btrfs: Add support for HW assisted crc32c Btrfs: Don't corrupt ram in shrink_extent_tree, leak it instead Btrfs: Maintain a list of inodes that are delalloc and a way to wait on them btrfs_lookup_bio_sums seems broken, go back to the readpage_io_hook for now Btrfs: Fix the multi-bio code to save the original bio for completion Get rid of BTRFS_I(inode)->index and use local vars instead Btrfs: Avoid calling into the FS for the final iput on fake root inodes Btrfs: Update version.sh to v0.16 Btrfs: Init address_space->writeback_index properly Btrfs: Limit the number of async bio submission kthreads to the number of devices Btrfs: Count async bios separately from async checksum work items Btrfs: Transaction commit: don't use filemap_fdatawait Btrfs: Give all the worker threads descriptive names Btrfs: Wait for kernel threads to make progress during async submission Btrfs: Lower contention on the csum mutex Btrfs: Fix add_extent_mapping to check for duplicates across the whole range Btrfs: Lookup readpage checksums on bio submission again Btrfs: Wait for async bio submissions to make some progress at queue time Btrfs: Rev the disk format Btrfs: Throttle for async bio submits higher up the chain Btrfs: Fix variable init during csum creation Btrfs: Add debugging checks to track down corrupted metadata Btrfs: Add a write ahead tree log to optimize synchronous operations Btrfs: Rev the disk format Btrfs: Tree logging fixes Btrfs: Update the highest objectid in a root after log replay is done Btrfs: Fix releasepage to properly keep dirty and writeback pages Btrfs: Dir fsync optimizations Btrfs: Optimize btree walking while logging inodes Btrfs: Optimize tree log block allocations Btrfs: Copy into the log tree in big batches Btrfs: Record dirty pages tree-log pages in an extent_io tree Btrfs: Disable the dir fsync optimization to skip logging the dir sometimes Btrfs: Fix mismerge in block header checks Fix leaf overflow check in btrfs_insert_empty_items Btrfs: Checksum tree blocks in the background Add check for tree-log roots in btrfs_alloc_reserved_extents Btrfs: Fix race against disk_i_size updates Merge Btrfs into fs/btrfs Update Btrfs files for in-kernel usage Add Btrfs to fs/Kconfig and fs/Makefile Btrfs: Fix allocation completions in tree log replay Remove Btrfs compat code for older kernels Btrfs: fix sleep with spinlock held during unmount Btrfs: Raise thresholds for metadata writeback Btrfs: Wait for IO on the block device inodes of newly added devices Btrfs: drop WARN_ON from btrfs_add_leaf_ref Btrfs: add and improve comments Btrfs: fix multi-device code to use raid policies set by mkfs Btrfs: don't read leaf blocks containing only checksums during truncate Btrfs: O_DIRECT writes via buffered writes + invaldiate Btrfs: remove last_log_alloc allocator optimization Btrfs: cast bio->bi_sector to a u64 before shifting Btrfs: Rev the disk format for the new back reference format Btrfs: Don't call security_inode_mkdir during subvol creation Merge branch 'master' of ssh://mason@master.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Btrfs: Add zlib compression support Btrfs: Rev the disk format for compression and root pointer generation fields Btrfs: prevent looping forever in finish_current_insert and del_pending_extents Btrfs: walk compressed pages based on the nr_pages count instead of bytes Btrfs: Fix logic to avoid reading checksums for -o nodatasum,compress Btrfs: Compression corner fixes Btrfs: rev the disk format for fallocate Btrfs: Add ordered async work queues Btrfs: Optimize compressed writeback and reads Btrfs: enforce metadata allocation clustering Btfs: More metadata allocator optimizations Btrfs: make sure compressed bios don't complete too soon Btrfs: Fix more false enospc errors and an oops from empty clustering Btrfs: Avoid unplug storms during commit Btrfs: Don't substract too much from the allocation target (avoid wrapping) Btrfs: Make sure pages are dirty before doing delalloc for them Btrfs: Fix use after free during compressed reads Btrfs: Try harder while searching for free space Btrfs: Use invalidatepage when writepage finds a page outside of i_size Btrfs: Fix usage of struct extent_map->orig_start Btrfs: Turn off extent state leak debugging Btrfs: tune btrfs unplug functions for a small number of devices Btrfs: empty_size allocation fixes again Btrfs: Fix compile warnings on 32 bit machines Btrfs: Improve metadata read latencies Btrfs: Fix handling of space info full during allocations Btrfs: Allow subvolumes and snapshots anywhere in the directory tree Btrfs: Give each subvol and snapshot their own anonymous devid Btrfs: Add backrefs and forward refs for subvols and snapshots Btrfs: prevent loops in the directory tree when creating snapshots Btrfs: unplug all devices in the unplug call back Btrfs: Update the disk format for the seed device and new root code Btrfs: switch back to wait_on_page_writeback to wait on metadata writes Btrfs: Avoid writeback stalls Btrfs: Do fsync log replay when mount -o ro, except when on readonly media Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Btrfs: Fixes for 2.6.28-rc API changes Btrfs: Use current_fsuid/gid Btrfs: compat code fixes Btrfs: only flush down bios for writeback pages Btrfs: delete unused function: btrfs_invalidate_dcache_root Btrfs: rev the disk format for the inode compat and csum selection changes Btrfs: Fix sparse endian warnings in struct-funcs.c Btrfs: move data checksumming into a dedicated tree Btrfs: Use map_private_extent_buffer during generic_bin_search Btrfs: Add inode sequence number for NFS and reserved space in a few structs Btrfs: Fix compressed checksum fsync log copies Btrfs: Delete csum items when freeing extents Btrfs: Fix compressed writes on truncated pages Btrfs: Don't use spin*lock_irq for the delalloc lock Btrfs: delete checksum items before marking blocks free Btrfs: shift all end_io work to thread pools Btrfs: Fix compile warning around num_online_cpus() in a min statement Btrfs: add permission checks to the ioctls Btrfs: Fix checkpatch.pl warnings Btrfs: drop EXPORT symbols from extent_io.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Btrfs: drop remaining LINUX_KERNEL_VERSION checks and compat code Btrfs: Don't use kmap_atomic(..., KM_IRQ0) during checksum verifies Btrfs: kmap_atomic(KM_USER0) is safe for btrfs_readpage_end_io_hook Btrfs: Drop the hardware crc32c asm code Btrfs: explicitly mark the tree log root for writeback Chris Wright (2): PCI: allow pci driver to support only dynids PCI: pci-stub module to reserve pci device Chris Zankel (3): xtensa: move headers files to arch/xtensa/include xtensa: Add xt2000 support files. xtensa: Update platform files to reflect new location of the header files. Christian Borntraeger (9): [S390] vmcp: remove BKL [S390] convert vmcp printks to pr_xxx macros. [S390] convert cpcmd printks to pr_xxx macros. virtio_console: support console resizing kvm-s390: implement config_changed for virtio on s390 KVM: s390: Fix refcounting and allow module unload KVM: s390: Fix memory leak of vcpu->run anon_inodes: use fops->owner for module refcount KVM: set owner of cpu and vm file operations Christian Hesse (1): Btrfs: section mismatch warnings Christian Lamparter (30): p54: honour bss_info_changed's short slot time settings p54: broken out edcf changes p54: refactor statistic timer code p54: p54: refactor p54_rx_frame_sent p54: fix memory management p54: borrow some setup code from stlc45xx p54: introduce new names for device firmwares p54: more definitions form lmac_longbow.h and pda.h p54: put broadcast frames into the right queues p54: AP & Ad-hoc testing p54: enable Mesh Point support p54: minor fixes p54pci: cache firmware for suspend/resume p54: honour bss_info_changed's basic_rates and other settings p54: fix wmm queue settings mac80211: add sta_notify_ps callback p54: revamp station power save management in access point mode p54: utilize cryptographic accelerator p54: include support for 2.13.24.0 USB LM87 Firmwares p54: refactoring p54: per-device names p54usb: rewriting rx/tx routines to make use of usb_anchor's facilities mac80211: integrate sta_notify_ps cmds into sta_notify p54: enforce strict tx_queue limits p54: fix oops on faulty devices p54: move statistic timer update routine into a workqueue p54: update ACK failure statistic counter in real-time p54: more accurate rssi to dBm conversion p54: remove free_on_tx parameter p54usb: bring first generation devices back to life Christian Maaser (1): [S390] ap: Minor code beautification. Christian Pellegrin (3): ASoC: s3c24xx 8 bit sound fix ASoC: UDA134x codec driver ASoC: Machine driver for for s3c24xx with uda134x Christof Schmitt (11): [S390] zfcp: Report microcode level through service level interface [S390] convert zfcp printks to pr_xxx macros. [SCSI] zfcp: Fix message line break [SCSI] zfcp: Simplify SBAL allocation to fix sparse warnings [SCSI] zfcp: Remove adapter list [SCSI] zfcp: Remove initial device data from zfcp_data [SCSI] zfcp: Simplify mask lookups for incoming RSCNs [SCSI] zfcp: remove DID_DID flag [SCSI] zfcp: Remove busid macro [SCSI] zfcp: Add support for unchained FSF requests [SCSI] zfcp: Remove unnecessary warning message Christoph Hellwig (126): btrfs: fix printk format warning Btrfs: [PATCH] extent_map: fix locking for bio completion Btrfs: [PATCH] extent_map: provide generic bmap Btrfs: [PATCH] extent_map: make the writepage_io hook optional Btrfs: [PATCH] extent_map: add writepage_end_io hook Btrfs: use unlocked_ioctl split up btrfs_ioctl Btrfs: factor page private preparations into a helper btrfs: tiny makefile cleanup btrfs: fix strange indentation in lookup_extent_mapping btrfs: sanity mount option parsing and early mount code btrfs: allow scanning multiple devices during mount Btrfs: kerneldoc comments for extent_map.c Btrfs: split out ioctl.c BTRFS_IOC_TRANS_START should be privilegued btrfs: optmize listxattr Btrfs: optimize btrget/set/removexattr Btrfs: cleanup d_obtain_alias useage Btrfs: missing endianess conversion in insert_new_root remove unused function btrfs_ilookup Btrfs: trivial sparse fixes Btrfs: Fix subvolume creation locking rules [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 fat: make sure to set d_ops in fat_get_parent [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] 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 Btrfs: sparse lock verification annotations for wait_on_state Btrfs: make things static and include the right headers Btrfs: fix shadowed variable declarations Btrfs: corret fmode_t annotations Btrfs: clean up btrfs_ioctl a little bit Btrfs: btrfs: pass void __user * to btrfs_ioctl_clone_range [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 remove incorrect comment in inode_permission kill walk_init_root pass a struct path * to may_open kill vfs_permission [SCSI] remove severly outdated comment in scsi_dispatch_cmd [SCSI] clean up scsi_times_out add a vfs_fsync helper Chuck Lever (55): NFS: rename nfs_path variable NFS: Move declaration of nfs_mount() to fs/nfs/internal.h NFS: introduce nfs_mount_info struct for calling nfs_mount() NFS: expand flags passed to nfs_create_rpc_client() NFS: move nfs_server flag initialization NFS: add "[no]resvport" mount option NFS: "[no]resvport" mount option changes mountd client too NLM: allow lockd requests from an unprivileged port NLM: Use modern style for pointer fields in nlm_host NLM: Remove address eye-catcher buffers from nlm_host NLM: Remove AF_UNSPEC arm in nlm_display_address() NLM: Support IPv6 scope IDs in nlm_display_address() NLM: Add helper to handle IPv4 addresses NSM: Use C99 structure initializer to initialize nsm_args NSM: convert printk(KERN_DEBUG) to a dprintk() NSM: Use modern style for sm_name field in nsm_handle NSM: Support IPv6 version of mon_name NSM: Use sm_name instead of h_name in nsm_monitor() and nsm_unmonitor() NLM: Remove redundant printk() in nlmclnt_lock() NSM: Remove BUG_ON() in nsm_monitor() NSM: Make sure to return an error if the SM_MON call result is not zero NLM: Move the public declaration of nsm_monitor() to lockd.h NSM: Release nsmhandle in nlm_destroy_host NLM: Move the public declaration of nsm_unmonitor() to lockd.h NSM: Check result of SM_UNMON upcall NSM: Move NSM-related XDR data structures to lockd's xdr.h NSM: Move NSM program and procedure numbers to fs/lockd/mon.c NSM: move to xdr_stream-based XDR encoders and decoders NSM: Move nsm_find() to fs/lockd/mon.c NSM: Add dprintk() calls in nsm_find and nsm_release NSM: Remove NULL pointer check from nsm_find() NSM: Remove !nsm check from nsm_release() NSM: Generate NSMPROC_MON's "priv" argument when nsm_handle is created NSM: Encode the new "priv" cookie for NSMPROC_MON requests NLM: Change nlm_host_rebooted() to take a single nlm_reboot argument NLM: Decode "priv" argument of NLMPROC_SM_NOTIFY as an opaque NSM: Add nsm_lookup() function NLM: Call nsm_reboot_lookup() instead of nsm_find() NLM: Remove "create" argument from nsm_find() NSM: Refactor nsm_handle creation into a helper function NSM: More clean up of nsm_get_handle() NSM: Replace IP address as our nlm_reboot lookup key NSM: Remove include/linux/lockd/sm_inter.h NSM: Move nsm_addr() to fs/lockd/mon.c NSM: Move nsm_use_hostnames to mon.c NSM: Move nsm_create() NLM: nlm_privileged_requester() doesn't recognize mapped loopback address NLM: Rewrite IPv4 privileged requester's check lockd: Enable NLM use of AF_INET6 NFSD: clean up failover sysctl function naming NFSD: Fix a handful of coding style issues in write_filehandle() NFSD: Replace open-coded integer with macro NFSD: Add documenting comments for nfsctl interface NLM: Refactor make_socks() function NLM: Clean up flow of control in make_socks() function Claudio Scordino (1): Unused variable 'reg' removed. Clemens Ladisch (1): ALSA: oxygen: add Claro halo support Cliff Cai (5): ASoC: AD1980 codec: add multi-channel function support ASoC: Blackfin: add multi-channel function support ASoC: Blackfin: Fix AD1980/1 build with MMAP support disabled Blackfin arch: add sdh support for bf518f-ezbrd Blackfin arch: add SDIO host driver platform data Cliff Wickman (2): x86, UV: fix redundant creation of sgi_uv x86, UV: remove erroneous BAU initialization Colin McCabe (1): ath9k: Replace ath9k_opmode with nl80211_iftype Colin Tuckley (2): RealView: Use the correct oscillator for the CLCD on PB1176 RealView: Allow XVGA (1024x768) CLCD resolution on the RealView boards Coly Li (1): fix similar typos to successfull Constantin Baranov (1): leds: ALIX.2 LEDs driver Corentin Chary (1): eeepc-laptop: use select and not depends on Cornelia Huck (9): [S390] dasd: Use accessors instead of using driver_data directly. [S390] cio: Put referernce on correct device after moving. [S390] cio: Fix reference counting for online/offline. [S390] cio: Fix I/O subchannel refcounting. [S390] cio: Only register ccw_device for registered subchannel. [S390] cio: Dont fail probe for I/O subchannels. [S390] cio: Dont call ->release directly. [S390] cio: Use device_is_registered(). Make DEBUG take precedence over DYNAMIC_PRINTK_DEBUG Cyrill Gorcunov (20): x86: nmi - add sensible names to nmi_watchdog boot param x86: nmi - nmi_watchdog boot param docs cleanup x86: apic - calibrate_APIC_clock remove redundant irq-enable-disable x86: apic - use pr_ macros for logging x86: move dwarf2 related macro to dwarf2.h x86: introduce ENTRY(KPROBE_ENTRY)_X86 assembly helpers to catch unbalanced declaration v3 SLUB: cleanup - define macros instead of hardcoded numbers slub - fix get_object_page comment x86: entry_64.S - use ENTRY to define child_rip x86: uv bau interrupt -- use proper interrupt number x86: entry_64.S - trivial: space, comments fixup x86: entry_64 - introduce FTRACE_ frame macro v2 net: ppp_generic - use idr technique instead of cardmaps net: ppp_generic - use DEFINE_IDR for static initialization x86: mach-default setup.c cleanups x86: early_printk - use sizeof instead of hardcoded number V4L/DVB (10144): cx24116: build fix x86: setup_per_cpu_areas() cleanup mm: hugetlb: remove redundant `if' operation fs: fix name overwrite in __register_chrdev_region() Dai Haruki (9): gianfar: Optimize interrupt coalescing configuration gianfar: Fix eTSEC configuration procedure gianfar: Fix VLAN HW feature related frame/buffer size calculation. gianfar: Enable padding and Optimize the frame prepended bytes handling gianfar: Remove unused gfar_add_fcb() function parameter gianfar: Make all BD status writes 32-bit gianfar: Add Scatter Gather support gianfar: Use interface name in interrupt name to distinguish the source. gianfar: Merge Tx and Rx interrupt for scheduling clean up ring Daisuke Nishimura (6): memcg: memory swap controller: fix limit check memcg: hierarchy avoid unnecessary reclaim memcg: don't trigger oom at page migration memcg: remove mem_cgroup_try_charge memcg: avoid deadlock caused by race between oom and cpuset_attach memcg: change try_to_free_pages to hierarchical_reclaim Dale Farnsworth (4): powerpc: Setup OF properties for ppc32 kexec powerpc/32: Setup OF properties for kdump powerpc/32: Add the ability for a classic ppc kernel to be loaded at 32M powerpc/32: Wire up the trampoline code for kdump Dan Christian (1): Staging: comedi: add rtd520 driver Dan McGee (1): x86: remove dead IRQBALANCE code Dan Williams (23): async_tx, dmaengine: document channel allocation and api rework dmaengine: remove dependency on async_tx dmaengine: up-level reference counting to the module level dmaengine: centralize channel allocation, introduce dma_find_channel dmaengine: provide a common 'issue_pending_all' implementation net_dma: convert to dma_find_channel dmaengine: introduce dma_request_channel and private channels dmatest: convert to dma_request_channel atmel-mci: convert to dma_request_channel and down-level dma_slave dmaengine: replace dma_async_client_register with dmaengine_get dmaengine: kill struct dma_client and supporting infrastructure dmaengine: remove 'bigref' infrastructure dmaengine: kill enum dma_state_client iop-adma: let devm do its job, don't duplicate free iop-adma: kill debug BUG_ON iop-adma: enable module removal ioat: do not perform removal actions at shutdown dmaengine: add a release for dma class devices and dependent infrastructure dmaengine: use idr for registering dma device numbers dmaengine: advertise all channels on a device to dma_filter_fn dmaengine: bump initcall level to arch_initcall ioat: fix self test for multi-channel case USB: unusual dev for Option N.V. ZeroCD modems Daniel C. Halperin (1): iwlwifi: convert correctly rate_n_flags to PLCP index for mimo3 packets Daniel Drake (1): USB: unusual_devs.h additions for Pentax K10D Daniel Halperin (1): iwlwifi: Update reclaim flag Daniel Krueger (1): Staging: add epl stack Daniel Lezcano (3): veth: Remove useless veth field veth: remove unused list netns: filter out uevent not belonging to init_net Daniel Mack (4): ASoC: Allow more routing features for tlv320aic3x ALSA: snd-usb-caiaq: clean up the control adding code ASoC: tlv320aic3x: headset/button press support ASoC: tlv320aic3x: control additions and cleanups Daniel Silverstone (5): net: Add support for the KS8695 ethernet devices. [ARM] KS8695: Fix up device registration. [ARM] KS8695: Fixup the KS8695 GPIO to be GPIOLIB [ARM] DSM320: Add support for the DSM320 [ARM] DSM320: Update KS8695 defconfig to include DSM320 Darius Augulis (4): patch-iomux-mx1-mx2-cleanup patch-mx1-add-devices patch-mx1-mtd-xip USB: add imx udc gadget driver Darren Hart (4): futex: rename field in futex_q to clarify single waiter semantics futex: clean up futex_(un)lock_pi fault handling futex: make futex_(get|put)_key() calls symmetric futex: catch certain assymetric (get|put)_futex_key calls Darrick J. Wong (6): Create a DIV_ROUND_CLOSEST macro to do division with rounding adt74{62, 70, 73}: Use DIV_ROUND_CLOSEST for rounded division adt7470: fix pwm at a certain level during temperature sensor scan adt7470: observe the number of temperature sensors to shorten update time adt7470: make automatic fan control really work hwmon: (i5k_amb) Load automatically on all 5000/5400 chipsets Darron Broad (8): V4L/DVB (9500): cx88-dvb: MFE attachment fix-up V4L/DVB (9576): cx88-dvb: MFE attachment clean-up for HVR-3000/4000 V4L/DVB (9577): saa7134-dvb: MFE attachment clean-up for saa-7134 dvb V4L/DVB (9914): cx24116: bugfix: add missing delsys in FEC lookup V4L/DVB (9915): cx24116: fix retune regression introduced in 70ee86a7c630 V4L/DVB (9916): dvb-core: don't add an event when in ONE SHOT mode for algo type HW V4L/DVB (9917): cx24116: change to ALGO_HW V4L/DVB (9918): cx88: advise/acquire clean-up for HVR-1300/3000/4000 Dave Airlie (15): drm: cleanup exit path for module unload drm: move to kref per-master structures. drm: reorganise start and load. DRM: add mode setting support drm: pick an 800x600@60HZ mode by default for unknown CRT. drm: PAGE_CACHE_WC is x86 only so far drm: kconfig have drm core select i2c for kms drm/radeon: fix warning due to PAGE_SIZE max drm: fix useless gcc unused variable warning drm/radeon: fix missing hunk from the master changes. drm/radeon: use locked rmmap to remove sarea mapping. drm: fix allowing master ioctls on non-master fds. i915/drm: provide compat defines for userspace for certain struct members. drm/i915: fix modeset devname allocation + agp init return check. drm: fix ordering of driver unload vs agp unload. 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 Dave Hansen (4): powerpc/mm: Add better comment on careful_allocation() powerpc/mm:: Cleanup careful_allocation(): bootmem already panics powerpc/mm: Make careful_allocation() return virtual addrs powerpc/mm: Cleanup careful_allocation(): consolidate memset() Dave Jones (2): x86: remove init_mm export as planned for 2.6.26 net: Allow dependancies of FDDI & Tokenring to be modular. Dave Kleikamp (3): jfs: ensure symlinks are NUL-terminated nfsd race fixes: jfs async: Don't call async_synchronize_full_special() while holding sb_lock Dave Liu (1): powerpc: Remove the redundant _tlbil_pid at SMP case Dave Olson (4): IB/ipath: Don't count IB symbol and link errors unless link is UP IB/ipath: Only do 1X workaround on rev1 chips IB/ipath: Fix spi_pioindex value IB/ipath: Add locking for interrupt use of ipath_pd contexts vs free Dave Peverley (1): sh: oprofile: Backtrace support. David Anders (1): ASoC: Add new parameter to s3c24xx_pcm_enqueue David Brownell (42): rtc-cmos: export second NVRAM bank pegasus: minor resource shrinkage genirq: record IRQ_LEVEL in irq_desc[] genirq: warn when IRQF_DISABLED may be ignored ARM: OMAP: gpios implement new to_irq() ARM: OMAP: switch to standard gpio get/set calls ARM: OMAP: switch to gpio_direction_input ARM: OMAP: switch to gpio_direction_output ARM: OMAP: use gpio_to_irq ARM: OMAP: minor gpio bugfixes ARM: OMAP1: osk5912: Mistral eeprom support ARM: OMAP1: osk5912: LED trigger update for CF ARM: OMAP2: bard-h4: list those eeproms mmc: warn about voltage mismatches HID: switch specialized drivers from "default y" to !EMBEDDED mfd: allow reading entire register banks on twl4030 mfd: twl4030: simplified child creation code mfd: twl4030: cleanup symbols and OMAP dependency mfd: twl4030: create some regulator devices mfd: twl4030 regulator bug fixes mfd: dm355evm msp430 driver mfd: move drivers/i2c/chips/tps65010.c to drivers/mfd mfd: move drivers/i2c/chips/menelaus.c to drivers/mfd ASoC: fix davinci-sffsdr buglet ASoC: Clocking fixes for davinci-evm.c documentation: when to BUG(), and when to not BUG() spi_gpio driver twl4030-gpio: cleanup debounce gpio: pca953x handles more chips, i2c fault codes USB: musb: sysfs mode updates USB: musb: minor locking fix USB: musb: host side diagnostics tweaks USB: gadget: pxa25x_udc vbus sense initialization USB: move isp1301_omap to drivers/usb/otg USB: otg: twl4030 transceiver driver regulator: enable/disable refcounting regulator: improved mode error checks regulator: code shrink (v2) regulator: sysfs attribute reduction (v2) regulator: init/link earlier regulator: catch some registration errors CORE_DUMP_DEFAULT_ELF_HEADERS depends on ELF_CORE 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 Daney (5): 8250: Don't clobber spinlocks. 8250: Serial driver changes to support future Cavium OCTEON serial patches. Serial: Allow port type to be specified when calling serial8250_register_port. Serial: UART driver changes for Cavium OCTEON. libata: Add special ata_pio_need_iordy() handling for Compact Flash. David Disseldorp (1): IB/iser: Avoid recv buffer exhaustion caused by unexpected PDUs David Gibson (1): powerpc: udbg-based backend for hvc_console David Howells (95): CRED: Wrap task credential accesses in the XFS filesystem CRED: Wrap task credential accesses in the IA64 arch CRED: Wrap task credential accesses in the MIPS arch CRED: Wrap task credential accesses in the PA-RISC arch CRED: Wrap task credential accesses in the PowerPC arch CRED: Wrap task credential accesses in the S390 arch CRED: Wrap task credential accesses in the x86 arch CRED: Wrap task credential accesses in the block loopback driver CRED: Wrap task credential accesses in the tty driver CRED: Wrap task credential accesses in the ISDN drivers CRED: Wrap task credential accesses in the network device drivers CRED: Wrap task credential accesses in the USB driver CRED: Wrap task credential accesses in 9P2000 filesystem CRED: Wrap task credential accesses in the AFFS filesystem CRED: Wrap task credential accesses in the autofs filesystem CRED: Wrap task credential accesses in the autofs4 filesystem CRED: Wrap task credential accesses in the BFS filesystem CRED: Wrap task credential accesses in the CIFS filesystem CRED: Wrap task credential accesses in the Coda filesystem CRED: Wrap task credential accesses in the devpts filesystem CRED: Wrap task credential accesses in the eCryptFS filesystem CRED: Wrap task credential accesses in the Ext2 filesystem CRED: Wrap task credential accesses in the Ext3 filesystem CRED: Wrap task credential accesses in the Ext4 filesystem CRED: Wrap task credential accesses in the FAT filesystem CRED: Wrap task credential accesses in the FUSE filesystem CRED: Wrap task credential accesses in the GFS2 filesystem CRED: Wrap task credential accesses in the HFS filesystem CRED: Wrap task credential accesses in the HFSplus filesystem CRED: Wrap task credential accesses in the HPFS filesystem CRED: Wrap task credential accesses in the hugetlbfs filesystem CRED: Wrap task credential accesses in the JFS filesystem CRED: Wrap task credential accesses in the Minix filesystem CRED: Wrap task credential accesses in the NCPFS filesystem CRED: Wrap task credential accesses in the NFS daemon CRED: Wrap task credential accesses in the OCFS2 filesystem CRED: Wrap task credential accesses in the OMFS filesystem CRED: Wrap task credential accesses in the RAMFS filesystem CRED: Wrap task credential accesses in the ReiserFS filesystem CRED: Wrap task credential accesses in the SMBFS filesystem CRED: Wrap task credential accesses in the SYSV filesystem CRED: Wrap task credential accesses in the UBIFS filesystem CRED: Wrap task credential accesses in the UDF filesystem CRED: Wrap task credential accesses in the UFS filesystem CRED: Wrap task credential accesses in the XFS filesystem CRED: Wrap task credential accesses in the filesystem subsystem CRED: Wrap task credential accesses in the SYSV IPC subsystem CRED: Wrap task credential accesses in the AX25 protocol CRED: Wrap task credential accesses in the IPv6 protocol CRED: Wrap task credential accesses in the netrom protocol CRED: Wrap task credential accesses in the ROSE protocol CRED: Wrap task credential accesses in the SunRPC protocol CRED: Wrap task credential accesses in the UNIX socket protocol CRED: Wrap task credential accesses in the networking subsystem CRED: Wrap task credential accesses in the key management code CRED: Wrap task credential accesses in the capabilities code CRED: Wrap task credential accesses in the core kernel KEYS: Disperse linux/key_ui.h KEYS: Alter use of key instantiation link-to-keyring argument CRED: Neuter sys_capset() CRED: Constify the kernel_cap_t arguments to the capset LSM hooks CRED: Separate task security context from task_struct CRED: Detach the credentials from task_struct CRED: Wrap current->cred and a few other accessors CRED: Use RCU to access another task's creds and to release a task's own creds CRED: Wrap access to SELinux's task SID CRED: Separate per-task-group keyrings from signal_struct CRED: Rename is_single_threaded() to is_wq_single_threaded() CRED: Make inode_has_perm() and file_has_perm() take a cred pointer CRED: Pass credentials through dentry_open() CRED: Inaugurate COW credentials CRED: Make execve() take advantage of copy-on-write credentials CRED: Prettify commoncap.c CRED: Use creds in file structs CRED: Documentation CRED: Differentiate objective and effective subjective credentials on a task CRED: Add a kernel_service object class to SELinux CRED: Allow kernel services to override LSM settings for task actions powerpc: Rename struct vm_region to avoid conflict with NOMMU KEYS: Fix variable uninitialisation warnings CRED: Wrap task credential accesses in the devpts filesystem CRED: Fix regression in cap_capable() as shown up by sys_faccessat() [ver #2] CRED: Fix regression in cap_capable() as shown up by sys_faccessat() [ver #3] CRED: Fix NFSD regression NOMMU: Fix cleanup handling in ramfs_nommu_get_umapped_area() NOMMU: Rename ARM's struct vm_region NOMMU: Delete askedalloc and realalloc variables NOMMU: Make VMAs per MM as for MMU-mode linux NOMMU: Improve procfs output using per-MM VMAs FDPIC: Don't attempt to expand the userspace stack to fill the space allocated FLAT: Don't attempt to expand the userspace stack to fill the space allocated NOMMU: Support XIP on initramfs CRED: Fix commit_creds() on a process that has no mm CRED: Missing put_cred() in prepare_kernel_cred() CRED: Must initialise the new creds in prepare_kernel_cred() David John (1): RTC: Remove the BKL. David Kiliani (1): Staging: Add the Meilhaus ME-IDS driver package David Kilroy (8): orinoco: Move sources to a subdirectory orinoco: Separate fw caching from download orinoco: Cache Symbol firmware orinoco: Resume spectrum_cs in the same way as orinoco_cs orinoco: Provide option to avoid unnecessary fw caching orinoco: Fix function names used in debug strings orinoco: Fix inappropriate use of IRQ_BAP spectrum_cs: Fix function names used in debug strings David Lopo (1): USB: gadget: MIPS ci13xxx_udc David Miller (2): Btrfs: unaligned access fixes topology: Fix sparc64 build. David Rientjes (6): slub: make early_kmem_cache_node_alloc void slub: avoid leaking caches or refcounts on sysfs error oom: fix zone_scan_mutex name oom: print triggering task's cpuset and mems allowed mm: change dirty limit type specifiers to unsigned long mm: add dirty_background_bytes and dirty_bytes sysctls David S. Miller (98): Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'davem-next' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 sunrpc: Fix build warning due to typo in %pI4 format changes. drivers/net: Kill now superfluous ->last_rx stores. net/: Kill now superfluous ->last_rx stores. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'davem-next' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 Revert "net: Guaranetee the proper ordering of the loopback device." Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 dm9000: Fix build error. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 inet_diag: Missed conversion after changing inet ehash lockl to spinlocks. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'for-david' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 net: Make sure BHs are disabled in sock_prot_inuse_add() axnet_cs: Fix build after net device ops ne2k conversion. Revert "hso: Add TIOCM ioctl handling." Revert "hso: Fix free of mutexes still in use." Revert "hso: Fix crashes on close." smc-mca: Fix build failure due to typo. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 phy: Add file missed in previous commit. Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-next-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6 sparc64: Rework auxio driver to save some text space. of: Fix comment, sparc no longer uses of_device objects on special busses. sparc64: Run the kernel always in the TSO memory model. sparc64: Stop using memory barriers for atomics and locks. sparc64: Add tsb-ratio sysctl. sparc64: Add interface for registering a performance counter IRQ handler. sparc: Include drivers/pcmcia/Kconfig sparc64: Make %pil level 15 a pseudo-NMI. sparc64: Make special trap return path for TRAP_NMI(). sparc64: Block NMIs in critical section of context switch. sparc64: Add write_pic() helper. sparc64: Use NMI oprofile profiling on cheetah and derivative cpus. sparc32: Don't btfixup cache flush ops for viking multiple times. sparc64: Add save_stack_trace_tsk(). sparc64: Add performance counter hypervisor calls for sun4v. sparc64: Provide oprofile pseudo-NMI on Niagara. sparc: Create common header file for prom_{32,64}.c sparc: Const'ify prom_*prop*() on sparc32. sparc: Create common area for OF device layer code. sparc: Mark prom_early_alloc non-static. sparc: Move irq_trans_init() and support code into seperate file. sparc: Move 'unique_id' into prom_common.c and rename to 'prom_unique_id' sparc: Move property building code into prom_common.c sparc: Commonize get_one_property() implementations. sparc: Make sparc32's create_node() assign parent pointer. sparc: Move create_node() and friends into prom_common.c sparc: Match sparc32's build_tree() up to sparc64's sparc: Move core of OF device tree building code into prom_common.c sparc: Move prom_build_devicetree() into prom_common.c sparc: Move of_console_{device,path,options} info prom_common.c sparc: Always set AUDIT_ARCH, not just on sparc64. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 sparc: Restore irq_trans_init() call in prom_create_node(). cyber2000fb: Kill the one modular sparc prom_printf call. sparc: Kill memcmp_32.S code which has been ifdef'd out for centuries. bluetooth: Fix rfcomm_sock_ioctl() build failure with debugging enabled. sparc: Add asm/asm.h bluetooth: Fix unused var warning properly in rfcomm_sock_ioctl(). sparc: Unify strlen assembler. sparc: Commonize memcmp assembler. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 8390/8390p: Fix compat netdev ops handling. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 bnx2: Don't redefine FLOW_CTRL_{RX,TX}. bnx2x: Fix namespace collision with FLOW_CTRL_{TX,RX} Revert "net: release skb->dst in sock_queue_rcv_skb()" Revert "xfrm: Accept ESP packets regardless of UDP encapsulation mode" Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-david' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 net: Fix warning fallout from recent NAPI interface changes. igb: Fix build warning when DCA is disabled. net: Fix unused variable warnings in pasemi_mac.c and spider_net.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 sparc: Kill bogus comment about IRQF_SHARED in pci_psycho.c sparc: Update 64-bit defconfig. ipv6: Fix sporadic sendmsg -EINVAL when sending to multicast groups. sparc: Kill asm/reg*.h sparc: Remove reg*.h from Kbuild tcp: Kill extraneous SPLICE_F_NONBLOCK checks. Revert "net: Fix for initial link state in 2.6.28" acenic: Missed delete of acenic_firmware.h sparc64: Work around branch tracer warning. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 David Schleef (8): Staging: add comedi core Staging: comedi: add kcomedilib to the tree Staging: comedi: add local copy of interrupt.h Staging: comedi: add pci and usb wrapper header files Staging: comedi: comedi driver common function module Staging: comedi: add mite comedi pci driver Staging: comedi: add comedi_bond driver Staging: comedi: add comedi_parport driver David Smith (1): tpm: clean up tpm_nsc driver for platform_device suspend/resume compliance David Taht (1): Staging: add frontier tranzport and alphatrack drivers David Teigland (5): dlm: remove extra blocking callback check dlm: improve how bast mode handling dlm: change lock time stamping dlm: add time stamp of blocking callback dlm: add new debugfs entry David Vrabel (27): uwb: target reservations shouldn't get streams wusb: release mutex in the error path of whci-hcd's whc_do_gencmd() uwb: reference count reservations wusb: disable verification of the key generation algorithms wusb: do a proper channel stop uwb: order IEs by element ID wusb: reset WUSB devices with SetAddress(0) uwb: don't unbind the radio controller driver when resetting uwb: fix races between events and neh timers uwb: add pal parameter to new reservation callback uwb: add basic radio manager wlp: start/stop radio on network interface up/down uwb: remove unused beacon group join/leave events Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-upstream Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-upstream wusb: whci-hcd shouldn't do ASL/PZL updates while channel is inactive uwb: clean up whci_wait_for() timeout error message uwb: fix oops in debug PAL's reservation callback wusb: add debug files for ASL, PZL and DI to the whci-hcd driver Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-upstream uwb: fix oops when terminating an already terminated reservation wusb: fix oops when terminating a non-existant reservation uwb: fix memory leak in uwb_rc_notif() uwb: use dev_dbg() for debug messages uwb: use print_hex_dump() uwb: remove unused include/linux/uwb/debug.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-upstream David Woodhouse (27): Btrfs: Use assert_spin_locked instead of spin_trylock Btrfs: Change TestSetPageLocked() to trylock_page() Btrfs: Remove broken optimisations in end_bio functions. Btrfs: Implement our own copy of the nfsd readdir hack, for older kernels Btrfs: Discard sector data in __free_extent() Btrfs: Remove special cases for "." and ".." Minor cleanup of btrfs_real_readdir() Btrfs: Optimise NFS readdir hack slightly; don't call readdir() again when done Fill f_fsid field in btrfs_statfs() Mask root object ID into f_fsid in btrfs_statfs() Simplify btrfs_get_parent(), fix use-after-free bug Btrfs: Reinstate '-osubvol=.' option to mount entire tree Switch btrfs_name_hash() to crc32c Btrfs: Fix NFS exporting of subvol roots. Clean up btrfs_get_parent() a little more, fix a free-after-free bug atm: 32-bit ioctl compatibility [MTD] [NAND] Remove strange u_int64_t types from nandsim [MTD] Remove strange u_int32_t types from FTL [MTD] Remove more strange u_intxx_t types [JFFS2] Clean up fs/jffs2/compr_rubin.c Merge branch 'misc/mtd/sharpsl-nand' of git://git.kernel.org/pub/scm/linux/kernel/git/lumag/tosa-2.6 atm: Driver for Solos PCI ADSL2+ card. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge branch 'master' of git://git.infradead.org/users/dedekind/mtd-tests-2.6 [MTD] [TESTS] Fix some size_t printk format warnings Btrfs: Add Documentation/filesystem/btrfs.txt, remove old COPYING [MTD] [MAPS] Fix printk format warning in nettel.c Dean Hildebrand (1): nfsd: add etoosmall to nfserrno Dean Nelson (4): sgi-xp: define xp_expand_memprotect() and xp_restrict_memprotect() sgi-xp: create activate and notify gru message queues sgi-xp: define xp_partition_id and xp_region_size sgi-xp: support getting the address of a partition's reserved page Denis ChengRq (1): fs/block_dev.c: __read_mostly improvement and sb_is_blkdev_sb utilization Denis Joseph Barrow (9): hso: Add new usb device id's. hso: Fix crashes on close. hso: Fix URB submission -EINVAL. hso: Fix free of mutexes still in use. hso: Add TIOCM ioctl handling. hso: Hook up ->reset_resume tty: Modem functions for the HSO driver hso modem detect fix patch against Alan Cox'es tty tree hso maintainers update patch Denis V. Lunev (3): x86: correct link to HPET timer specification ipc: do not goto to the next line backlight: Value of ILI9320_RGB_IF2 register should not be hardcoded Detlef Riekenberg (1): linux/types.h: Don't depend on __GNUC__ for __le64/__be64 Devin Heitmueller (30): V4L/DVB (9580): Add chip id for em2874 to list of known chips V4L/DVB (9581): Remove unused variable from em28xx-audio.c V4L/DVB (9582): Add a EM28XX_NODECODER option to the list of available decoders V4L/DVB (9583): Remember chip id of devices at initialization V4L/DVB (9584): Support different GPIO/GPO registers for newer devices V4L/DVB (9585): Skip reading eeprom in newer Empia devices V4L/DVB (9586): Fix possible null pointer dereference in info message V4L/DVB (9587): Handle changes to endpoint layout in em2874 V4L/DVB (9588): Don't load em28xx audio module for digital-only devices V4L/DVB (9589): Properly support capture start on em2874 V4L/DVB (9590): Add registration for Pinnacle 80e ATSC tuner V4L/DVB (9628): em28xx: refactor IR support V4L/DVB (9629): Add support for the ATI TV Wonder HD 600 USB Remote Control V4L/DVB (9633): Put s5h1411 into low power mode at end of attach() call V4L/DVB (9644): em28xx: add em2750 to the list of known em28xx chip ids V4L/DVB (9648): em28xx: get audio config from em28xx register V4L/DVB (9657): em28xx: add a functio to write on a single register V4L/DVB (9658): em28xx: use em28xx_write_reg() for i2c clock setup V4L/DVB (9744): em28xx: cleanup XCLK register usage V4L/DVB (9745): em28xx: Cleanup GPIO/GPO setup code V4L/DVB (9921): em28xx: add chip id for em2874 V4L/DVB (9922): em28xx: don't assume every eb1a:2820 reference design is a Prolink PlayTV USB2 V4L/DVB (9923): xc5000: remove init_fw option V4L/DVB (10119): em28xx: fix corrupted XCLK value V4L/DVB (10120): em28xx: remove redundant Pinnacle Dazzle DVC 100 profile V4L/DVB (10121): em28xx: remove worthless Pinnacle PCTV HD Mini 80e device profile V4L/DVB (10122): em28xx: don't load em28xx-alsa for em2870 based devices V4L/DVB (10123): em28xx: fix reversed definitions of I2S audio modes V4L/DVB (10124): em28xx: expand output formats available V4L/DVB (10125): em28xx: Don't do AC97 vendor detection for i2s audio devices Dhaval Giani (1): sched/rt: removed unneeded defintion Dimitri Sivanich (1): sched/rt: small optimization to update_curr_rt() Dirk Heer (1): V4L/DVB (9677): bttv: fix some entries on Phytec boards and add missing ones Divy Le Ray (8): cxgb3 - enable lro control through ethtool cxgb3: set hard_xmit in the netdev_ops cxgb3: avoid potential memory leak. cxgb3: integrate FW and protocol engines in the kernel cxgb3: Update FW loading path. cxgb3: Add multiple Tx queue support. cxgb3: untie strict FW matching cxgb3: add control to access embedded images Dmitri Belimov (3): V4L/DVB (10151): Fix I2C bridge error in zl10353 V4L/DVB (10152): Change configuration of the Beholder H6 card V4L/DVB (10153): Add the Beholder H6 card to DVB-T part of sources. Dmitri Monakhov (2): kill suid bit only for regular files fs: truncate blocks outside i_size after O_DIRECT write error Dmitri Vorobiev (21): [MTD] Make init_sharpsl symbol static [MTD] Make init_sbc8240_mtd function static [MTD] Make lart_flash_init, lart_flash_exit static [MTD] Make uclinux_mtd_cleanup and uclinux_mtd_init static [MTD] Make init_tqm_mtd function static [MTD] Make init_rpxlite function static [MTD] Make init_sbc82xx_flash function static [MTD] Make the init_edb7312nor function static [MTD] Make init_oct5066 function static [MTD] Make init_flagadm function static [MTD] Make init_dbox2_flash static [MTD] Make ipaq_mtd_init function static [MTD] Make alchemy_mtd_init function static [MTD] Make init_fortunet function static [MTD] Make the function init_vmax301 static [MTD] Make init_mbx function static [MTD] Make h720x_mtd_init function static [MTD] Make init_msp_flash function static [MTD] Make init_redwood_flash function static [MTD] Make init_impa7 static [SCSI] sgiwd93: Fix compilation warning Dmitry Baryshkov (15): [MTD] sharpsl_nand: switch to driver model usage. [MTD] sharpsl_nand: make drvdata non-static [MTD] sharpsl_nand: move io addr to struct sharpsl_nand [MTD] sharpsl-nand: cleanup partitions support [MTD] sharpsl-nand: use platform_data for model-specific values [MTD] sharpsl-nand: move registration to board code ASoC: tosa: move gpio probing to machine callbacks [ARM] pxa/tosa: support tc6393xb/tmiofb. [ARM] pxa/tosa: fix building w/o TC6393XB driver [ARM] pxa/tosa: add physmap mapping for ROM [ARM] pxa/spitz: add physmap mapping for ROM [ARM] pxa/corgi: add physmap mapping for ROM [ARM] pxa/poodle: add physmap mapping for ROM pxa2xx-ac97: switch AC unit to correct state before probing backlight: Support VGA/QVGA mode switching in tosa_lcd Dmitry Eremin-Solenikov (1): Dmitry has been renamed Dmitry Torokhov (3): Input: libps2 - handle 0xfc responses from devices Merge commit 'v2.6.28-rc9' into next Merge branch 'next' into for-linus Dominic Curran (1): Input: gpio-keys - add flag to allow auto repeat Dominik Brodowski (1): [CPUFREQ] p4-clockmod: reduce noise Don Skidmore (4): net: fix dcbnl_setnumtcs operation check net: fix DCB setstate to return success/failure net: add DCNA attribute to the BCN interface for DCB ixgbe: fix the display of DCB control stats in ethtool Donald Skidmore (1): ixgbe: add SFP+ driver support Douglas Schilling Landgraf (3): V4L/DVB (9793): em28xx: Add specific entry for WinTV-HVR 850 V4L/DVB (10055): em28xx: Add entry for PixelView PlayTV Box 4 V4L/DVB (10056): em28xx: Add snapshot button on Pixelview Prolink PlayTV USB 2.0 Duane Griffin (13): eCryptfs: check readlink result was not an error before using it vfs: introduce helper function to safely NUL-terminate symlinks vfs: ensure page symlinks are NUL-terminated ext2: ensure fast symlinks are NUL-terminated ext3: ensure fast symlinks are NUL-terminated ext4: ensure fast symlinks are NUL-terminated sysv: ensure fast symlinks are NUL-terminated freevxfs: ensure fast symlinks are NUL-terminated befs: ensure fast symlinks are NUL-terminated ext2: don't inherit inappropriate inode flags from parent ext2: tighten restrictions on inode flags ext3: don't inherit inappropriate inode flags from parent ext3: tighten restrictions on inode flags Ed Swierk (1): forcedeth: power down phy when interface is down Eduard - Gabriel Munteanu (1): SLUB: Replace __builtin_return_address(0) with _RET_IP_. Eduardo Habkost (21): x86 kdump: extract kdump-specific code from crash_nmi_callback() x86 kdump: move crashing_cpu assignment to nmi_shootdown_cpus() x86 kdump: create kdump_nmi_shootdown_cpus() x86 kdump: make kdump_nmi_callback() a function ptr on crash_nmi_callback() x86 kdump: make nmi_shootdown_cpus() non-static x86: move nmi_shootdown_cpus() to reboot.c x86: make nmi_shootdown_cpus() available on !SMP and !X86_LOCAL_APIC x86: disable IRQs before doing anything on nmi_shootdown_cpus() KVM: VMX: move vmx.h to include/asm KVM: SVM: move svm.h to include/asm KVM: VMX: move ASM_VMX_* definitions from asm/kvm_host.h to asm/vmx.h KVM: VMX: move cpu_has_kvm_support() to an inline on asm/virtext.h x86: asm/virtext.h: add cpu_vmxoff() inline function KVM: VMX: extract kvm_cpu_vmxoff() from hardware_disable() x86: cpu_emergency_vmxoff() function KVM: SVM: move has_svm() code to asm/virtext.h KVM: SVM: move svm_hardware_disable() code to asm/virtext.h x86: cpu_emergency_svm_disable() function kdump: forcibly disable VMX and SVM on machine_crash_shutdown() x86: disable VMX on all CPUs on reboot x86: KVM guest: kvm_get_tsc_khz: return khz, not lpj Eilon Greenstein (1): bnx2x: Prevent eeprom set when driver is down Emmanuel Grumbach (2): iwlwifi: rename generic iwlagn functions that had a HW specific name iwlwifi: rename double inclusion protection name in iwl-commands.h Eric Anholt (15): agp/intel: Fix broken ® symbol in device name. drm/i915: Add /proc debugging entry for reading out the HWS. drm/i915: Register module dependencies for the modesetting code. drm/i915: Fix stolen memory detection on G45 and GM45. drm/i915: Add missing userland definitions for gem init/execbuffer. drm/i915: Fix fbcon setup to align display pitch to 64b. drm/i915: Don't double-unpin buffers if we take a signal in evict_everything(). drm/i915: Delete unused, pointless i915_driver_firstopen. drm/i915: Don't print to dmesg when taking signal during object_pin. drm: Avoid use-before-null-test on dev in drm_cleanup(). drm: Add a debug node for vblank state. drm/i915: Don't allow objects to get bound while VT switched. drm/i915: Add support for integrated HDMI on G4X hardware. drm/i915: Non-mobile parts don't have integrated TV-out. drm/i915: Respect the other stolen memory sizes we know of. Eric Dumazet (46): udp: introduce struct udp_table and multiple spinlocks udp: RCU handling for Unicast packets. udp: calculate udp_mem based on low memory instead of all memory udp: udp_get_next() should use spin_unlock_bh() udp: introduce sk_for_each_rcu_safenext() udp: Should use spin_lock_bh()/spin_unlock_bh() in udp_lib_unhash() udp: add a missing smp_wmb() in udp_lib_get_port() net: sk_free_datagram() should use sk_mem_reclaim_partial() net: Introduce read_pnet() and write_pnet() helpers net: ib_net pointer should depends on CONFIG_NET_NS net: Cleanup of neighbour code net: speedup dst_release() rcu: Introduce hlist_nulls variant of hlist udp: Use hlist_nulls in UDP RCU code net: Convert TCP & DCCP hash tables to use RCU / hlist_nulls rcu: documents rculist_nulls net: make sure struct dst_entry refcount is aligned on 64 bytes net: Cleanup of af_unix net: af_unix can make unix_nr_socks visbile in /proc net: af_unix should update its inuse counter net: sctp should update its inuse counter net: af_packet should update its inuse counter net: make /proc/net/protocols namespace aware net: inet_diag_handler structs can be const net: af_unix should use KERN_INFO instead of KERN_DEBUG net: listening_hash get a spinlock per bucket net: convert TCP/DCCP ehash rwlocks to spinlocks net: use net_eq() in INET_MATCH and INET_TW_MATCH net: some optimizations in af_inet net: af_netlink should update its inuse counter net: Convert TCP/DCCP listening hash tables to use RCU eth: Declare an optimized compare_ether_addr_64bits() function net: Make sure BHs are disabled in sock_prot_inuse_add() net: Make sure BHs are disabled in sock_prot_inuse_add() net: avoid a pair of dst_hold()/dst_release() in ip_append_data() net: avoid a pair of dst_hold()/dst_release() in ip_push_pending_frames() net: Make sure BHs are disabled in sock_prot_inuse_add() net: udp_unhash() can test if sk is hashed net: Use a percpu_counter for sockets_allocated net: Use a percpu_counter for orphan_count net: release skb->dst in sock_queue_rcv_skb() net: percpu_counter_inc() should not be called in BH-disabled section vlan: fix convertion to net_device_ops fix f_count description in Documentation/filesystems/files.txt filp_cachep can be static in fs/file_table.c percpu_counter: FBC_BATCH should be a variable Eric Leblond (4): netfilter: xt_NFLOG: don't call nf_log_packet in NFLOG module. netfilter: nfmark routing in OUTPUT, mangle, NFQUEUE netfilter: nfmark IPV6 routing in OUTPUT, mangle, NFQUEUE netfilter: xt_NFLOG is dependant of nfnetlink_log Eric Miao (48): [ARM] pxa: explicit #include in various drivers [ARM] pxa: use 'pxa_last_gpio' instead of 'gpio_nr' in mfp-pxa2xx.c Revert "[ARM] pxa: introduce cpu_is_pxa26x()" [ARM] pxa: add support for additional GPIOs on PXA26x [ARM] pxa: use instead of unnecessary [ARM] pxa: removed unused declarations of pxa_gpio_* in hardware.h [ARM] pxa: move camera (QCI) registers definition out of pxa-regs.h [ARM] pxa: move FICP register definitions into pxaficp_ir.c [ARM] pxa: remove unused PWM register definitions, use generic PWM API [ARM] pxa: remove the now unused IMPMCR/IMPMSR register definitions [ARM] pxa: move pxa2xx specific PWRMODE definitions into pxa2xx-regs.h [ARM] pxa: move UART register definitions into dedicated regs-uart.h [ARM] pxa: move AC97 register definitions into dedicated regs-ac97.h [ARM] pxa: move GPIOx_BASE and GPIO register offsets to gpio.c [ARM] pxa: further cleanup of pxa-regs.h [ARM] pxa: include in pxa-regs.h [ARM] pxa: remove unnecessary #include of pxa2xx-gpio.h in clock.c [ARM] pxa: move power I2C device definitions into devices.c [ARM] pxa: register Power I2C device only when necessary [ARM] pxa: move I2C pin configurations out into board specific files [ARM] pxa: introduced cpu_is_pxa935() and cpu_is_pxa9xx() [ARM] pxa: add base PXA935 support due to CPUID change [ARM] pxa: add missing GPIOs definitions [ARM] locomo: export locomo_frontlight_set() [ARM] pxafb: make {backlight,lcd}_power() members of struct pxafb_info [ARM] pxafb: add color TFT 8BPP LCD panel type [ARM] pxa: convert legacy LCD setup of other boards to new one [ARM] pxafb: remove now unused pxafb_setup_gpio() and related stuffs [ARM] pxafb: small cleanup of the smart panel code [ARM] pxafb: allow better platform configurable smart panel timing [ARM] pxafb: allow insertion of delay to the smart panel command sequence [ARM] pxafb: avoid the racing condition in pxafb_smart_thread [ARM] pxa/saar: add support for the on-board smart panel LCD [ARM] pxa/littleton: add preliminary I2C board info (da9034 + max7320) Input: add da9034 touchscreen support [ARM] pxa/tavorevb: update board support (smartpanel LCD + keypad) [ARM] rtc-sa1100: don't assume CLOCK_TICK_RATE to be a constant [ARM] sa1100_wdt: don't assume CLOCK_TICK_RATE to be a constant [ARM] pxa: add document on the MFP design and how to use it [ARM] pxafb: allow video memory size to be configurable [ARM] pxafb: allow pxafb_set_par() to start from arbitrary yoffset [ARM] pxafb: add support for FBIOPAN_DISPLAY by dma braching [ARM] pxafb: add palette format support for LCCR4_PAL_FOR_3 [ARM] pxafb: cleanup of the color format manipulation code [ARM] pxafb: cleanup of the timing checking code [ARM] pxafb: add support for overlay1 and overlay2 as framebuffer devices V4L/DVB: pxa-camera: use memory mapped IO access for camera (QCI) registers V4L/DVB (10176b): pxa-camera: fix redefinition warnings and missing DMA definitions Eric Paris (16): SELinux: check open perms in dentry_open not inode_permission SELinux: hold tasklist_lock and siglock while waking wait_chldexit SELinux: Use unknown perm handling to handle unknown netlink msg types Document the order of arguments for cap_issubset. It's not instantly clear This patch add a generic cpu endian caps structure and externally available This patch will print cap_permitted and cap_inheritable data in the PATH Any time fcaps or a setuid app under SECURE_NOROOT is used to result in a When the capset syscall is used it is not possible for audit to record the Capabilities: BUG when an invalid capability is requested Add a new capable interface that will be used by systems that use audit to The oomkiller calculations make decisions based on capabilities. Since Currently SELinux jumps through some ugly hoops to not audit a capbility capabilities: define get_vfs_caps_from_disk when file caps are not enabled filesystem notification: create fs/notify to contain all fs notification SELinux: shrink sizeof av_inhert selinux_class_perm and context sys_execve and sys_uselib do not call into fsnotify Eric Piel (1): LIS3LV02D: separate the core from HP ACPI API Eric Sandeen (4): Btrfs: fix RHEL test for ClearPageFsMisc [XFS] convert xfs_getbmap to take formatter functions [XFS] Add new getbmap flags. [XFS] Hook up the fiemap ioctl. Eric Sesterhenn (2): bfs: add some basic sanity checks bfs: check that filesystem fits on the blockdevice Eric W. Biederman (9): netns: Coexist with the sysfs limitations v2 netns: Delete virtual interfaces during namespace cleanup net: Guaranetee the proper ordering of the loopback device. net: Don't leak packets when a netns is going down net: fib_rules ordering fixes. net: Guaranetee the proper ordering of the loopback device. v2 netns: foreach_netdev_safe is insufficient in default_device_exit pid: implement ns_of_pid pid: generalize task_active_pid_ns Erik Andren (1): V4L/DVB (10048): gspca - stv06xx: New subdriver. Erik AndrĂ©n (48): V4L/DVB (9693): Remove some unused defines V4L/DVB (9694): Indent the m5602 register definitions V4L/DVB (9696): Remove accidental typo V4L/DVB (9698): Add another vflip quirk for the s5k4aa V4L/DVB (9701): Add a minor comment to the sensor init V4L/DVB (9702): Move the ov9650 vflip table to avoid compilation warnings on older kernels V4L/DVB (9703): Move the s5k4aa vflip quirk table to the main sensor file in order to avoid compilation errors on older kernels V4L/DVB (10000): gspca - m5602: Add lost ampersand V4L/DVB (10001): gspca - m5602: Minor fixes V4L/DVB (10002): m5602: Simplify error handling in the mt9m111 sensor code V4L/DVB (10003): m5602: Simplify the error handling in the ov9650 sensor V4L/DVB (10004): m5602: Cleanup the po1030 sensor error handling V4L/DVB (10005): m5602: Cleanup the s5k4aa error handling, cull some comments V4L/DVB (10006): gspca - m5602: Align some defines V4L/DVB (10007): gspca - m5602: Refactor the error handling in the s5k83a V4L/DVB (10008): gspca - m5602: Checkpatch.pl fixes on m5602_ov9650.c V4L/DVB (10009): gspca - m5602: Convert some functions to be static V4L/DVB (10010): gspca - m5602: Add vflip quirk for the ASUS A6Ja V4L/DVB (10011): m5602: Remove the write and read sensor from the main struct V4L/DVB (10012): m5602: Start to unify read/write sensor functions V4L/DVB (10013): Convert all sensors to use the unified write sensor function V4L/DVB (10014): gspca - m5602: Remove all sensor specific write functions. V4L/DVB (10015): gspca - m5602: Add initial read sensor implementation V4L/DVB (10018): gspca - m5602 - ov9650: Use generic read_sensor function V4L/DVB (10019): m5602: Let the ov9650 use the common read sensor function V4L/DVB (10020): m5602: Remove the ov9650 implementation of the read sensor function V4L/DVB (10021): m5602: Let the po1030 use the common read_sensor function V4L/DVB (10022): m5602: Remove the po1030 read_sensor function V4L/DVB (10023): m5602: Convert the mt9m111 to use the common read_sensor function V4L/DVB (10024): m5602: Remove the mt9m111 implementation of the read_sensor function. V4L/DVB (10025): m5602: convert the s5k4aa sensor to use the common function V4L/DVB (10026): m5602: remove the s5k4aa implementation of the read_sensor V4L/DVB (10027): m5602: convert the s5k83a sensor to use the common function V4L/DVB (10028): mt5602: Remove the s5k83a specific read_sensor function V4L/DVB (10029): m5602: remove uneeded test on po1030 V4L/DVB (10030): m5602: Use read/modify/write when toggling vflip on the po1030 V4L/DVB (10031): m5602: correct the name of the Pascal Stangs library V4L/DVB (10032): m5602: add vflip quirk for Alienware m9700 V4L/DVB (10033): m5602: add some comments V4L/DVB (10034): m5602: fixup offset in order to align image V4L/DVB (10035): m5602: add a start sending hook in the sensor struct V4L/DVB (10036): m5602 - ov9650: Prepare the sensor to set multiple resolutions V4L/DVB (10037): m5602: add QVGA mode for the ov9650 sensor V4L/DVB (10038): m5602: tweak the hsync. Remove redundant init sequence V4L/DVB (10039): m5602 - ov9650: Add CIF mode V4L/DVB (10040): m5602 - ov9650: Activate variopixel V4L/DVB (10041): m5602 - rework parts of the resolution initialization V4L/DVB (10127): stv06xx: Avoid having y unitialized Evgeniy Dushistov (1): minix: fix add link's wrong position calculation Evgeniy Polyakov (11): crypto: hifn - Disable driver when physical size exceeds 32 bits crypto: hifn_795x - Fix queue management crypto: hifn_795x - Use softirq kernel mapping in bh context w1: add list masters w1 command w1: add touch block command w1: list slaves commands w1: documentation update w1: allow master IO commands w1: move w1 commands from defines to enum w1: added w1 reset command w1: send status messages after command processing F. Duncan M. Haldane (1): Staging: Kconfig for ARCH=arm,8300, cris FUJITA Tomonori (42): x86: fix dma_mapping_error for 32bit x86, cleanup x86: remove dead BIO_VMERGE_BOUNDARY definition powerpc: Remove dead BIO_VMERGE_BOUNDARY definition swiotlb: replace architecture-specific swiotlb.h with linux/swiotlb.h swiotlb: remove unnecessary declaration swiotlb: clean up EXPORT_SYMBOL usage block: use min_not_zero in blk_queue_stack_limits alpha: remove dead BIO_VMERGE_BOUNDARY [SCSI] aacraid: check pci_alloc_consistent errors [SCSI] add residual argument to scsi_execute and scsi_execute_req [SCSI] retry with missing data for INQUIRY [SCSI] st: move st_request initialization to st_allocate_request form st_do_scsi [SCSI] st: add st_scsi_kern_execute helper function [SCSI] st: convert test_ready to use st_scsi_kern_execute [SCSI] st: convert set_location to use st_scsi_kern_execute [SCSI] st: convert do_load_unload to use st_scsi_kern_execute [SCSI] st: convert cross_eof to use st_scsi_kern_execute [SCSI] st: convert st_flush to use st_scsi_kern_execute [SCSI] st: convert check_tape to use st_scsi_kern_execute [SCSI] st: convert read_mode_page to use st_scsi_kern_execute [SCSI] st: convert write_mode_page to use st_scsi_kern_execute [SCSI] st: convert get_location to use st_scsi_kern_execute [SCSI] st: convert st_int_ioctl to use st_scsi_kern_execute [SCSI] scsi_transport_spi: fix the misuse of scsi_execute return value [SCSI] eata: fix the data buffer accessors conversion regression V4L/DVB (9472): dm1105: fix the misuse of pci_dma_mapping_error remove ide-scsi [SCSI] block: fix bio_add_page misuse with rq_map_data [SCSI] block: fix the partial mappings with struct rq_map_data [SCSI] block: make blk_rq_map_user take a NULL user-space buffer for WRITE [SCSI] st: make all the fragment buffers the same size [SCSI] st: add struct rq_map_data support [SCSI] st: add st_scsi_execute helper function [SCSI] st: convert non-dio path to use st_scsi_execute [SCSI] st: convert dio path to use st_scsi_execute [SCSI] st: remove buf_to_sg [SCSI] st: kill struct st_buff_fragment [SCSI] st: remove struct scatterlist [SCSI] st: simplify new_tape_buffer [SCSI] st: remove unused orig_frp_segs [SCSI] st: remove unused frp_sg_current parisc: remove dead BIO_VMERGE_BOUNDARY and BIO_VMERGE_MAX_SIZE definitions Fabio Belavenuto (1): V4L/DVB (10155): Add TEA5764 radio driver Fabio Estevam (2): Add basic support for MX31PDK board. Add default configuration for MX31PDK board. Fabio Rossi (2): mac80211: accept empty strings for hidden SSIDs V4L/DVB (9999): gspca - zc3xx: Webcam 046d:089d added. Fabrice Bellet (1): iwl3945: iwl3945_mac_get_tsf() should not return zero Faisal Latif (7): RDMA/nes: Cleanup cqp_request list usage RDMA/nes: Lock down connected_nodes list while processing it RDMA/nes: Avoid race between MPA request and reset event to rdma_cm RDMA/nes: Forward packets for a new connection with stale APBVT entry RDMA/nes: Fix TCP compliance test failures RDMA/nes: Check cqp_avail_reqs is empty after locking the list RDMA/nes: Remove tx_free_list Federico Heinz (1): i8k: Add Dell Vostro systems Felipe Balbi (3): USB: musb: Add musb git tree to maintainers entry USB: musb: check if set_irq_wake succeded and remember it USB: gadget: don't wait for completion twice Felix Beck (1): [S390] zcrypt: Use of Thin Interrupts Felix Fietkau (4): minstrel: improve performance for non-MRR drivers ath5k: ignore the return value of ath5k_hw_noise_floor_calibration mac80211: fix BUILD_BUG_ON() caused by misalignment on arm ath5k: Clean up eeprom parsing and add missing calibration data Fernando Carrijo (1): remove lots of double-semicolons Fernando Luis Vazquez Cao (1): memcg: do not recalculate section unnecessarily in init_section_page_cgroup Fernando Luis VĂ¡zquez Cao (3): block: add queue flag for paravirt frontend drivers virtio_blk: set queue paravirt flag xen-blkfront: set queue paravirt flag Finn Thain (9): m68k: Reinstate mac rtc m68k: Mac via cleanup and commentry m68k: machw.h cleanup m68k: mac baboon interrupt enable/disable macfb annotations and compiler warning fix m68k: fix trigraph ignored warning in setox.S fbcon: remove broken mac vbl handler [SCSI] m68k: mac_esp asm fix [SCSI] mac_esp: fix for quadras with two esp chips Flavio Leitner (1): serial_8250: support for Sealevel Systems Model 7803 COMM+8 Florian Fainelli (5): r6040: bump release number to 0.19 r6040: make printks consistent with DRV_NAME r6040: check PHY status when bringing interface up r6040: warn about MAC address being unset r6040: bump release number to 0.20 Franck Bui-Huu (2): do_mpage_readpage(): remove useless clear_buffer_mapped() call block_write_begin(): remove useless goto Francois Romieu (1): r8169: convert to net_device_ops Frank Blaschka (4): [S390] convert qeth printks to dev_xxx and pr_xxx macros. qeth: do not spin for SETIP ip assist command vlan: add neigh_setup qeth: convert to net_device_ops Frank Mayhar (1): ext4: Allow ext4 to run without a journal Frank Munzert (1): [S390] convert vmur printks to pr_xxx macros. Frans Pop (1): ieee1394: ohci1394: don't leave interrupts enabled during suspend/resume Frederic CAND (1): V4L/DVB (9497): tda9887/cx88: Adds SECAM/BGH standards Frederic Cand (2): V4L/DVB (9548): gspca: Properly indent Kconfig V4L/DVB (9548): gspca: Fix Kconfig CodingStyle Frederic Weisbecker (47): ftrace: add a script to produce a hierarchical view of a function trace tracing/fastboot: Enable boot tracing only during initcalls tracing/ftrace: fix a race condition in sched_switch tracer tracing/ftrace: remove unused code in sched_switch tracer tracing/fastboot: use sched switch tracer from boot tracer tracing/ftrace: types and naming corrections for sched tracer tracing/ftrace: fix a bug when switch current tracer to sched tracer tracing, x86: add low level support for ftrace return tracing tracing: add a tracer to catch execution time of kernel functions tracing/fastboot: move boot tracer structs and funcs into their own header. tracing/fastboot: Use the ring-buffer timestamp for initcall entries tracing/function-return-tracer: make the function return tracer lockless tracing/function-return-tracer: call prepare_ftrace_return by registers tracing/ftrace: fix unexpected -EINVAL when longest tracer name is set tracing/ftrace: change the type of the init() callback tracing/branch-tracer: fix a trace recursion on branch tracer tracing/function-return-tracer: add a barrier to ensure return stack index is incremented in memory tracing/function-return-tracer: support for dynamic ftrace on function return tracer tracing/ftrace: implement a set_flag callback for tracers tracing/ftrace: make nop tracer using tracer flags tracing/function-return-tracer: add the overrun field tracing/function-return-tracer: store return stack into task_struct and allocate it dynamically tracing/function-return-tracer: don't trace kfree while it frees the return stack tracing/function-return-tracer: free the return stack on free_task() tracing/function-return-tracer: change the name into function-graph-tracer tracing/function-return-tracer: set a more human readable output tracing/function-graph-tracer: enhancements for the trace output tracing/function-graph-tracer: adjustments of the trace informations tracing/branch-tracer: include missing irqflags.h tracing/function-graph-tracer: support for x86-64 tracing/function-graph-tracer: display unified style cmdline and pid tracing/function-graph-tracer: improve duration output tracing/function-graph-tracer: handle ftrace_printk entries tracing/ftrace: don't insert TRACE_PRINT during selftests tracing/ftrace: fix the check of ftrace_trace_task tracing/ftrace: provide the macro task_curr_ret_stack() tracing/function-graph-tracer: implement a print_headers function tracing/function-graph-tracer: introduce __notrace_funcgraph to filter special functions tracing/function-graph-tracer: turn tracing_selftest_running into an int tracing/function-graph-tracer: append the tracing_graph_flag tracing/fastboot: include missing headers tracing/function-graph-tracer: add a new .irqentry.text section tracing/function-graph-tracer: annotate do_IRQ and smp_apic_timer_interrupt tracing/function-graph-tracer: Output arrows signal on hardirq call/return tracing/ftrace: use preempt_enable_no_resched_notrace in ring_buffer_time_stamp() tracing/ftrace: add the printk-msg-only option tracing/ftrace: don't trace on early stage of a secondary cpu boot, v3 Frederik Schwarzer (3): trivial: fix singal -> signal typo trivial: fix then -> than typos in comments and documentation trivial: fix an -> a typos in documentation and comments From: Christoph Hellwig (1): [XFS] factor out xfs_read_agf helper Gary Hade (2): x86: add memory hotremove config option mm: show node to memory section relationship with symlinks in sysfs Gautham R Shenoy (1): sched: framework for sched_mc/smt_power_savings=N Geert Uytterhoeven (9): powerpc/ps3: Replace the flip_ctl logic in ps3av and ps3fb by a mutex powerpc/ps3: Add sub-match id modalias support crypto: testmgr - Validate output length in (de)compression tests crypto: testmgr - Correct comment about deflate parameters fbcon: Protect free_irq() by MACH_IS_ATARI check [SCSI] a2091, gvp11: kill warn_unused_result warnings Remove obsolete CONFIG_RESOURCES_64BIT fbdev/logo: check compatibility of main and extra logos mtd/ps3vram: Add modalias support to the ps3vram driver Geoff Levand (7): powerpc: Fix typo in pgtable-ppc64.h powerpc/ps3: Quiet dmesg output mtd/ps3vram: Remove ps3vram debug routines mtd/ps3vram: Cleanup ps3vram driver messages mtd/ps3vram: Use proper kernel types mtd/ps3vram: Use msleep in waits mtd/ps3vram: Use _PAGE_NO_CACHE in memory ioremap Gerald Schaefer (2): [S390] convert appldata printks to pr_xxx macros. [S390] convert monreader printks to pr_xxx macros. Gerd Hoffmann (1): add missing accounting calls to compat_sys_{readv,writev} Gerrit Renker (37): dccp: Basic data structure for feature negotiation dccp: Implement lookup table for feature-negotiation information dccp: List management for new feature negotiation dccp: Per-socket initialisation of feature negotiation dccp: Cleanup routines for feature negotiation dccp: Limit feature negotiation to connection setup phase dccp: Registration routines for changing feature values dccp: Query supported CCIDs dccp: Resolve dependencies of features on choice of CCID dccp: Mechanism to resolve CCID dependencies dccp: Deprecate old setsockopt framework dccp: Feature negotiation for minimum-checksum-coverage dccp: Deprecate Ack Ratio sysctl dccp: Tidy up setsockopt calls dccp: Fix bracing in dccp_feat_list_lookup. dccp: Set per-connection CCIDs via socket options dccp: API to query the current TX/RX CCID dccp: Increase the scope of variable-length htonl/ntohl functions dccp: Support for Mandatory options dccp: Header option insertion routine for feature-negotiation dccp: Insert feature-negotiation options into skb dccp: Integrate feature-negotiation insertion code dccp: Preference list reconciliation dccp: Process incoming Change feature-negotiation options dccp: Processing Confirm options dccp: Feature activation handlers dccp: Integration of dynamic feature activation - part 1 (socket setup) dccp: Integration of dynamic feature activation - part 2 (server side) dccp: Integration of dynamic feature activation - part 3 (client side) dccp: Clean up old feature-negotiation infrastructure dccp: Remove obsolete parts of the old CCID interface dccp: Remove manual influence on NDP Count feature dccp ccid-2: Phase out the use of boolean Ack Vector sysctl tun: Eliminate sparse signedness warning dccp: Lockless integration of CCID congestion-control plugins dccp: Clean up ccid.c after integration of CCID plugins dccp: Integrate the TFRC library with DCCP Gianluca Palli (1): Staging: comedi: add s626 driver Giuseppe Cavallaro (3): phy: add natsemi PHY driver phy: power management support phy: add the ST ste10Xp PHYs Glauber Costa (4): x86: KVM guest: sign kvmclock as paravirt KVM: Really remove a slot when a user ask us so mm: vmalloc tweak failure printk mm: vmalloc improve vmallocinfo Gleb Natapov (1): KVM: call kvm_arch_vcpu_reset() instead of the kvm_x86_ops callback Gowrishankar M (1): cgroups: skip processes from other namespaces when listing a cgroup Grace Pan (1): Blackfin arch: Enlarge flash partition for kenel for bf533/bf537 boards Graf Yang (20): Blackfin arch: fix bug - kernel with SMP patch can not bootup Blackfin arch: SMP supporting patchset: BF561 related code Blackfin arch: SMP supporting patchset: Blackfin header files and machine common code Blackfin arch: SMP supporting patchset: Blackfin CPLB related code Blackfin arch: SMP supporting patchset: Blackfin kernel and memory management code Blackfin arch: SMP supporting patchset: some other misc code Blackfin arch: Add code to free gpio when shutdown irq Blackfin arch: Request the gpio resource when making it as an irq pin, avoiding override it. Blackfin Serial Driver: fix bug - SIR driver stop receiving randomly Blackfin arch: Allow a gpio pin be requested both as gpio and irq. Blackfin arch: Add document about bfin-gpio Blackfin arch: get oprofile work for user space Blackfin arch: smp patch cleanup from LKML review Blackfin arch: implement support for /proc/dma Blackfin arch: update header to match new location Blackfin arch: Modify bfin_sir device configuration to board file Blackfin arch: Remove wasted SIR header files Blackfin arch: Fix bug - IrDA SIR build failed for BF533. Blackfin arch: remove hardware PM code, oprofile not use it Blackfin arch: Clean oprofile build path for blackfin Grant Erickson (1): powerpc: Const-qualify Device Node Argument to DCR Resource Extent API Grant Grundler (1): sata_sil24: remove unused sil24_port_multiplier Grant Likely (5): powerpc/mpc5200: Document and tidy irq driver powerpc/mpc5200: Make internal 5200 PIC the default interrupt controller powerpc/mpc5200: Bugfix on handling variable sized buffer descriptors powerpc/mpc5200: Disable bestcomm prefetching when ATA DMA enabled powerpc: Copy bootable images in the default install script Grazvydas Ignotas (5): ALSA: ASoC: TWL4030 codec - fix 256*Fs clock ASoC: TWL4030: Add input selection and gain controls ASoC: Add support for OMAP3 Pandora ARM: OMAP3: Add basic support for Pandora handheld console ASoC: Mark non-connected TWL4030 pins for pandora Greg KH (1): btrfs: fixes for kobject changes in mainline Greg Kroah-Hartman (95): driver core: create a private portion of struct device driver core: move klist_children into private structure driver core: move knode_driver into private structure driver core: move knode_bus into private structure Staging: go7007: fixes due to video_usercopy api change Staging: go7007: fixes due v4l2_file_operations api change Staging: w35und: remove usb_submit_urb wrapper function Staging: w35und: remove usb_alloc_urb wrapper function Staging: w35und: fix config build warnings Staging: wlan-ng: fix compiler warnings Staging: at76_usb: fix build breakage Staging: at76_usb: remove compiler warnings Staging: at76_usb: fix up all remaining checkpatch.pl warnings Staging: go7007: fix minor build warnings Staging: go7007: add some more v4l2 ioctls Staging: agnx: fix build errors due to ssid removal Staging: agnx: fix build errors due to rate control API changes Staging: agnx: fix build warnings Staging: otus: fix netdev->priv usage Staging: otus: fix urb callback function type Staging: add rt2860 wireless driver Staging: rt2860: disable root hack for reading files Staging: rt2860: fix up netdev->priv usage Staging: rt2860: Fix minor compiler warnings Staging: rt2860: enable WPA_SUPPLICANT support Staging: benet: fix netif api breakage Staging: benet: fix up netdev->priv change Staging: benet: build is broken unless CONFIG_NETPOLL is enabled Staging: benet: fix build error. Staging: comedi: fix up a lot of checkpatch.pl warnings Staging: comedi: fix checkpatch.pl errors in comedi_fops.c Staging: comedi: fix build error in comedilib.h Staging: comedi: set up infrastructure for individual drivers Staging: comedi: dt9812: fix up a lot of coding style issues Staging: comedi: dt9812: remove dt9812.h Staging: comedi: dt9812: remove typedefs Staging: comedi: dt9812: fix sparse warnings Staging: comedi: usbdux: remove kernel version checks Staging: comedi: usbdux: code style cleanups Staging: comedi: usbdux: remove // comments Staging: comedi: usbdux: fix up printk calls Staging: comedi: usbdux: remove checkpatch.pl warnings Staging: comedi: usbdux: remove typedef Staging: comedi: usbdux: remove comedi usb wrappers Staging: comedi: usbduxfast: remove comedi usb wrappers Staging: comedi: dt9812: remove #ifdef that is not needed Staging: comedi: remove usb wrappers Staging: comedi: remove PCI wrappers Staging: comedi: fix checkpatch.pl issues in comedi_bond.c Staging: comedi: fix checkpatch.pl issues in comedi_fc.c Staging: comedi: remove typedefs from comedi_bond.c Staging: comedi: fix sparse issues in comedi_bond.c Staging: comedi: fix checkpatch.pl issues in comedi_test.c Staging: comedi: fix sparse issues in comedi_test.c Staging: comedi: remove typedefs from comedi_test.c Staging: comedi: fix comedi_parport.c checkpatch.pl issues. Staging: comedi: fix comedi_fc.h checkpatch.pl issues. Staging: comedi: fix comedi_pci.h checkpatch.pl issues. Staging: comedi: comedi_pci.h: remove unneeded wrapper Staging: comedi: comedi_pci.h: remove comedi_pci_enable_no_regions Staging: comedi: comedi_pci.h: remove comedi_pci_disable_no_regions Staging: comedi: me_daq: fix checkpatch.pl issues Staging: comedi: me_daq: remove typedefs Staging: comedi: me_daq: fix sparse issues Staging: comedi: fix checkpatch.pl warning in interrupt.h Staging: add rtl8187se driver Staging: rtl8187se: remove unneeded files Staging: rtl8187se: make the built module be the proper name Staging: rtl8187se: remove duplicate pci ids Staging: add princeton instruments usb camera driver Staging: add mimio xi driver Staging: add rt2870 wireless driver Staging: rt2870: disable root hack for reading files Staging: rt2870: fix up netdev->priv usage Staging: frontier: remove unused alphatrack_sysfs.c file Staging: frontier: fix compiler warnings Staging: epl: run Lindent on all kernel/*.h files Staging: epl: run Lindent on all user/*.h files Staging: epl: run Lindent on *.h files Staging: epl: run Lindent on *.c files Staging: epl: hr timers all run in hard irq context now Staging: epl: fix netdev->priv b0rkage Staging: add android framework Staging: android: remove dummy android.c driver Staging: android: binder: fix build errors USB: serial: fix up urb->status usage USB: option: increase outgoing buffer size and number USB: add new opticon serial driver USB: add siemens_mpi usb-serial "stub" driver USB: remove warn() macro from usb.h USB: remove info() macro from usb.h Revert "driver core: move knode_bus into private structure" Revert "driver core: move knode_driver into private structure" Revert "driver core: move klist_children into private structure" Revert "driver core: create a private portion of struct device" Guennadi Liakhovetski (20): i.MX31: fix mxc_iomux_set_pad() [ARM] pcm037: add support for the on-board LAN9217 network controller V4L/DVB (9785): soc-camera: merge .try_bus_param() into .try_fmt_cap() V4L/DVB (9786): soc-camera: formatting fixes V4L/DVB (9787): soc-camera: let camera host drivers decide upon pixel format V4L/DVB (9788): soc-camera: simplify naming V4L/DVB (9789): soc-camera: add a per-camera device host private data pointer V4L/DVB (9790): soc-camera: pixel format negotiation - core support V4L/DVB (10066): mt9m001 mt9v022: fix bus-width switch GPIO availability test V4L/DVB (10072): soc-camera: Add signal inversion flags to be used by camera drivers V4L/DVB (10074): soc-camera: add camera sense data V4L/DVB (10075): pxa-camera: setup the FIFO inactivity time-out register V4L/DVB (10080): soc-camera: readability improvements, more strict operations checks V4L/DVB (10081): pxa-camera: call try_fmt() camera device method with correct pixel format V4L/DVB (10083): soc-camera: unify locking, play nicer with videobuf locking V4L/DVB (10090): soc-camera: let drivers decide upon supported field values V4L/DVB (10091): mt9m001 mt9v022: simplify pointer derefernces V4L/DVB (10093): soc-camera: add new bus width and signal polarity flags V4L/DVB (10099): soc-camera: add support for MT9T031 CMOS camera sensor from Micron V4L/DVB (10176a): Switch remaining clear_user_page users over to clear_user_highpage Guenter Gebhardt (1): Staging: comedi: add me4000 driver Guillaume Thouvenin (9): KVM: x86 emulator: consolidate push reg KVM: x86 emulator: Add decode entries for 0x04 and 0x05 opcodes (add acc, imm) KVM: allow emulator to adjust rip for emulated pio instructions KVM: VMX: Handle mmio emulation when guest state is invalid KVM: x86 emulator: Extend the opcode descriptor KVM: x86 emulator: add Src2 decode set KVM: x86 emulator: add a new "implied 1" Src decode type KVM: x86 emulator: add the assembler code for three operands KVM: x86 emulator: add the emulation of shld and shrd instructions Guo-Fu Tseng (1): jme: Remove 64 and 40 bit dma_mask H. Peter Anvin (10): x86: 32 bit: interrupt stub consistency with 64 bit x86: 32 bits: shrink and align IRQ stubs x86: 64 bits: shrink and align IRQ stubs x86: attempt reboot via port CF9 if we have standard PCI ports x86: fix up the new IRQ code for older versions of gas x86: revert default reboot method to REBOOT_KBD x86: drop REBOOT_CF9_COND from reboot fallback chain x86: prioritize the FPU traps for the error code x86: PAT: fix address types in track_pfn_vma_new() x86: unify the implementation of FPU traps Haavard Skinnemoen (9): favr-32: Remove deprecated call Merge branch 'cleanups' into boards Merge branch 'move-atmel-mci-h' into boards avr32: data param to at32_add_device_mci() must be non-NULL atmel_spi: clean up SPIv1 quirk handling spi: atmel_spi update chipselect handling avr32: Define DIE_OOPS Merge branches 'fixes', 'cleanups' and 'boards' avr32: Move syscalls.h under arch/avr32/include/asm/ Haiying Wang (3): powerpc/85xx: Add localbus node in mpc8572ds dts file powerpc/85xx: Don't reset the MPIC for CAMP mode on MPC8572DS powerpc/85xx: Create dts for each core in CAMP mode for MPC8572DS Halperin, Daniel C (2): iwlwifi: update iwl-commands.h for 3 stream support iwlwifi: implement iwl_debug_report_frame for iwlagn Hannes Eder (66): sound: Fix warnings relating to ignored return value in snd_card_register ALSA: hda - fix sparse warning x86: vmware - fix sparse warnings x86: hypervisor - fix sparse warnings x86: remove duplicate #define from 'cpufeature.h' x86: boot - fix sparse warnings x86: HPET: fix sparse warning CRED: fix sparse warnings x86: microcode: fix sparse warnings pkt_sched: fix sparse warning ACPI: EC: fix compilation warning mISDN: use NULL pointer instead of plain integer mISDN: consistently define 'debug' as '*u_int' mISDN: make global symbols static or include header files mISDN: un-export symbol 'plx_lock' mISDN: fix sparse warning: symbol 'nskb' shadows an earlier one mISDN: fix sparse warning: symbol 'id' shadows an earlier one mISDN: comment out unused symbols mISDN: timerdev: use __user for mISDN_read's buffer argument mISDN: hfcmulti: use __iomem address space modifier isdn: eicon: fix sparse warning: make global functions static drivers/net: fix sparse warning: use ANSI-style function declaration drivers/net: fix sparse warnings: make do-while a compound statement drivers/net: fix sparse warning: returning void-valued expression drivers/net: fix sparse warnings: make symbols static drivers/net/arcnet: fix sparse warnings: make symbols static drivers/net/atlx: fix sparse warnings: make symbols static drivers/net/bonding: fix sparse warnings: move decls to header file drivers/net/cxgb3: comment out dead code drivers/net/e1000e: fix sparse warnings: make symbols static drivers/net/enic: fix sparse warning: make symbol static drivers/net/igb: remove dead code (function 'igb_read_pci_cfg') drivers/net/irda: fix sparse warnings: make symbols static drivers/net/ixgbe: fix sparse warnings: make symbols static drivers/net/netxen: fix sparse warnings: use NULL pointer instead of plain integer drivers/net/qlge: fix sparse warnings: make symbols static drivers/net/skfp: fix sparse warnings: make symbols static drivers/net/tokenring: fix sparse warnings: make symbols static drivers/net/tulip: fix sparse warnings: make do-while a compound statement drivers/net/wan: fix sparse warnings: make do-while a compound statement drivers/net/wan: fix sparse warning: make symbol static drivers/net/wan/z85230.c: fix sparse warnings: un-EXPORT symbols drivers/net/wireless: fix sparse warnings: make symbols static drivers/net/wireless/ath9k: fix sparse warnings: make symbols static drivers/net/wireless/b43: fix sparse warnings: make symbols static drivers/net/wireless/ipw2x00: fix sparse warnings: make symbols static drivers/net/wireless/prism54: fix sparse warnings: make symbols static drm/i915: fix sparse warnings: declare one-bit bitfield as unsigned drm/i915: fix sparse warnings: make symbols static drm/i915: fix sparse warnings: move 'extern' decls to header file drm/i915: fix sparse warnings: returning void-valued expression drm/i915: un-EXPORT and make 'intelfb_panic' static KVM: fix sparse warning KVM: VMX: fix sparse warning kbuild: disable sparse warning "returning void-valued expression" HID: avoid sparse warning in HID_COMPAT_LOAD_DRIVER proc: fix sparse warning trivial: rtc-ds1511: fix sparse warning trivial: rtc-stk17ta8: fix sparse warning hugetlb: fix sparse warnings nvidia: fix sparse warnings viafb: fix sparse warnings pm3fb: fix sparse warning neofb: fix sparse warnings i810: fix sparse warnings intelfb: fix sparse warnings Hannes Hering (1): ehea: Fix some whitespace issues Hans J. Koch (2): UIO: Pass information about ioports to userspace (V2) UIO: Documentation for UIO ioport info handling Hans Verkuil (57): V4L/DVB (9484): v4l: rename compat_ioctl32.c to v4l2-compat-ioctl32.c V4L/DVB (9502): ov772x: CodingStyle improvements V4L/DVB (9503): v4l: remove inode argument from video_usercopy V4L/DVB (9504): dvbdev: fix typo causing 2.6.28 compile error V4L/DVB (9507): v4l: remove EXPERIMENTAL from several drivers V4L/DVB (9508): ivtv: enable tuner support for Yuan PG600-2 V4L/DVB (9678): af9015: Cleanup switch for usb ID V4L/DVB (9820): v4l2: add v4l2_device and v4l2_subdev structs to the v4l2 framework. V4L/DVB (9821): v4l2-common: add i2c helper functions V4L/DVB (9822): cs53l32a: convert to v4l2_subdev. V4L/DVB (9823): cx25840: convert to v4l2_subdev. V4L/DVB (9824): m52790: convert to v4l2_subdev. V4L/DVB (9825): msp3400: convert to v4l2_subdev. V4L/DVB (9826): saa7115: convert to v4l2_subdev. V4L/DVB (9827): saa7127: convert to v4l2_subdev. V4L/DVB (9828): saa717x: convert to v4l2_subdev. V4L/DVB (9829): tuner: convert to v4l2_subdev. V4L/DVB (9830): upd64031a: convert to v4l2_subdev. V4L/DVB (9831): upd64083: convert to v4l2_subdev. V4L/DVB (9832): vp27smpx: convert to v4l2_subdev. V4L/DVB (9833): wm8739: convert to v4l2_subdev. V4L/DVB (9834): wm8775: convert to v4l2_subdev. V4L/DVB (9835): ivtv/ivtvfb: convert to v4l2_device/v4l2_subdev. V4L/DVB (9904): v4l: fix compile warning. V4L/DVB (9905): v4l2-compat32: add missing newline after kernel message V4L/DVB (9932): v4l2-compat32: fix 32-64 compatibility module V4L/DVB (9934): v4l2-compat32: add two additional #ifdef __OLD_VIDIOC_ lines V4L/DVB (9939): tuner: fix tuner_ioctl compile error if V4L1 ioctls are disabled. V4L/DVB (9940): bt832: remove this driver V4L/DVB (9941): cx24113: fix compile warnings V4L/DVB (9942): v4l2-dev: check for parent device in get_index. V4L/DVB (9943): v4l2: document video_device. V4L/DVB (9944): videodev2.h: fix typo. V4L/DVB (9957): v4l2-subdev: add g_sliced_vbi_cap and add NULL pointer checks V4L/DVB (9958): tvp5150: convert to v4l2_subdev. V4L/DVB (9959): tvaudio: convert to v4l2_subdev. V4L/DVB (9960): v4l2-subdev: ioctl ops should use unsigned for cmd arg. V4L/DVB (9961): tea6415c: convert to v4l2_subdev. V4L/DVB (9962): tea6420: convert to v4l2_subdev. V4L/DVB (9963): tlv320aic23b: convert to v4l2_subdev. V4L/DVB (9964): tda7432: convert to v4l2_subdev. V4L/DVB (9965): tda9840: convert to v4l2_subdev. V4L/DVB (9966): tda9875: convert to v4l2_subdev. V4L/DVB (9967): cs5345: convert to v4l2_subdev and fix broken s_ctrl. V4L/DVB (9973): v4l2-dev: use the release callback from device instead of cdev V4L/DVB (9974): v4l2-dev: allow drivers to pass v4l2_device as parent V4L/DVB (9975): ivtv: set v4l2_dev instead of parent. V4L/DVB (10132): v4l2-compat-ioctl32: remove dependency on videodev. V4L/DVB (10133): v4l2-framework: use correct comment style. V4L/DVB (10134): v4l2 doc: set v4l2_dev instead of parent. V4L/DVB (10135): v4l2: introduce v4l2_file_operations. V4L/DVB (10136): v4l2 doc: update v4l2-framework.txt V4L/DVB (10137): v4l2-compat32: only build if needed V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. V4L/DVB (10139): v4l: rename v4l_compat_ioctl32 to v4l2_compat_ioctl32 V4L/DVB (10140): gp8psk: fix incorrect return code (EINVAL instead of -EINVAL) V4L/DVB (10141): v4l2: debugging API changed to match against driver name instead of ID. Hans de Goede (28): V4L/DVB (9543): gspca: Adjust autoexpo values for cams with a vga sensor in sonixb. V4L/DVB (9685): gspca: Correct restart of webcams in spca501. V4L/DVB (9686): gspca: Don't return the control values from the webcams in spca501. V4L/DVB (9687): gspca: Split brightness and red and blue balance in spca501. V4L/DVB (9706): gspca: Use the ref counting of v4l2 for disconnection. V4L/DVB (9707): gspca: Remove the event counter and simplify the frame wait. V4L/DVB (9878): gspca - vc032x: Fix frame overflow errors with vc0321. V4L/DVB (9982): gspca - pac207: Update my email address. V4L/DVB (9992): gspca - pac207: Webcam 093a:2461 added. V4L/DVB (10044): gspca - pac7311: Webcam 093a:2620 added. hwmon: (f71882fg) Style cleanups and put some repeating code into functions hwmon: (f71882fg) Add support for the F71862FG superio sensors hwmon: (f71882fg) Move some io access from the detect to the probe function hwmon: (f71882fg) Prepare for adding F8000 support hwmon: (f71882fg) Fix various sysfs callback function issues hwmon: (f71882fg) Cleanup fan and temp hyst functions hwmon: (f71882fg) Check for hwmon powerdown state hwmon: (f71882fg) Separate max and crit alarm and beep hwmon: (f71882fg) Remove the fan_mode module option hwmon: (f71882fg) Add F8000 support hwmon: (f71882fg) Add missing pwm3 attr for f71862fg hwmon: (f71882fg) Fix auto_channels_temp temp numbering with f8000 hwmon: (f71882fg) Add documentation hwmon: (f71882fg) Printout fan modes hwmon: (f71882fg) Fix fan_to/from_reg prototypes hwmon: (fschmd) Cleanups for watchdog support hwmon: (fschmd) Add watchdog support hwmon: Deprecate the fscher and fscpos drivers Harry Fearnhamm (1): RealView: Use flush_cache_all() rather than MCR in cpu_enter_lowpower() Hartley Sweeten (5): [ARM] 5309/1: ep93xx: add edb9307a platform [ARM] 5311/1: ep93xx: add core support for built in i2c bus [ARM] 5324/2: ep93xx: support gpio interrupt debounce [ARM] 5342/1: ep93xx: platform init cleanup [ARM] 5343/1: ep93xx: include linux/i2c.h Harvey Harrison (96): printk: add %pM format specifier for MAC addresses x86: use the new byteorder headers printk: add %p6 format specifier for IPv6 addresses net: replace all current users of NIP6_SEQFMT with %#p6 misc: replace NIP6_FMT with %p6 format specifier netfilter: replace uses of NIP6_FMT with %p6 net: replace uses of NIP6_FMT with %p6 net, misc: replace uses of NIP6_FMT with %p6 infiniband: use %p6 for printing message ids infiniband: ipoib replace IPOIB_GID_FMT with %p6 infiniband: remove IPOIB_GID_RAW_ARG, IPOIB_GID_ARG, IPOIB_GID_FMT uwb: use the %pM formatting specifier in eda.c net: remove NIP6(), NIP6_FMT, NIP6_SEQFMT and final users printk: add %I4, %I6, %i4, %i6 format specifiers net: replace %#p6 format specifier with %pi6 net: replace %p6 with %pI6 printk: remove %p6 format specifier, fix up comments net: easy removals of HIPQUAD using %pI4 format net: replace NIPQUAD() in net/ipv4/netfilter/ net: replace NIPQUAD() in net/ipv4/ net/ipv6/ net: replace NIPQUAD() in net/netfilter/ net: replace NIPQUAD() in net/*/ drivers: replace NIPQUAD() fs: replace NIPQUAD() misc: replace NIPQUAD() printk: ipv4 address digits printed in reverse order powerpc: Use the new byteorder headers xtensa: use the new byteorder headers ipvs: oldlen, newlen should be be16, not be32 phonet: sparse annotations of protocol, remove forward declaration tipc: trivial endian annotation in debug statement x86: x86_32 has its own irq_regs definition xtensa: switch to packed struct unaligned access implementation isdn: use %pI4, remove get_{u8/u16/u32} and put_{u8/u16/u32} inlines net: ip_sockglue.c add static, annotate ports' endianness isdn: isdn_net.c annotate struct ip_ports and trivial sparse fixes aoe: remove private mac address format function decnet: remove private wrappers of endian helpers decnet: compile fix for removal of byteorder wrapper fuse: clean up annotations of fc->lock iwlwifi: remove uses of __constant_{endian} helpers [MTD] remove private wrapper of endian helpers in rfd_ftl.c Input: ads7846 - strict_strtoul takes unsigned long dlm: trivial annotation of be16 value crypto: camellia - use kernel-provided bitops, unaligned access crypto: remove uses of __constant_{endian} helpers crypto: salsa20 - Remove private wrappers around various operations [S390] s390: use the new byteorder headers m68k: use the new byteorder headers V4L/DVB (9636): dvb: cinergyt2 annotate struct endianness, remove unused variable, add static V4L/DVB (9637): usb vendor_ids/product_ids are __le16 mmc: trivial annotation of 'blocks' __FUNCTION__ is gcc-specific, use __func__ ieee1394: consolidate uses of IEEE1934_BUSID_MAGIC ieee1394: pcilynx: trivial endian annotation ieee1394: replace CSR_SET_BUS_INFO_GENERATION macro ieee1394: mark bus_info_data as a __be32 array ieee1394: eth1394: trivial sparse annotations ieee1394: dv1394: annotate frame input/output structs as little endian ieee1934: dv1394: interrupt enabling/disabling broken on big-endian GFS2: sparse annotation of gl->gl_spin parisc: use the new byteorder headers staging: correct dubious use of !x & y Staging: go7007: annotate code pointers lib: fix sparse shadowed variable warning lib: radix_tree.c make percpu variable static lib: proportions.c trivial sparse lock annotation ibmpex: add endian annotation to extract_data() helper blackfin: remove __FUNCTION__ in video driver fb: carminefb: trivial annotation packing color register byteorder: only use linux/swab.h avr32: introduce asm/swab.h mips: introduce asm/swab.h powerpc: introduce asm/swab.h s390: introduce asm/swab.h sh: introduce asm/swab.h sparc: introduce asm/swab.h x86: introduce asm/swab.h m68k: introduce asm/swab.h alpha: introduce asm/swab.h arm: introduce asm/swab.h blackfin: introduce asm/swab.h ia64: introduce asm/swab.h h8300: introduce asm/swab.h m68knommu: introduce asm/swab.h m32r: introduce asm/swab.h frv: introduce asm/swab.h mn10300: introduce asm/swab.h byteorder: remove the now unused byteorder.h USB: avoid needless address-taking of function parameters USB: wusb: annotate association types withe proper endianness xtensa: introduce swab.h trivial: replace last usages of __FUNCTION__ in kernel staging: __FUNCTION__ is gcc-specific, use __func__ parisc: introduce asm/swab.h memstick: annotate endianness of attribute structs Heiko Carstens (27): ftrace: preemptoff selftest not working nohz: no softirq pending warnings for offline cpus sched: let arch_update_cpu_topology indicate if topology changed sched: add missing arch_update_cpu_topology() call [S390] cpu topology: fix cpu_core_map initialization [S390] cpu topology: dont destroy cpu sets on topology change [S390] convert etr/stp to stop_machine interface [S390] convert s390 to generic IPI infrastructure [S390] Move stfle to header file. [S390] ftrace: function tracer backend for s390 [S390] cio: get rid of compile warning [S390] mark disabled_wait as noreturn function [S390] sclp vt220: fix compile warning [S390] Remove initial kernel stack backchain initialization. [S390] cpu topology: introduce kernel parameter [S390] cpu topology: remove dead code [SCSI] zfcp: fix compile warning stop_machine: introduce stop_machine_create/destroy. module: convert to stop_machine_create/destroy. qeth: get rid of extra argument after printk to dev_* conversion iucv: fix cpu hotplug stop_machine/cpu hotplug: fix disable_nonboot_cpus [S390] ptrace: no extern declarations for userspace [S390] types: add/fix types.h include in header files [S390] remove code for oldselect system call [S390] vdso: compile fix [S390] Use unsigned long long for u64 on 64bit. Helge Deller (7): Input: HIL drivers - add MODULE_ALIAS() module: fix module loading failure of large kernel modules for parisc parisc: fix module loading failure of large kernel modules parisc: fix GFP_KERNEL use while atomic in unwinder parisc: trivial fixes parisc: Replace NR_CPUS in parisc code parisc: add uevent helper for parisc bus Helmut Schaa (2): iwl3945: remove obsolete irq handling ipw2200: fix scanning while associated Hendrik Brueckner (14): hvc_console: Always schedule resize work on resize hvc_console: Escape magic sysrq key [S390] s390/hvc_console: z/VM IUCV hypervisor console support [S390] iucv: Locking free version of iucv_message_(receive|send) [S390] s390/setup: set default preferred console device "ttyS" [S390] provide documentation for hvc_iucv kernel parameter. af_iucv: New error return codes for connect() af_iucv: Free iucv path/socket in path_pending callback [S390] hvc_iucv: Change IUCV term id and use one device as default [S390] hvc_iucv: Limit rate of outgoing IUCV messages [S390] hvc_iucv: Update function documentation [S390] hvc_iucv: Refactor console and device initialization [S390] hvc_iucv: Special handling of IUCV HVC devices [S390] update documentation for hvc_iucv kernel parameter. Henning Rogge (1): nl80211: Add signal strength and bandwith to nl80211station info Henrik Rydberg (1): hwmon: applesmc: Add support for MacBook Air 2 Henrique de Moraes Holschuh (7): rfkill: use killable locks instead of interruptible rfkill: export global states to rfkill-input rfkill: add master_switch_mode and EPO lock to rfkill and rfkill-input rfkill: honour EPO state when resuming a rfkill controller rfkill: rate-limit rfkill-input workqueue usage (v3) rfkill: preserve state across suspend rfkill: always call get_state() hook on resume Herbert Xu (39): net: Add frag_list support to skb_segment net: Add frag_list support to GSO net: Add Generic Receive Offload infrastructure ipv4: Add GRO infrastructure net: Add skb_gro_receive tcp: Add GRO support ethtool: Add GGRO and SGRO ops e1000e: Add GRO support crypto: padlock - Avoid resetting cword on successive operations crypto: api - Move type exit function into crypto_tfm crypto: api - Rebirth of crypto_alloc_tfm crypto: hash - Add shash interface crypto: hash - Export shash through ahash crypto: hash - Add import/export interface crypto: api - Call type show function before legacy for proc crypto: hash - Export shash through hash crypto: crc32c - Switch to shash crypto: crc32c-intel - Switch to shash crypto: crc32c - Test descriptor context format libcrc32c: Move implementation to crypto crc32c libcrc32c: Add crc32c_le macro libcrc32c: Select CRYPTO in Kconfig crypto: hash - Make setkey optional crypto: null - Switch to shash crypto: rmd128 - Switch to shash crypto: rmd160 - Switch to shash crypto: rmd256 - Switch to shash crypto: rmd320 - Switch to shash crypto: aes - Precompute tables tcp: Always set urgent pointer if it's beyond snd_nxt ipsec: Remove useless ret variable gro: Fix potential use after free net: Fix percpu counters deadlock gro: Use gso_size to store MSS gro: Add page frag support gro: Add internal interfaces for VLAN vlan: Add GRO interfaces ipv6: Add GRO support tcp6: Add GRO support Hermann Pitton (1): V4L/DVB (9798): saa7134: add analog and DVB-T support for Medion/Creatix CTX946 Herton Ronaldo Krzesinski (8): rtl8187: adapt for deprecated IEEE80211_CONF_SHORT_SLOT_TIME flag rtl8187: add short slot handling for 8187B rtl8187: fix 8187B throughput regression rtl8187: implement conf_tx callback to configure tx queues rtl8187: feedback transmitted packets using tx close descriptor for 8187B [CPUFREQ] add to speedstep-lib additional fsb values for core processors [CPUFREQ] Add Celeron Core support to p4-clockmod. rtl8187: Fix crash on unload when using SLUB debug Hidehiro Kawai (1): coredump_filter: permit changing of the default filter Hidetoshi Seto (1): PCI hotplug: aerdrv: fix a typo in error message Hirokazu Takahashi (1): memcg: add mem_cgroup_disabled() Hiroshi Shimamoto (48): uaccess: fix parameters inversion for __copy_from_user_inatomic() x86: signal: cosmetic unification of restore_sigcontext() x86: signal_64.c: get_stack() doesn't need entire regs x86: signal: cosmetic unification of signr_convert() x86: signal: cosmetic unification of macros for setup_rt_frame() x86: signal: cosmetic unification of NR_restart_syscall x86: signal_64: remove unused code in __setup_rt_frame() x86: signal_32: do save_i387_xstate() at get_sigframe() x86: ia32_signal: do save_i387_xstate_ia32 at get_sigframe() x86: signal_64: setup fpstate in setup_sigcontext() x86: signal_64: make setup_sigcontext() similar x86: signal: cosmetic unification of setup_sigcontext() x86: signal_32: introduce retcode and rt_retcode x86: ia32_signal: remove unnecessary padding x86: ia32_signal: cleanup macro COPY x86: ia32_signal: introduce COPY_SEG_CPL3 x86: ia32_signal: cleanup macro RELOAD_SEG x86: ia32_signal: remove using temporary variable x86: ia32_signal: change order of storing in setup_sigcontext() x86: signal: rename COPY_SEG_STRICT to COPY_SEG_CPL3 x86: signal: cosmetic unification of including headers x86: signal: cosmetic unification of sys_sigaltstack() x86: signal: cosmetic unification of sys_rt_sigreturn() x86: signal: move {setup|restore}_sigcontext() x86: signal: cosmetic unification of __setup_sigframe() and __setup_rt_sigframe() x86: signal: unify signal_{32|64}.c, prepare x86: signal: unify signal_{32|64}.c x86: signal: change type of paramter for sys_rt_sigreturn() x86: uaccess: return value of __{get|put}_user() can be int x86: kill #ifdef for exit_idle() x86: hardirq: introduce inc_irq_stat() x86: hardirq: use inc_irq_stat() in non-unified functions x86: signal: use signal_fault() in sys_sigreturn() x86: ia32_signal: use __put_user() instead of __copy_to_user() x86: ia32_signal: use proper macro __USER32_DS x86: signal: move ia32 func declarations into arch/x86/kernel/signal.c x86: signal: rename sigframe and rt_sigframe on 32-bit x86: signal: move sigframe.h to arch/x86/include/asm x86: signal: prepare to include from ia32_signal.c x86: ia32_signal: rename struct sigframe and rt_sigframe x86: ia32_signal: use sigframe.h x86: sigframe.h: add guard macro x86: sigframe.h: include headers for dependency x86: asm-offset_64: use rt_sigframe_ia32 x86: ia32.h: remove unused struct sigfram32 and rt_sigframe32 printk: fix discarding message when recursion_bug x86: ia32_signal: remove unnecessary declaration binfmts.h: include list.h Hitoshi Mitake (1): x86: provide readq()/writeq() on 32-bit too Holger Eitzenberger (23): bonding: add and use bond_is_lb() bonding: use table for mode names bonding: fix compile error if debug enabled bonding: use pr_debug instead of own macros bonding: remove duplicate declarations bonding: make tbl argument to bond_parse_parm() const bonding: turn all bond_parm_tbls const bonding: improve elaborate port_state assignment bonding: introduce and use port_params structure bonding: use port_params in __record_pdu() bonding: use plain memcpy in __record_default() bonding: init port_params from template bonding: remove various function declarations bonding: use port_params in __update_selected() bonding: use port_params in __update_default_selected() bonding: use port_params in __update_lacpdu_from_port 802.3ad: make ntt bool 802.3ad: turn ports is_enabled into a bool 802.3ad: turn ports is_individual into a bool 802.3ad: remove typedef around ad_system 802.3ad: initialize ports LACPDU from const initializer 802.3ad: generalize out mac address initializer 802.3ad: use standard ethhdr instead of ad_header Holger Schurig (1): wireless: fix two bad print_ssid conversions Holger Smolinski (1): [S390] dasd: add device attribute to disable blocking on lost paths Hollis Blanchard (30): powerpc: Remove superfluous WARN_ON() from dma-noncoherent.c powerpc/kvm: update KVM config options in ppc44x_defconfig powerpc: Force memory size to be a multiple of PAGE_SIZE virtio-pci queue allocation not page-aligned virtio: avoid implicit use of Linux page size in balloon interface KVM: ppc: Move 440-specific TLB code into 44x_tlb.c KVM: ppc: Rename "struct tlbe" to "struct kvmppc_44x_tlbe" KVM: ppc: combine booke_guest.c and booke_host.c KVM: ppc: Refactor powerpc.c to relocate 440-specific code ppc: Create disassemble.h to extract instruction fields KVM: ppc: refactor instruction emulation into generic and core-specific pieces KVM: ppc: Move the last bits of 44x code out of booke.c KVM: ppc: create struct kvm_vcpu_44x and introduce container_of() accessor KVM: ppc: adjust vcpu types to support 64-bit cores KVM: ppc: fix set regs to take care of msr change KVM: ppc: optimize kvm stat handling KVM: ppc: optimize find first bit KVM: ppc: optimize irq delivery path KVM: ppc: improve trap emulation KVM: ensure that memslot userspace addresses are page-aligned KVM: ppc: fix Kconfig constraints KVM: ppc: use MMUCR accessor to obtain TID KVM: ppc: use prefetchable mappings for guest memory KVM: ppc: fix userspace mapping invalidation on context switch KVM: ppc: support large host pages powerpc/44x: declare tlb_44x_index for use in C code KVM: ppc: directly insert shadow mappings into the hardware TLB KVM: ppc: save and restore guest mappings on context switch KVM: ppc: Implement in-kernel exit timing statistics KVM: ppc: mostly cosmetic updates to the exit timing accounting code Hongjie Yang (1): [S390] convert dcssblk and extmem printks messages to pr_xxx macros. Huang Weiyi (10): uwb: remove unused #include wusb: remove unused #include ALSA: ASoC codec: remove unused #include V4L/DVB: remove unused #include V4L/DVB: remove unused #include net: KS8695: removed duplicated #include tracing: removed duplicated #include x86: remove duplicated #include's Staging: wlan-ng: remove unused #include [S390] gettimeofday.S: removed duplicated #includes Huang Ying (3): kexec/i386: remove PAGE_SIZE alignment from relocate_kernel kexec/i386: allocate page table pages dynamically kexec/i386: setup kexec page table in C Hugh Blemings (1): Updated contact info for CREDITS file Hugh Dickins (36): mm: don't mark_page_accessed in shmem_fault mm: remove cgroup_mm_owner_callbacks mm: remove GFP_HIGHUSER_PAGECACHE mm: add Set,ClearPageSwapCache stubs mm: replace some BUG_ONs by VM_BUG_ONs mm: add_active_or_unevictable into rmap mm: make page_lock_anon_vma() static mm: further cleanup page_add_new_anon_rmap mm: gup persist for write permission mm: wp lock page before deciding cow mm: reuse_swap_page replaces can_share_swap_page mm: try_to_free_swap replaces remove_exclusive_swap_page mm: try_to_unuse check removing right swap mm: remove try_to_munlock from vmscan mm: remove gfp_mask from add_to_swap mm: add add_to_swap stub mm: optimize get_scan_ratio for no swap swapfile: swapon needs larger size type swapfile: remove SWP_ACTIVE mask swapfile: remove surplus whitespace swapfile: remove v0 SWAP-SPACE message swapfile: rearrange scan and swap_info swapfile: swapon use discard (trim) swapfile: swap allocation use discard swapfile: swapon randomize if nonrot swapfile: swap allocation cycle if nonrot swapfile: change discard pgoff_t to sector_t swapfile: let others seed random badpage: simplify page_alloc flag check+clear badpage: keep any bad page out of circulation badpage: replace page_remove_rmap Eeek and BUG badpage: vm_normal_page use print_bad_pte badpage: zap print_bad_pte on swap and file badpage: remove vma from page_remove_rmap badpage: ratelimit print_bad_pte and bad_page badpage: KERN_ALERT BUG instead of KERN_EMERG Hugo Villeneuve (3): ASoC: Add Right-Justified mode and Codec clock master to davinci-i2s ASoC: Add PCM3008 ALSA SoC driver ASoC: Add driver for the Lyrtech SFFSDR board Ian Campbell (7): swiotlb: move some definitions to header swiotlb: add comment where we handle the overflow of a dma mask on 32 bit swiotlb: allow architectures to override phys<->bus<->phys conversions swiotlb: add arch hook to force mapping swiotlb: consolidate swiotlb info message printing x86/swiotlb: add default phys<->bus conversion x86/swiotlb: add default swiotlb_arch_range_needs_mapping Ian Kent (4): autofs4: improve parameter usage autofs4: fix var shadowed by local delaration autofs4: make autofs type usage explicit autofs4: fix string validation check order Ian Molton (6): [ARM] IrDA support for e7xx [ARM] pxa: e740 MFP fix [ARM] pxa: Add multi-io support for e-series [PCMCIA] e740 PCMCIA socket driver. [ARM] pxa: Update eseries defconfig [ARM] pxa: add e750 MFP config Igor M. Liplianin (7): V4L/DVB (9520): stb0899 Remove double .read_status assignment V4L/DVB (9533): cx88: Add support for TurboSight TBS8910 DVB-S PCI card V4L/DVB (9534): cx88: Add support for Prof 6200 DVB-S PCI card V4L/DVB (9535): cx88-dvb: Remove usage core->prev_set_voltage from cx24116 based cards. V4L/DVB (9537): Add TerraTec Cinergy S USB support V4L/DVB (9795): Add Compro VideoMate E650F (DVB-T part only). V4L/DVB (9797): Fix stv0299 support in dw2102 USB DVB-S/S2 driver Ilpo Järvinen (45): b43legacy: reindent misleading statement tcp: collapse more than two on retransmission tcp: move tcp_simple_retransmit to tcp_input tcp: more aggressive skipping tcp: Make SACK code to split only at mss boundaries tcp: make tcp_sacktag_one able to handle partial skb too tcp: Try to restore large SKBs while SACK processing tcp: Make shifting not clear the hints tcp: add some mibs to track collapsing tcp: handle shift/merge of cloned skbs too tcp: tcp_limit_reno_sacked can become static tcp: skb_shift cannot cache frag ptrs past pskb_expand_head niu: use net_device_stats nowadays available in net_device bnx2: use net_device_stats nowadays available in net_device ne2: silence static never defined warnings dccp: use roundup instead of opencoding tcp: force mss equality with the next skb too. tcp: Fix thinko making the not-shiftable to cover S|R as well tcp: make mtu probe failure to not break gso'ed skbs unnecessarily tcp: introduce struct tcp_sacktag_state to reduce arg pressure tcp: no need to pass prev skb around, reduces arg pressure tcp: drop tcp_bound_rto, merge content of it tcp_set_rto tcp: share code through function, not through copy-paste. :-) tcp: move some parts from tcp_write_xmit tcp: use tcp_write_xmit also in tcp_push_one tcp: fix tso_should_defer in 64bit icsk: join error paths using goto xfrm6_tunnel: join error paths using goto ipv6/mcast: join error paths using goto ip6mr: use goto to common label instead of opencoding xfrm: join error paths can: merge error paths ax25: join the return paths that free skb bt/rfcomm/tty: join error paths irda: merge exit paths nf/dccp: merge errorpaths rpc/rdma: goto instead of copypaste hp100: use roundup instead of open coding ipmr: merge common code libertas: use roundup instead of opencoding [SCSI] tmscsim: fix indentation and braces disagreement - add braces [SCSI] scsi_error: fix indentation and braces disagreement - add braces ipv6: IPV6_PKTINFO relied userspace providing correct length consolemap: indentation & braces disagree - reindent USB: usbtmc: indent & braces disagree, something else is desired Ilya Yanok (1): powerpc/44x: Support 16K/64K base page sizes on 44x Inaky Perez-Gonzalez (35): USB: Introduce usb_queue_reset() to do resets from atomic contexts debugfs: add helpers for exporting a size_t simple value wimax: documentation for the stack wimax: headers for kernel API and user space interaction wimax: internal API for the kernel space WiMAX stack wimax: debug macros and debug settings for the WiMAX stack wimax: generic device management (registration, deregistration, lookup) genetlink: export genl_unregister_mc_group() wimax: basic API: kernel/user messaging, rfkill and reset wimax: debugfs controls wimax: Makefile, Kconfig and docbook linkage for the stack i2400m: documentation and instructions for usage i2400m: host/device procotol and core driver definitions i2400m: Generic probe/disconnect, reset and message passing i2400m: linkage to the networking stack i2400m: firmware loading and bootrom initialization i2400m: RX and TX data/control paths i2400m: various functions for device management i2400m: debugfs controls i2400m/USB: header for the USB bus driver i2400m/USB: probe/disconnect, dev init/shutdown and reset backends i2400m/USB: firmware upload backend i2400m/USB: TX and RX path backends i2400m/SDIO: header for the SDIO subdriver i2400m/SDIO: probe/disconnect, dev init/shutdown and reset backends i2400m/SDIO: firmware upload backend i2400m/SDIO: TX and RX path backends i2400m: Makefile and Kconfig wimax: export linux/wimax.h and linux/wimax/i2400m.h with headers_install wimax/i2400m: add CREDITS and MAINTAINERS entries wimax: fix '#ifndef CONFIG_BUG' layout to avoid warning wimax: fix kconfig interactions with rfkill and input layers wimax: testing for rfkill support should also test for CONFIG_RFKILL_MODULE i2400m/usb: wrap USB power saving in #ifdef CONFIG_PM wimax: fix kernel-doc for debufs_dentry member of struct wimax_dev Ingo Brueckl (2): x86: convert permanent_kmaps_init() from macro to inline Fix compiler warning in arch/x86/mm/init_32.c Ingo Molnar (232): x86: boot IRQ quirks and rerouting, fix Merge branch 'linus' into x86/pci-ioapic-boot-irq-quirks Merge branch 'linus' into x86/pci-ioapic-boot-irq-quirks softlockup: increase hung tasks check from 2 minutes to 8 minutes Merge branch 'linus' into core/debug Merge commit 'v2.6.27-rc6' into core/locking x86: some lock annotations for user copy paths, v3 Revert "lockdep: fix compilation when CONFIG_TRACE_IRQFLAGS_SUPPORT is not set" Merge commit 'v2.6.27-rc7' into core/locking Merge commit 'v2.6.28-rc2' into x86/uv Merge commit 'v2.6.28-rc2' into x86/pci-ioapic-boot-irq-quirks Merge commit 'v2.6.28-rc2' into x86/doc Merge commit 'v2.6.28-rc2' into core/locking Merge branch 'linus' into tracing/ftrace Merge commit 'v2.6.28-rc3' into sched/core Merge commit 'v2.6.28-rc3' into tracing/ftrace Merge branches 'tracing/ftrace', 'tracing/markers', 'tracing/mmiotrace', 'tracing/nmisafe', 'tracing/tracepoints' and 'tracing/urgent' into tracing/core rcu: make rcu-stall debug printout more standard x86 debug: mark early_printk.o as notrace Merge branch 'tracing/fastboot' into tracing/ftrace Merge branch 'sched/urgent' into sched/core Merge branches 'tracing/ftrace', 'tracing/fastboot', 'tracing/nmisafe' and 'tracing/urgent' into tracing/core Merge branch 'linus' into x86/cleanups x86: clean up rdtsc_barrier() use x86: clean up vget_cycles() Merge commit 'v2.6.28-rc4' into x86/cleanups Merge commit 'v2.6.28-rc4' into timers/rtc Merge commit 'v2.6.28-rc4' into x86/apic sched: rename SCHED_NO_NO_OMIT_FRAME_POINTER => SCHED_OMIT_FRAME_POINTER Merge branch 'tracing/urgent' into tracing/ftrace Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core tracing, x86: clean up FUNCTION_RET_TRACER Kconfig tracing, x86: function return tracer, fix assembly constraints tracing: function return tracer, build fix x86: fix documentation typo in arch/x86/Kconfig Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core Merge branch 'tracing/function-return-tracer' into tracing/fastboot Merge branches 'tracing/fastboot', 'tracing/function-return-tracer' and 'tracing/ring-buffer' into tracing/core tracing: branch tracer, tweak output Merge branch 'linus' into core/locking lockdep: include/linux/lockdep.h - fix warning in net/bluetooth/af_bluetooth.c tracing: branch tracer, fix vdso crash tracing: finetune branch-tracer output Merge branch 'linus' into x86/crashdump Merge branches 'tracing/branch-tracer', 'tracing/fastboot', 'tracing/function-return-tracer' and 'tracing/urgent' into tracing/core Merge branches 'tracing/fastboot', 'tracing/ftrace' and 'tracing/urgent' into tracing/core Merge branch 'tracing/ftrace' into tracing/function-return-tracer tracepoints: format documentation markers/tracpoints: fix non-modular build Merge branches 'tracing/branch-tracer', 'tracing/ftrace', 'tracing/function-return-tracer', 'tracing/tracepoints' and 'tracing/urgent' into tracing/core Merge commit 'v2.6.28-rc5' into x86/cleanups Merge branches 'tracing/branch-tracer' and 'tracing/urgent' into tracing/core Merge branch 'x86/urgent' into x86/cleanups x86: fix wakeup_cpu with numaq/es7000, v2, fix #2 Merge branch 'linus' into sched/core ftrace: fix selftest locking Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core Merge branch 'linus' into x86/uv Merge branch 'linus' into x86/memory-corruption-check Merge branch 'x86/cleanups' into x86/irq Merge commit 'v2.6.28-rc6' into sched/core x86: clean up after: move entry_64.S register saving out of the macros, fix x86: entry_64.S: rename Merge commit 'v2.6.28-rc6' into x86/debug x86: clean up stack overflow debug check Merge branches 'tracing/profiling', 'tracing/options' and 'tracing/urgent' into tracing/core tracing/function-return-tracer: clean up task start/exit callbacks tracing: allow tracing of suspend/resume & hibernation code again Merge branch 'ppc/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/powerpc x86 defconfig: increase CONFIG_LOG_BUF_SHIFT Merge branch 'sched/rt' into sched/core Merge branches 'core/debug', 'core/futexes', 'core/locking', 'core/rcu', 'core/signal', 'core/urgent' and 'core/xen' into core/core 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 Merge branches 'sched/core', 'core/core' and 'tracing/core' into cpus4096 tracing, tty: fix warnings caused by branch tracing and tty_kref_get() x86: fix unused variable warning in arch/x86/kernel/hpet.c lockdep: fix unused function warning in kernel/lockdep.c Merge branches 'tracing/core', 'x86/urgent' and 'x86/ptrace' into tracing/hw-branch-tracing netfilter: fix warning in net/netfilter/nf_conntrack_proto_tcp.c netfilter: fix warning in net/netfilter/nf_conntrack_ftp.c s2io: fix warning in drivers/net/s2io.c niu: fix warnings in drivers/net/niu.c niu: fix another warning in drivers/net/niu.c qla3xxx: fix warning in drivers/net/qla3xxx.c sunrpc: fix warning in net/sunrpc/xprtrdma/svc_rdma_transport.c pkt_sched: fix warning in net/sched/sch_hfsc.c ipv6: fix warning in net/ipv6/ip6_flowlabel.c dsa: fix warning in net/dsa/mv88e6xxx.c dsa: fix warning in net/dsa/mv88e6060.c fix warning in fs/dlm/netlink.c sis900: fix warning in drivers/net/sis900.c z85230: fix warning in drivers/net/wan/z85230.c mlx4: fix error path in drivers/net/mlx4/en_rx.c cassini: fix warning in drivers/net/cassini.c dccp: fix warning in net/dccp/options.c mlx4: fix warning in drivers/net/mlx4/mcg.c Merge branches 'tracing/hw-branch-tracing' and 'tracing/branch-tracer' into tracing/core ax25: fix warning in net/ax25/sysctl_net_ax25.c sunrpc: fix warning in net/sunrpc/xprtrdma/verbs.c bluetooth: fix warning in net/bluetooth/rfcomm/sock.c atlx: fix warning in drivers/net/atlx/atl2.c depca: fix warning in drivers/net/depca.c 3c523: fix warning in drivers/net/3c523.c tracing: function graph tracer, fix Merge commit 'v2.6.28-rc6' into core/debug debugobjects: add boot parameter default value blktrace: port to tracepoints, update sched: convert struct root_domain to cpumask_var_t, fix Merge branches 'tracing/blktrace', 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/power-tracer' into tracing/core tracing/function-graph-tracer: more output tweaks Merge branch 'x86/debug' into x86/irq x86: ret_from_fork - get rid of jump back debug warnings: eliminate warn_on_slowpath() vfs, seqfile: export mangle_path() generally Merge branch 'sched/urgent' into sched/core x86: provide readq()/writeq() on 32-bit too, cleanup x86: provide readq()/writeq() on 32-bit too, complete Merge branch 'x86/urgent' into x86/iommu Merge branch 'tracing/urgent' into tracing/core Merge branches 'tracing/branch-tracer', 'tracing/ftrace', 'tracing/function-graph-tracer', 'tracing/markers', 'tracing/powerpc', 'tracing/stack-tracer' and 'tracing/tracepoints' into tracing/core Merge branch 'linus' into cpus4096 Merge branch 'x86/io' into x86/iommu Merge branches 'tracing/ftrace' and 'tracing/function-graph-tracer' into tracing/core Merge commit 'v2.6.28-rc7'; branch 'x86/dumpstack' into tracing/ftrace tracing/function-graph-tracer: enabled by default Merge commit 'v2.6.28-rc7' into core/locking Merge commit 'v2.6.28-rc7' into tracing/core Merge branches 'tracing/ftrace' and 'tracing/function-graph-tracer' into tracing/core tracing: fix typo and missing inline function Merge commit 'v2.6.28-rc7' into x86/cleanups Merge branches 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/urgent' into tracing/core Merge branch 'sched/urgent' into sched/core Merge branch 'linus' into x86/quirks tracing/function-graph-tracer: fix 'flags' variable mismatch sparseirq: fix typo in !CONFIG_IO_APIC case Merge branches 'tracing/function-graph-tracer' and 'tracing/ring-buffer' into tracing/core x86, bts: fix build error x86: soften multi-BAR mapping sanity check warning message oprofile: select RING_BUFFER Merge commit 'v2.6.28-rc8' into sched/core x86, debug: remove EBDA debug printk Merge commit 'v2.6.28-rc8' into x86/mm Merge commit 'v2.6.28-rc8' into x86/irq tracing/function-graph-tracer: add a new .irqentry.text section, fix sparse irqs: handle !GENIRQ platforms sparse irqs: add irqnr.h to the user headers list Merge branch 'tracing/fastboot' into cpus4096 Merge branch 'sched/core' into cpus4096 Merge branches 'irq/sparseirq', 'x86/quirks' and 'x86/reboot' into cpus4096 Merge branches 'tracing/fastboot', 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/hw-branch-tracing' into tracing/core Merge branch 'linus' into cpus4096 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-ingo into cpus4096 x86, mm: limit MAXMEM on 64-bit Merge commit 'v2.6.28-rc8' into x86/cpufeature x86: support always running TSC on Intel CPUs, add cpufeature definition Merge branch 'x86/cpufeature' into x86/tsc Merge commit 'v2.6.28-rc8' into x86/doc Merge commit 'v2.6.28-rc8' into x86/uv Merge branch 'linus' into cpus4096 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/travis/linux-2.6-cpus4096-for-ingo into cpus4096 Merge branch 'irq/sparseirq' into cpus4096 Merge branch 'x86/crashdump' into cpus4096 x86: update io_apic.c to the new cpumask code Merge branch 'linus' into cpus4096 Merge branch 'x86/apic' into cpus4096 Merge branches 'tracing/ftrace' and 'tracing/hw-branch-tracing' into tracing/core Merge branch 'linus' into core/rcu hrtimers: fix warning in kernel/hrtimer.c tracing: fix warning in kernel/trace/trace.c tracing: fix warnings in kernel/trace/trace_sched_switch.c x86: fix warning in arch/x86/kernel/microcode_amd.c sched: move test_sd_parent() to an SMP section of sched.h sched: fix warning in kernel/sched.c x86: fix warning in arch/x86/kernel/io_apic.c Merge branches 'tracing/ftrace', 'tracing/ring-buffer' and 'tracing/urgent' into tracing/core sched: fix warning in fs/proc/base.c Merge commit 'v2.6.28-rc9' into x86/apic Merge branch 'x86/apic' into x86/irq 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 Merge branch 'x86/ptrace' into x86/tsc Merge branch 'x86/tsc' into x86/core Merge branch 'x86/iommu' into x86/core Merge branch 'x86/irq' into x86/core x86: export vector_used_by_percpu_irq Merge branch 'linus' into tracing/hw-branch-tracing Revert "x86: disable X86_PTRACE_BTS" crypto: testmgr - Fix error flow of test_comp rcu: provide RCU options on non-preempt architectures too stacktrace: provide save_stack_trace_tsk() weak alias Merge branches 'x86/pat2' and 'x86/fpu'; commit 'v2.6.28' into x86/core x86: turn CONFIG_SPARSE_IRQ off by default Merge branch 'x86/tsc' into tracing/core Merge branches 'tracing/ftrace', 'tracing/hw-branch-tracing' and 'tracing/ring-buffer'; commit 'v2.6.28' into tracing/core Merge branch 'sched/urgent'; commit 'v2.6.28' into sched/core Merge commit 'v2.6.28' into core/core Merge branch 'core/debug' into core/core Merge branch 'core/futexes' into core/core Merge branches 'core/debugobjects', 'core/iommu', 'core/locking', 'core/printk', 'core/rcu', 'core/resources', 'core/softirq' and 'core/stacktrace' into core/core x86, sparseirq: clean up Kconfig entry Merge branches 'irq/sparseirq', 'irq/genirq' and 'irq/urgent'; commit 'v2.6.28' into irq/core Merge branches 'timers/clocksource', 'timers/hpet', 'timers/hrtimers', 'timers/nohz', 'timers/ntp', 'timers/posixtimers' and 'timers/rtc' into timers/core Merge branch 'x86/fpu' into x86/cleanups x86: clean up comment style in arch/x86/kernel/traps.c sparseirq: do not printk when migrating IRQ descriptors sparseirq: fix desc->lock init Merge branch 'x86/core' into x86/cleanups sparseirq: work around __weak alias bug Merge branch 'linus' into x86/cleanups kbuild: Remove gcc 4.1.0 quirk from init/main.c Disallow gcc versions 3.{0,1} Merge branch 'linus' into x86/cleanups Merge branches 'x86/cleanups', 'x86/fpu' and 'x86/urgent' into x86/core Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask into cpus4096-v2 cpumask: convert RCU implementations, fix ia64: cpumask fix for is_affinity_mask_valid() Merge branch 'linus' into core/urgent intel-iommu: fix build error with INTR_REMAP=y and DMAR=n Merge branch 'linus' into sched/urgent hrtimer: splitout peek ahead functionality, fix Merge branch 'core/iommu' into core/urgent genirq: provide irq_to_desc() to non-genirq architectures too Merge branch 'linus' into cpus4096 Merge branches 'core/futexes', 'core/locking', 'core/rcu' and 'linus' into core/urgent Merge branches 'sched/clock', 'sched/cleanups' and 'linus' into sched/urgent [IA64] fix typo in cpumask_of_pcibus() Merge branches 'x86/cleanups', 'x86/mpparse', 'x86/numa' and 'x86/uv' into x86/urgent x86: offer frame pointers in all build modes PCI: Don't carp about BAR allocation failures in quiet boot powerpc: Use correct type in prom_init.c powerpc/cell: Use correct types in beat files powerpc/cell: Fix some u64 vs. long types powerpc/pasemi: local_irq_save uses an unsigned long Ira Snyder (1): hwmon: Add LTC4245 driver Isaku Yamahata (3): xen: portability clean up and some minor clean up for xencomm.c xen: compilation fix fo xen CPU hotplugging xen: compilation fix of drivers/xen/events.c on IA64 Ivan Kuten (1): mac80211: fix unaligned access in ieee80211_wep_encrypt_data Ivan Vecera (1): x86: call machine_shutdown and stop all CPUs in native_machine_halt Ivo van Doorn (26): rt2x00: Optimize configuration handling rt2x00: Remove ieee80211_bss_conf from rt2x00_intf rt2x00: Improve interface_modes initialization rt2x00: Release rt2x00 2.2.2 rt2x00: Remove debugfs CSR access wrappers rt2x00: Remove RATE_BASIC flag rt2x00: Fix LED state handling rt2x00: Block set_key() during suspend/shutdown rt2x00: Fix BUG_ON() with antenna handling rt2x00: Cleanup TX/RX entry handling rt2x00: Optimize get_duration / get_duration_res rt2x00: Fix race condition when using inderect registers rt2x00: Cleanup indirect register access rt2x00: Move rt73usb register access wrappers into rt2x00usb rt2x00: Fix TX failure path rt2x00: Detect USB BULK in/out endpoints rt2x00: Don't switch off LED on initialization rt2x00: Optimize IV/EIV handling rt2x00: Store retry limit values rt2x00: Remove duplicate code rt2x00: Implement HW encryption (rt2500usb) rt2x00: Release rt2x00 2.2.3 rt2x00: Add RXDONE_CRYPTO_IV/ICV flags rt2x00: Fix check for BSS info changes rt2x00: Move crypto TX descriptor handling to rt2x00crypto.c rt2x00: Correctly initialize AID during set_key() Izik Eidus (1): KVM: MMU: Fix aliased gfns treated as unaliased J. Bruce Fields (4): nfsd: update fh_verify description nfsd: document new filehandle fsid types nfsd: Ensure nfsv4 calls the underlying filesystem on LOCKT nfsd: fix double-locks of directory mutex J.R. Mauro (11): Staging: sxg: remove typedefs Staging: sxg: break the build in a cleaner way when !x86 Staging: sxg: update README Staging: echo: remove typedefs Staging: echo: Lindent drivers/staging/echo Staging: et131x: fix build failure Staging: otus: fix name clash Staging: rt2860: use standard bit-reverse function Staging: comedi: fix build if CONFIG_PROC_FS is not set Staging: android: binder: Fix gcc warnings about improper format specifiers for size_t in printk staging: android: binder: Fix use of euid Jack Morgenstein (1): IB/mlx4: Set ownership bit correctly when copying CQEs during CQ resize Jack Steiner (1): x86: UV fix for global physical addresses Jacob Pan (1): PCI: avoid early PCI mmconfig init if pci=noearly is given in cmdline Jaime Velasco Juan (1): V4L/DVB (9978): stkwebcam: Implement VIDIOC_ENUM_FRAMESIZES ioctl Jakob Bornecrantz (1): drm: sanitise drm modesetting API + remove unused hotplug Jakub Schmidtke (1): Staging: add asus_oled driver James Bottomley (7): [SCSI] st: update to use block timeout [SCSI] remove timeout from struct scsi_device [SCSI] fcoe: fix incorrect use of struct module [SCSI] cxgb3i: fix select/depend problem [SCSI] fcoe: fix configuration problems [SCSI] scsi_lib: don't decrement busy counters when inserting commands [SCSI] scsi_lib: fix DID_RESET status problems James Chapman (1): l2tp: fix UDP checksum support James Morris (14): Merge branch 'master' into next security: remove broken and useless declarations Merge branch 'master' into next Merge branch 'master' into next Merge branch 'serge-next' into next Merge branch 'master' into next security: pass mount flags to security_sb_kern_mount() SELinux: don't check permissions for kernel mounts Merge branch 'next' into for-linus Merge branch 'next' into for-linus keys: fix sparse warning by adding __user annotation to cast Merge branch 'master' of git://git.infradead.org/users/pcmoore/lblnet-2.6_next into next Revert "CRED: Fix regression in cap_capable() as shown up by sys_faccessat() [ver #2]" Merge branch 'next' into for-linus James Smart (17): [SCSI] lpfc 8.3.0 : Rework RSCN netlink event to send entire RSCN payload [SCSI] lpfc 8.3.0 : Add support for Power Management Suspend/Resume operations [SCSI] lpfc 8.3.0 : Add kernel-doc headers to lpfc_scsi.c [SCSI] lpfc 8.3.0 : Fix system crash due to uninitialized node access [SCSI] lpfc 8.3.0 : Fix multiple NPIV issues [SCSI] lpfc 8.3.0 : Added 3 small features and improve PCI EEH support [SCSI] lpfc 8.3.0 : Fix issue with assumed Interrupt Enable Block support [SCSI] lpfc 8.3.0 : Fix several minor issues [SCSI] lpfc 8.3.0 : Add active interrupt test for enabling MSI/MSI-X/INTx [SCSI] lpfc 8.3.0 : Fix some memory handling issues [SCSI] lpfc 8.3.0 : Add BlockGuard support (T10-DIF) structs and defs [SCSI] lpfc 8.3.0 : Add BlockGuard support (T10-DIF) code [SCSI] lpfc 8.3.0 : Hook lpfc's debugfs into Kconfig [SCSI] lpfc 8.3.0 : Update driver version to 8.3.0 [SCSI] fc transport: pre-emptively terminate i/o upon dev_loss_tmo timeout [SCSI] lpfc : correct printk types on PPC compiles [SCSI] fc transport: restore missing dev_loss_tmo callback to LLDD Jan Beulich (10): x86: simplify X86_MPPARSE config option x86: add two missing unwind annotations x86: consolidate __swp_XXX() macros allow bug table entries to use relative pointers (and use it on x86-64) x86, 32-bit: simplify alloc_low_page() x86, 32-bit: add some compile time checks to mem_init() x86, 32-bit: improve lazy TLB handling code kbuild: strip generated symbols from *.ko allow stripping of generated symbols under CONFIG_KALLSYMS_ALL init/main.c: mark late_time_init as __initdata Jan Blunck (1): memcg: reduce size of mem_cgroup by using nr_cpu_ids Jan Engelhardt (3): Btrfs: Simplify makefile Btrfs: bdi_init and bdi_destroy come with 2.6.23 include: linux/fs.h: put declarations in __KERNEL__ Jan Glauber (8): [S390] qdio: fix qeth port count detection [S390] qdio: add eqbs/sqbs instruction counters [S390] qdio: fix compile warning under 31 bit [S390] qdio: rework debug feature logging [S390] qdio: improve inbound buffer acknowledgement [S390] qdio: fix error reporting for hipersockets [S390] convert cpacf printks to pr_xxx macros. [S390] qdio: fix broken pointer in case of CONFIG_DEBUG_FS is disabled Jan Kara (36): quota: Add callbacks for allocating and destroying dquot structures quota: Increase size of variables for limits and inode usage quota: Remove bogus 'optimization' in check_idq() and check_bdq() quota: Make _SUSPENDED just a flag quota: Allow to separately enable quota accounting and enforcing limits ext3: Use sb_any_quota_loaded() instead of sb_any_quota_enabled() ext4: Use sb_any_quota_loaded() instead of sb_any_quota_enabled() reiserfs: Use sb_any_quota_loaded() instead of sb_any_quota_enabled(). quota: Remove compatibility function sb_any_quota_enabled() quota: Introduce DQUOT_QUOTA_SYS_FILE flag quota: Move quotaio_v[12].h from include/linux/ to fs/ quota: Split off quota tree handling into a separate file quota: Convert union in mem_dqinfo to a pointer quota: Allow negative usage of space and inodes quota: Keep which entries were set by SETQUOTA quotactl quota: Update version number quota: Add helpers to allow ocfs2 specific quota initialization, freeing and recovery quota: Implement function for scanning active dquots ocfs2: Support nested transactions ocfs2: Assign feature bits and system inodes to quota feature and quota files ocfs2: Mark system files as not subject to quota accounting ocfs2: Implementation of local and global quota file handling ocfs2: Add quota calls for allocation and freeing of inodes and space ocfs2: Implement quota recovery ocfs2: Enable quota accounting on mount, disable on umount ocfs2: Add missing initialization ocfs2: Fix oops when extending quota files ocfs2: Make ocfs2_get_quota_block() consistent with ocfs2_read_quota_block() ocfs2: Fix build warnings (64-bit types vs long long) quota: Unexport dqblk_v1.h and dqblk_v2.h quota: Export dquot_alloc() and dquot_destroy() functions reiserfs: Add default allocation routines for quota structures ext3: Add default allocation routines for quota structures ext4: Add default allocation routines for quota structures jbd2: Fix oops in jbd2_journal_init_inode() on corrupted fs quota: don't set grace time when user isn't above softlimit Jan Kiszka (17): KVM: VMX: include all IRQ window exits in statistics KVM: VMX: Use INTR_TYPE_NMI_INTR instead of magic value KVM: VMX: Support for NMI task gates KVM: x86: Reset pending/inject NMI state on CPU reset KVM: VMX: refactor/fix IRQ and NMI injectability determination KVM: VMX: refactor IRQ and NMI window enabling KVM: VMX: fix real-mode NMI support KVM: x86: Enable NMI Watchdog via in-kernel PIT source KVM: x86: VCPU with pending NMI is runnabled KVM: Kick NMI receiving VCPU KVM: x86: Support for user space injected NMIs KVM: VMX: Provide support for user space injected NMIs KVM: VMX: work around lacking VNMI support KVM: x86: Fix and refactor NMI watchdog emulation KVM: x86: Optimize NMI watchdog delivery KVM: VMX: Fix pending NMI-vs.-IRQ race for user space irqchip KVM: x86: Rework user space NMI injection as KVM_CAP_USER_NMI Janne Kulmala (1): x86: enable HPET on Fujitsu u9200 Jarek Poplawski (25): pkt_sched: sch_generic: Add Qdisc_ops peek() method. pkt_sched: sch_generic: Add generic qdisc->ops->peek() implementation. pkt_sched: Add qdisc->ops->peek() implementation. pkt_sched: Use qdisc->ops->peek() instead of ->dequeue() & ->requeue() pkt_sched: Add peek emulation for non-work-conserving qdiscs. sch_netem: Remove classful functionality sch_netem: Replace ->requeue() method with open code pkt_sched: sch_generic: Kfree gso_skb in qdisc_reset() pkt_sched: Fix qdisc len in qdisc_peek_dequeued() pkt_sched: Remove qdisc->ops->requeue() etc. pkt_sched: sch_drr: Fix qlen in drr_drop() net: gen_estimator: Fix gen_kill_estimator() lookups pkt_sched: sch_api: Remove qdisc_list_lock pkt_sched: gen_estimator: Optimize gen_estimator_active() pkt_sched: sch_htb: Remove htb_class aprio field pkt_sched: sch_htb: Remove htb_sched nwc_hit field pkt_sched: sch_htb: Clean htb_class prio and quantum fields pkt_sched: sch_htb: Remove L2T() pkt_sched: sch_htb: Replace HTB_ACCNT() macro with inlines pkt_sched: sch_htb: Optimize htb_find_next_upper() pkt_sched: sch_htb: Optimize WARN_ONs in htb_dequeue_tree() etc. pkt_sched: Annotate uninitialized var in sfq_enqueue() net: Fix oops in dev_ifsioc() pkt_sched: Remove smp_wmb() in qdisc_watchdog() pkt_sched: cls_u32: Fix locking in u32_change() Jarkko Lavinen (1): mmc: Add 8-bit bus width support Jarkko Nikula (14): ASoC: Fix supported sample rates of TWL4030 audio codec ASoC: OMAP: Add more supported sample rates into McBSP DAI driver ASoC: OMAP: Fix preprocessor filled DAI name in McBSP DAI i2c-omap: Do not use interruptible wait call in omap_i2c_xfer_msg ASoC: OMAP: Apply channel constrains to N810 machine driver ASoC: OMAP: Add support for mono audio links in McBSP DAI ARM: OMAP: Extend gpio label column width in omap_gpio debugfs file ARM: OMAP: make legacy gpio request/free calls superfluous ARM: OMAP: Switch to gpio_request/free calls ARM: OMAP: Switch ohci-omap to gpio_request/free calls ARM: OMAP3: Add OMAP34xx pin multiplexing into I2C bus registration helper ASoC: Fix incorrect DSP format in OMAP McBSP DAI and affected drivers ASoC: Fix DSP formats in SSM2602 audio codec ASoC: OMAP: Select OMAP pin multiplexing when using Nokia N810 ASoC drivers Jarod Wilson (3): crypto: ansi_cprng - Avoid incorrect extra call to _get_more_prng_bytes crypto: ansi_cprng - fix inverted DT increment routine crypto: des3_ede - permit weak keys unless REQ_WEAK_KEY set Jaroslav Kysela (6): ALSA: Release v1.0.18 ALSA: Release v1.0.18a ALSA: add /sys/class/sound/card#/id (r/w) and card#/number (r/o) files ALSA: when card identification is changed, change also /proc/asound symlink ALSA: hdsp/hdspm: remove card->id from rawmidi device name ALSA: include/sound/info.h - coding style changed Jason Jin (1): [MTD] [NAND] Set the fsl elbc ECCM according the settings in bootloader. Jason Wessel (1): tty: Fix sparse static warning for tty_driver_lookup_tty Jaswinder Singh (14): x86: process_64.c declare __switch_to() and sys_arch_prctl before they get used x86: signal.c declare do_notify_resume before they get used x86: ldt.c declare sys_modify_ldt before they get used x86: setup.c find_and_reserve_crashkernel should be static avr32: Introducing asm/syscalls.h x86: time_64.c timer_interrupt() should be static x86: tls.c declare sys_set_thread_area and sys_get_thread_area before they get used x86: process.c declare c1e_remove_cpu before they get used x86: traps.c declare functions before they get used x86: common.c boot_cpu_stack and boot_exception_stacks should be static x86: traps.c replace #if CONFIG_X86_32 with #ifdef CONFIG_X86_32 x86: reboot.c declare port_cf9_safe before they get used x86: apic.c x2apic_preenabled and disable_x2apic should be static firmware: convert acenic driver to request_firmware() Jaswinder Singh Rajput (50): x86: introducing asm/sys_ia32.h x86: apic.c declare pic_mode before they get used x86: io_apic.c io_apic_sync should be static x86: efi.c declare add_efi_memmap before they get used x86_64: pci-gart_64.c iommu_fullflush should be static x86, pci: move arch/x86/pci/pci.h to arch/x86/include/asm/pci_x86.h x86: amd_iommu_init.c: iommu_enable and iommu_enable_event_logging should be static x86: amd_iommu.c: prealloc_protection_domains should be static x86: genx2apic_phys.c: x2apic_send_IPI_self and init_x2apic_ldr should be static x86: bios_uv.c: uv_systab should be static sched: sched.c declare variables before they get used x86: apic.c: xapic_icr_read and x2apic_icr_read should be static x86: uv_bau.h: fix dubious bitfield x86: xsave.c: restore_user_xstate should be static x86: cpuid.c fix style problems x86: ldt.c fix style problems x86: nmi.c fix style problems x86: mpparse.c fix style problems AMD IOMMU: prealloc_protection_domains should be static x86: rename mp_config_table to mpc_table x86: rename mpc_config_bus to mpc_bus x86: rename mpc_config_processor to mpc_cpu x86: rename mpc_config_ioapic to mpc_ioapic x86: rename mpc_config_intsrc to mpc_intsrc x86: rename mpc_config_lintsrc to mpc_lintsrc x86: rename mpc_config_oemtable to mpc_oemtable x86: apic.c fix style problems x86: process_32.c fix style problems x86: traps.c fix style problems x86: irq.c fix style problems x86: irq_64.c fix style problems x86: time_32.c fix style problems x86: time_64.c fix style problems x86: ioport.c fix style problems x86: irq_32.c fix style problems x86: i8259.c fix style problems x86: irqinit_32.c fix style problems x86: irqinit_64.c fix style problems x86: setup_percpu.c fix style problems x86: irqinit_64.c init_ISA_irqs should be static firmware: convert tg3 driver to request_firmware() starfire: use request_firmware() x86: rename all fields of mpc_iopic mpc_X to X x86: rename all fields of mpc_lintsrc mpc_X to X x86: rename all fields of mpc_intsrc mpc_X to X x86: rename all fields of mpc_cpu mpc_X to X x86: rename all fields of mpc_bus mpc_X to X x86: rename all fields of mpc_oemtable oem_X to X x86: rename all fields of mpc_table mpc_X to X firmware: convert e100 driver to request_firmware() Jay Fenlason (2): firewire: typo in comment firewire: improve refcounting of fw_card Jay Sternberg (3): iwlwifi: define firmware file name once iwlwifi: expand error lookup and align output iwlwifi: indicate txpower is off in sysfs Jay Vosburgh (3): bonding, net: Move last_rx update into bonding recv logic bonding: Fix ALB mode to balance traffic on VLANs bonding: alternate agg selection policies for 802.3ad Jaya Kumar (5): Input: add support for Wacom W8001 penabled serial touchscreen ALSA: cs5535audio: turn off PCM properly if closing the audio device ALSA: cs5535audio: OLPC analog input support [ARM] 5337/1: gumstix: move am200 specific gpio pins into am200epd. [ARM] pxa/gumstix: fix incorrect init done by am200 Jean Delvare (13): ALSA: ASoC: Convert wm8580 to a new-style i2c driver ALSA: ASoC: Convert wm8900 to a new-style i2c driver i2c: Get rid of remaining bus_id access i2c: Drop I2C_CLASS_ALL i2c: Drop I2C_CLASS_CAM_ANALOG and I2C_CLASS_SOUND i2c: Drop I2C_CLASS_CAM_DIGITAL Input: apanel - convert to new i2c binding i2c: Use snprintf to set adapter names Blackfin arch: Fix typo (channel) hwmon: Don't overuse I2C_CLIENT_MODULE_PARM hwmon: Check for ACPI resource conflicts hwmon: Fix various typos USB: Convert ohci-pnx4008 to a new-style i2c driver Jean-Francois Moine (62): V4L/DVB (9691): gspca: Some cleanups at device register V4L/DVB (9541): gspca: Add infrared control for sonixj - mi0360. V4L/DVB (9544): gspca: Clear the bulk endpoint at starting time when bulk transfer. V4L/DVB (9545): gspca: Add a flag for empty ISOC packets. V4L/DVB (9546): gspca: Bad scanning of ISOC packets in tv8532. V4L/DVB (9547): gspca: Version change. V4L/DVB (9552): gspca: Simplify the ISOC packet scanning in tv8532. V4L/DVB (9553): gspca: Webcam 145f:013a added in pac207. V4L/DVB (9561): gspca: Cleanup the source of ov519. V4L/DVB (9562): gspca: Set the default frame rate to 30 fps for sensor ov764x in ov519. V4L/DVB (9565): gspca: Remove empty lines in traces. V4L/DVB (9560): gspca: Let gspca handle the webcam 0c45:602c instead of sn9c102. V4L/DVB (9563): gspca: Let gspca handle the webcam 0471:0328 instead of sn9c102. V4L/DVB (9680): gspca: Let gspca handle the webcam 0c45:613a instead of sn9c102. V4L/DVB (9681): gspca: Rewrite the exchanges with the sensor ov7648 of sonixj. V4L/DVB (9688): gspca: Reset the bulk URB status before resubmitting at irq level. V4L/DVB (9708): gspca: Do the sn9c105 - ov7660 work again in sonixj. V4L/DVB (9709): gspca: Fix typos and name errors in Kconfig. V4L/DVB (9711): gspca: Let gspca handle the webcams 045e:00f5 & 00f7 instead of sn9c102. V4L/DVB (9713): gspca: Add the ov534 webcams in the gspca documentation. V4L/DVB (9558): gspca: Add the light frequency control for the sensor HV7131B in zc3xx V4L/DVB (9710): gspca: Remove some unuseful core in main. V4L/DVB (9837): gspca: Simplify the brightness/contrast for ov76xx sensors in sonixj. V4L/DVB (9838): gspca: Delay when trying an other altsetting on streaming start. V4L/DVB (9840): gspca: Simplify the pkt_scan of stk014. V4L/DVB (9841): gspca: Use msleep instead of mdelay. V4L/DVB (9842): gspca: Center the brightness in sonixj. V4L/DVB (9843): gspca: Change the colors and add the red and blue controls in sonixj. V4L/DVB (9845): gspca: Add sensor mi0360 in vc032x. V4L/DVB (9846): gspca: Do the webcam microphone work when present. V4L/DVB (9847): gspca: Align the 640x480 and 320x240 init of tas5130 in zc3xx. V4L/DVB (9848): gspca: Webcam 06f8:3004 added in sonixj. V4L/DVB (9849): gspca: Add the webcam 0c45:613a in the gspca documentation. V4L/DVB (9850): gspca: Bad color control in sonixj. V4L/DVB (9852): gspca: Fix image problem at low resolutions with ov7660 in sonixj. V4L/DVB (9853): gspca: Webcam 093a:2622 added in pac7311. V4L/DVB (9854): gspca: Add the webcam 0c45:60fe in the gspca documentation. V4L/DVB (9861): gspca - ov534: Accept many simultaneous webcams. V4L/DVB (9863): gspca - sonixj: Cleanup / simplify code. V4L/DVB (9865): gspca - vc032x: Bad check of the sensor mi0360. V4L/DVB (9866): gspca - vc032x: V and H flips added for sensors ov7660 and 7670. V4L/DVB (9867): gspca - vc032x: Remove the autogain control. V4L/DVB (9868): gspca - zc3xx: Remove the duplicated register names V4L/DVB (9869): gspca - zc3xx: Change the USB exchanges for the sensor pas202b. V4L/DVB (9870): gspca - vc032x: Webcam 15b8:6002 and sensor po1200 added. V4L/DVB (9871): gspca - vc032x: Bad detection of sensor mi0360. V4L/DVB (9879): gspca - vc032x: Remove the unused quality/qindex. V4L/DVB (9880): gspca - vc032x: Add V&H flips and sharpness controls for sensor po1200. V4L/DVB (9884): gspca - ov534: Fix a warning when compilation without GSPCA_DEBUG. V4L/DVB (9984): gspca - pac7311: Webcam 093a:262c added. V4L/DVB (9985): gspca - spca561: Cleanup source. V4L/DVB (9986): gspca - spca561: Don't get the control values from the webcam. V4L/DVB (9987): gspca - spca561: Control changes for Rev72a. V4L/DVB (9988): gspca - spca561: Separate the bridge and sensor tables of Rev72a V4L/DVB (9990): gspca - main: Remove useless tests of the buffer type. V4L/DVB (9991): gspca - main: Check if a buffer has been queued on streamon. V4L/DVB (9995): gspca - ov534 and m5602: Set static some functions/variables. V4L/DVB (9997): gspca - main: Don't lock the kernel on ioctl. V4L/DVB (10045): gspca - ov534: Remove empty line in trace. V4L/DVB (10046): gspca - ov534: Use the gspca usb buf for usb control messages. V4L/DVB (10049): gspca - many subdrivers: Set 'const' the pixel format table. V4L/DVB (10050): gspca - vc032x: Webcam 046d:0897 added. Jean-Marc Spaggiari (1): hwmon: (it87) Add support for the ITE IT8720F Jeff Garzik (1): [libata] pata_hpt3x3: correct _freeze() function declaration Jeff Kirsher (6): DCB: fix kconfig option ixgbe: cleanup link up/down messages e1000: cleanup link up/down messages ixgb: cleanup link up/down messages e100: cleanup link up/down messages igb: fixup AER with proper error handling Jeff Layton (18): lockd: convert reclaimer thread to kthread interface sunrpc: fix code that makes auth_gss send destroy_cred message (try #2) cifs: remove unused SMB session pointer from struct mid_q_entry cifs: display addr and prefixpath options in /proc/mounts cifs: take module reference when starting cifsd cifs: convert tcpSem to a mutex cifs: make dnotify thread experimental code cifs: account for IPv6 in ses->serverName and clean up netbios name handling cifs: move allocation of new TCP_Server_Info into separate function cifs: don't declare smb_vol info on the stack cifs: make ipv4_connect take a TCP_Server_Info arg cifs: make ipv6_connect take a TCP_Server_Info arg cifs: fix wait_for_response to time out sleeping processes correctly cifs: zero out session password before freeing it cifs: have calc_lanman_hash take more granular args cifs: store password in tcon sunrpc: add sv_maxconn field to svc_serv (try #3) lockd: set svc_serv->sv_maxconn to a more reasonable value (try #3) Jeff Mahoney (1): Btrfs: Add workaround for AppArmor changing remove_suid() Jelle Foks (1): V4L/DVB (9654): new email address Jens Axboe (21): btrfs: 32-bit type problems Btrfs: Fix bi_end_io() functions on > 2.6.23 kernels Btrfs: KM_IRQ0 usage in end_io handling Btrfs: sysfs compile fixup block: add comment in blk_rq_timed_out() about why next can not be 0 block: leave the request timeout timer running even on an empty list cciss: switch to using hlist for command list management block: don't use plugging on SSD devices bio: only mempool back the largest bio_vec slab cache bio: move the slab pointer inside the bio_set bio: allow individual slabs in the bio_set bio: add support for inlining a number of bio_vecs inside the bio aio: make the lookup_ioctx() lockless block: get rid of elevator_t typedef nbd: tell the block layer that it is not a rotational device cfq-iosched: remove limit of dispatch depth of max 4 times quantum block: add one-hit cache for disk partition lookup Get rid of CONFIG_LSF cfq-iosched: fix race between exiting queue and exiting task bounce: don't rely on a zeroed bio_vec list bio: get rid of bio_vec clearing Jeremy Fitzhardinge (12): xen: don't reload cr3 on suspend x86: remove unused iommu_nr_pages swiotlb: allow architectures to override swiotlb pool allocation xen: clean up asm/xen/hypervisor.h x86: make sure we really have an hpet mapping before using it swiotlb: factor out copy to/from device swiotlb: support bouncing of HighMem pages x86: add swiotlb allocation functions x86: unify pci iommu setup and allow swiotlb to compile for 32 bit sparseirq, xen: make sure irq_desc is allocated for interrupts swiotlb: add hwdev to swiotlb_phys_to_bus() / swiotlb_sg_to_bus() mm/apply_to_range: call pte function with lazy updates Jeremy Kerr (1): scripts/package: allow custom options to rpm Jes Sorensen (1): KVM: ia64: Fix kvm_arch_vcpu_ioctl_[gs]et_regs() Jesper Dangaard Brouer (3): NIU: Implement discard counters NIU: Implement discard counters, info/debug statements. NIU: Implement discard counters, optimize Jesper Juhl (3): swiotlb: Don't include linux/swiotlb.h twice in lib/swiotlb.c trivial: update Jesper Juhl CREDITS entry with new email include/linux/interrupt.h: do not include linux/irqnr.h twice Jesse Barnes (6): drm: GEM mmap support drm/i915: add GEM GTT mapping support DRM: i915: add mode setting support PCI: check mmap range of /proc/bus/pci files too PCI: fixup whitespace in quirks.c PCI: set device wakeup capable flag if platform support is present Jesse Brandeburg (3): ixgbe: add device support for 82598AT (copper 10GbE) adapters pktgen: add full reset functionality ixgbe: fix dma mapping unbalance Jianjun Kong (13): af_unix: clean up net/unix/af_unix.c garbage.c sysctl_net_unix.c net: clean up net/ipv4/ah4.c esp4.c fib_semantics.c inet_connection_sock.c inetpeer.c ip_output.c net: clean up net/ipv4/ipip.c raw.c tcp.c tcp_minisocks.c tcp_yeah.c xfrm4_policy.c net: clean up net/ipv4/fib_frontend.c fib_hash.c ip_gre.c net: clean up net/ipv4/igmp.c net: clean up net/ipv4/ip_sockglue.c tcp_output.c net: clean up net/ipv4/ipmr.c net: clean up net/ipv4/ip_fragment.c tcp_timer.c ip_input.c net: clean up net/ipv4/pararp.c net: clean up net/ipv4/devinet.c net: clean up net/ipv4/tcp_ipv4.c net: remove two duplicated #include module: fix warning of unused function when !CONFIG_PROC_FS Jie Zhang (1): Blackfin arch: Print FP at level KERN_NOTICE Jike Song (2): x86: clean up comments wrt. rd{msr|tsc|pmc} kbuild: reintroduce ALLSOURCE_ARCHS support for tags/cscope Jim Meyering (2): Btrfs: disk-io.c (open_ctree): Don't deref. NULL upon failed kzalloc Btrfs: disk-io.c (open_ctree): avoid leaks upon allocation failure Jim Paris (8): V4L/DVB (9858): gspca - ov534: Initialization cleanup. V4L/DVB (9859): gspca - ov534: Fix frame size so we don't miss the last pixel. V4L/DVB (9860): gspca - ov534: Frame transfer improvements. V4L/DVB (9873): gspca - ov534: Improve payload handling. V4L/DVB (9874): gspca - ov534: Explicitly initialize frame format. V4L/DVB (9876): gspca - main: Allow subdrivers to handle v4l2_streamparm requests. V4L/DVB (9877): gspca - ov534: Add framerate support. mtd/ps3vram: Add ps3vram driver for accessing video RAM as MTD Jim Radford (1): ftrace: scripts/recordmcount.pl support for ARM Jiri Kosina (11): HID: ignore mouse interface for unibody macbooks HID: non-input reports can also be numbered HID: add phys and name ioctls to hidraw HID: set proper dev.parent in hidraw HID: fix default Kconfig setting for TopSpeed driver HID: fix error condition propagation in hid-sony driver Merge branch 'upstream-fixes' into for-next Input: i8042 - add Dell Vostro 1510 to nomux list trivial: Update MAINTAINERS entry trivial: printk: fix indentation of new_text_line declaration HID: fix hid->hiddev initialization in hiddev_connect() Jiri Moravec (1): fbdev: fix typo in drivers/video/modedb.c Jiri Slaby (13): Ath5k: add AP mode x86, 64-bit: update address space documentation x86: intel_cacheinfo, minor show_type cleanup kbuild: fix make tags/cscope kbuild: fix string equality testing in tags.sh DMI: add dmi_match [libata] ata_piix: cleanup dmi strings checking V4L/DVB (9972): v4l: usbvideo, fix module ref count check HID: move usbhid flags to usbhid.h HID: usbhid, use usb_endpoint_xfer_int HID: use GFP_KERNEL in hid_alloc_buffers HID: add dynids facility x86: fix RIP printout in early_idt_handler Jirka Pirko (3): tokenring/3c359.c: fix allocation null check tokenring/3c359.c: Fix error message when allocating tx_ring tokenring/3c359.c: Prevent possible mem leak when open failed Joachim Fenkes (1): IB/ehca: Fix locking for shca_list_lock Joachim Wuttke (1): Staging: comedi: add comedi_test driver Joe Chou (2): r6040: fix wrong logic in mdio code r6040: save and restore MIER correctly in the interrupt routine Joe Korty (2): forcdeth: increase max_interrupt_work x86: change thread_info's flag field back to 32 bits Joe Perches (3): include/net net/ - csum_partial - remove unnecessary casts drivers/s390/ - csum_partial - remove unnecessary casts net/ipv6/ip6mr.c: Use kmem_cache_zalloc, remove memset Joe Peterson (4): n_tty: Fix loss of echoed characters and remove bkl from n_tty n_tty: Fix handling of control characters and continuations n_tty: Fix hanfling of buffer full corner cases n_tty: Output bells immediately on a full buffer Joel Becker (62): Btrfs: cleaner make clean ocfs2: Field prefixes for the xattr_bucket structure ocfs2: Convenient access to an xattr bucket's block number. ocfs2: Convenient access to xattr bucket data blocks. ocfs2: Convenient access to an xattr bucket's header. ocfs2: Provide a wrapper to brelse() xattr bucket buffers. ocfs2: Improve ocfs2_read_xattr_bucket(). ocfs2: Wrap journal_access/journal_dirty for xattr buckets. ocfs2: Copy xattr buckets with a dedicated function. ocfs2: Take ocfs2_xattr_bucket structures off of the stack. ocfs2: Use buckets in ocfs2_xattr_bucket_find(). ocfs2: Use buckets in ocfs2_xattr_create_index_block(). ocfs2: Use buckets in ocfs2_defrag_xattr_bucket(). ocfs2: Use buckets in ocfs2_xattr_set_entry_in_bucket(). ocfs2: Wrap inode block reads in a dedicated function. ocfs2: Morph the haphazard OCFS2_IS_VALID_DINODE() checks. ocfs2: Consolidate validation of group descriptors. ocfs2: Wrap group descriptor reads in a dedicated function. ocfs2: Morph the haphazard OCFS2_IS_VALID_GROUP_DESC() checks. ocfs2: Wrap extent block reads in a dedicated function. ocfs2: Wrap dirblock reads in a dedicated function. ocfs2: Wrap xattr block reads in a dedicated function ocfs2: Validate metadata only when it's read from disk. ocfs2: Wrap virtual block reads in ocfs2_read_virt_blocks() ocfs2: Convert ocfs2_read_dir_block() to ocfs2_read_virt_blocks() ocfs2: Fix ocfs2_read_quota_block() error handling. ocfs2: Dirty the entire bucket in ocfs2_bucket_value_truncate() ocfs2: Dirty the entire first bucket in ocfs2_extend_xattr_bucket() ocfs2: Dirty the entire first bucket in ocfs2_cp_xattr_cluster(). ocfs2: Explain t_is_new in ocfs2_cp_xattr_cluster(). ocfs2: Use ocfs2_cp_xattr_bucket() in ocfs2_mv_xattr_bucket_cross_cluster(). ocfs2: Rename ocfs2_cp_xattr_cluster() to ocfs2_mv_xattr_buckets(). ocfs2: ocfs2_mv_xattr_buckets() can handle a partial cluster now. ocfs2: Use ocfs2_mv_xattr_buckets() in ocfs2_mv_xattr_bucket_cross_cluster(). ocfs2: Start using buckets in ocfs2_adjust_xattr_cross_cluster(). ocfs2: Pass buckets into ocfs2_mv_xattr_bucket_cross_cluster(). ocfs2: Move buckets up into ocfs2_add_new_xattr_cluster(). ocfs2: Move buckets up into ocfs2_add_new_xattr_bucket(). ocfs2: Pass xs->bucket into ocfs2_add_new_xattr_bucket(). jbd2: Add buffer triggers ocfs2: Add the on-disk structures for metadata checksums. ocfs2: Add the underlying blockcheck code. ocfs2: Add a validation hook for quota block reads. ocfs2: block read meta ecc. ocfs2: Add journal_access functions with jbd2 triggers. ocfs2: Wrap up the common use cases of ocfs2_new_path(). ocfs2: Use metadata-specific ocfs2_journal_access_*() functions. ocfs2: Add ecc and checksums to ocfs2 xattr buckets. ocfs2: Create ocfs2_xattr_value_buf. ocfs2: Pull ocfs2_xattr_value_buf up from __ocfs2_remove_xattr_range(). ocfs2: Pull ocfs2_xattr_value_buf up into ocfs2_xattr_value_truncate(). ocfs2: Pass ocfs2_xattr_value_buf into ocfs2_xattr_value_truncate(). ocfs2: Pass value buf to ocfs2_xattr_update_entry(). ocfs2: Use ocfs2_xattr_value_buf in ocfs2_xattr_set_entry(). ocfs2: Pass value buf to ocfs2_remove_value_outside(). ocfs2: Use proper journal_access function in xattr.c ocfs2: Checksum and ECC for directory blocks. ocfs2: Validate superblock with checksum and ecc. ocfs2: Enable metadata checksums. ocfs2: Don't hand-code xor in ocfs2_hamming_encode(). ocfs2: Another hamming code optimization. ocfs2: One more hamming code optimization. Joerg Roedel (61): x86: default to SWIOTLB=y on x86_64 x86: move GART specific stuff from iommu.h to gart.h x86: fix broken flushing in GART nofullflush path KVM: rename vtd.c to iommu.c introcude linux/iommu.h for an iommu api add frontend implementation for the IOMMU API select IOMMU_API when DMAR and/or AMD_IOMMU is selected KVM: change KVM to use IOMMU API VT-d: adapt domain init and destroy functions for IOMMU API VT-d: adapt device attach and detach functions for IOMMU API VT-d: adapt domain map and unmap functions for IOMMU API VT-d: adapt domain iova_to_phys function for IOMMU API VT-d: register functions for the IOMMU API VT-d: remove now unused intel_iommu_found function AMD IOMMU: rename iommu_map to iommu_map_page AMD IOMMU: make dma_ops_free_pagetable generic AMD IOMMU: add domain id free function AMD IOMMU: refactor completion wait handling into separate functions AMD IOMMU: move invalidation command building to a separate function AMD IOMMU: don't remove protection domain from iommu_pd_list AMD IOMMU: add iommu_flush_domain function AMD IOMMU: add protection domain flags AMD IOMMU: add checks for dma_ops domain to dma_ops functions AMD IOMMU: add device reference counting for protection domains AMD IOMMU: rename set_device_domain function AMD IOMMU: add device detach helper functions AMD IOMMU: add device notifier callback AMD IOMMU: add domain cleanup helper function AMD IOMMU: add domain init function for IOMMU API AMD IOMMU: add domain destroy function for IOMMU API AMD IOMMU: add device detach function for IOMMU API AMD IOMMU: add device attach function for IOMMU API AMD IOMMU: add domain map function for IOMMU API AMD IOMMU: add domain unmap function for IOMMU API AMD IOMMU: add domain address lookup function for IOMMU API AMD IOMMU: register functions for the IOMMU API AMD IOMMU: add a domain flag for default domains AMD IOMMU: allocate a new protection for hotplugged devices AMD IOMMU: use dev_name instead of self-build print_devid AMD IOMMU: convert iommu->need_sync to bool AMD IOMMU: convert amd_iommu_isolate to bool AMD IOMMU: use calc_devid in prealloc_protection_domains AMD IOMMU: use dev_name in iommu_enable function AMD IOMMU: add Kconfig entry for statistic collection code AMD IOMMU: add necessary header defines for stats counting AMD IOMMU: add init code for statistic collection AMD IOMMU: add stats counter for completion wait events AMD IOMMU: add stats counter for map_single requests AMD IOMMU: add stats counter for unmap_single requests AMD IOMMU: add stats counter for map_sg requests AMD IOMMU: add stats counter for unmap_sg requests AMD IOMMU: add stats counter for alloc_coherent requests AMD IOMMU: add stats counter for free_coherent requests AMD IOMMU: add stats counter for cross-page request AMD IOMMU: add stats counter for single iommu domain tlb flushes AMD IOMMU: add stats counter for domain tlb flushes AMD IOMMU: add statistics about allocated io memory AMD IOMMU: add statistics about total number of map requests kvm/iommu: fix compile warning Merge branches 'iommu/api' and 'iommu/amd' into for-linus AMD IOMMU: remove now unnecessary #ifdefs Johann Felix Soden (1): Staging: et131x: remove unused variable in et1310_tx.c Johannes Berg (75): ALSA: aoa: clean up file names mac80211: convert to %pM away from print_mac net: convert print_mac to %pM net: convert more to %pM mac80211: remove aggregation status write support from debugfs mac80211: remove writable debugs mesh parameters mac80211: minor code cleanups mac80211: remove wiphy_to_hw mac80211: clean up ieee80211_hw_config errors mac80211: remove max_antenna_gain config mac80211: fix short slot handling 802.11: clean up/fix HT support mac80211: kill hw.conf.antenna_sel_{rx,tx} mac80211: introduce hw config change flags mac80211: provide sequence numbers nl80211: export HT capabilities iwl3945: fix station stuff in RC algorithm mac80211: make retry limits part of hw config mac80211: move bss_conf into vif mac80211: rewrite HT handling p54/rtl8187: fix up the seqno patch mac80211: add might_sleep to hw_config mac80211/drivers: rewrite the rate control API p54: implement MRR make ieee80211 invisible nl80211: fix monitor flags mac80211: remove rate_control_clear mac80211: inform userspace of probe/auth/assoc timeout wireless: don't publish __regulatory_hint wireless: remove cfg80211_reg_mutex wireless: get rid of pointless request list wireless: fix EU check mac80211: insert AP sta entry after filling it wireless: remove write-only 'granted' variable wireless: make regdom passing semantics simpler wireless: remove struct regdom hinting wireless: clean up regulatory ignore_request function wireless regulatory: move ignore_request mac80211: fix two kernel-doc warnings wireless: move mesh config length constant wireless: fix a few sparse warnings ath9k: remove useless NULL initialisers iwl3945: remove dead code iwlwifi: remove implicit direct scan iwlwifi: remove unused essid variable b43/legacy: remove SSID code adm8211: remove SSID code mac80211: remove SSID driver code iwl3945: remove bogus comment don't use net/ieee80211.h wireless: implement basic rate helper function b43: implement short slot and basic rate handling libertas_tf: fix skb tail pointer b43legacy: implement short slot and basic rate handling b43: remove rate index warning wireless: clean up sysfs code using %pM ath5k: name pci driver "ath5k" too powerpc: Allow the max stack trace depth to be configured mac80211: only transition STAs ps->wake on data frames cfg80211: handle SIOCGIWNAME cfg80211: handle SIOCGIWMODE/SIOCSIWMODE wireless: clean up radiotap a bit cfg80211: fix wiphy remove if no regulatory request cfg80211: "fix" 11d oops p54: fix lm87 checksum endianness iwlwifi: disable AP mode mac80211: improve sta_notify documentation cfg80211: fix nl80211 frequency handling mac80211: only create default STA interface if supported ath9k: remove fragmentation workaround again mac80211: remove fragmentation offload functionality mac80211/cfg80211: check endianness in sparse runs rfkill: strip pointless notifier chain forcedeth: don't poll NV event 36 remove CONFIG_KMOD Johannes Weiner (4): mm: more likely reclaim MADV_SEQUENTIAL mappings mm: check for no mmaps in exit_mmap() bootmem: print request details before BUG_ON(them) dma-coherent: catch oversized requests to dma_alloc_from_coherent() John Daiker (2): ath5k: reduce checkpatch.pl errors rt2x00: reduce checkpatch.pl errors John Linn (1): Input: xilinx_ps2 - various cleanups John W. Linville (22): p54: integrate parts of lmac_longbow.h and other parts of stlc45xx wireless: consolidate on a single escape_essid implementation wireless: remove NETWORK_EMPTY_ESSID flag wireless: escape_ssid should handle non-printables wireless: use individual buffers for printing ssid values wireless: avoid some net/ieee80211.h vs. linux/ieee80211.h conflicts p54: eliminate warning for uninitialized variable 'tim_len' ath9k: correct warning about unintialized variable 'tid' netdevice zd1201: Convert directly reference of netdev->priv to netdev_priv() ipw2100, ipw2200: select LIB80211 lib80211: absorb crypto bits from net/ieee80211 lib80211: consolidate crypt init routines ipw2x00: relocate ipw2100/ipw2200 to common directory net/ieee80211 -> drivers/net/ipw2x00/libipw_* rename mac80211: add explicit padding in struct ieee80211_tx_info rtl8180: adapt for deprecated IEEE80211_CONF_SHORT_SLOT_TIME flag MAINTAINERS: claim maintenance over rtl818x drivers mac80211_hwsim: fix-up some print_mac merge damage hostap: select required crypto bits in Kconfig mac80211: deauth when interface is marked down ieee80211_security: correct warning about width of auth_mode Staging: at76_usb: update drivers/staging/at76_usb w/ mac80211 port Jon Callan (2): ARMv7: Add SMP initialisation to proc-v7.S RealView: Add Cortex-A9 support to the EB board Jon Tollefson (1): powerpc: Hugetlb pgtable cache access cleanup Jonathan Brassow (4): dm raid1: fix error count dm snapshot: separate out exception store interface dm snapshot: rename struct exception_store dm snapshot: extend exception store functions Jonathan Cameron (2): [ARM] pxa: initial support for the Imote2 platform rtc: move power of 2 periodic frequency check down into drivers Jonathan Corbet (1): Fix a typo in the development process document. Jordan Crouse (1): ALSA: cs5535audio: Use OLPC/Geode basic infrastructure Jose Alberto Reguero (1): V4L/DVB (9525): af9015: add support for AverMedia Volar X remote. Josef Bacik (29): Btrfs: Implement mknod Btrfs: delay commits during fsync to allow more writers Btrfs: Add per-root block accounting and sysfs entries xattr support for btrfs Btrfs: Make ACLs return EOPNOTSUPP for now Btrfs: xattr fixes Btrfs: Implement new dir index format Btrfs: Remove unused xattr code Btrfs: Add ACL support Btrfs: Create orphan inode records to prevent lost files after a crash Btrfs: Fix a few functions that exit without stopping their transaction Btrfs: compile when posix acl's are disabled Btrfs: fix cache_block_group error handling Btrfs: free space accounting redo Btrfs: fix seekiness due to finding the wrong block group Btrfs: fix deadlock between alloc_mutex/chunk_mutex Btrfs: make tree_search_offset more flexible in its searching Btrfs: fix enospc when there is plenty of space Btrfs: nuke fs wide allocation mutex V2 jbd2: improve jbd2 fsync batching Btrfs: batch extent inserts/updates/deletions on the extent root Btrfs: fix free space leak Btrfs: Add some debugging around the ENOSPC bugs Btrfs: fix free space accounting when unpinning extents Btrfs: Fix for lockdep warnings with alloc_mutex and pinned_mutex Btrfs: add support for compat flags to btrfs Btrfs: fix panic on error during mount Btrfs: add support for multiple csum algorithms jbd: improve fsync batching Josh Boyer (1): powerpc: Introduce ppc_pci_flags accessors Jouni Hogander (1): ARM: OMAP: Enable GPIO debounce clock only when debounce is enabled v3 Jouni Malinen (25): mac80211_hwsim: Debug info for BSS config changes nl80211: Add basic rate configuration for AP mode mac80211_hwsim: Debug info for TX queue parameters nl80211: Add TX queue parameter configuration mac80211_hwsim: Make sure beacon_timer gets deleted mac80211: Allow AP mode to be enabled mac80211_hwsim: Add support for client PS mode mac80211_hwsim: Update documentation (AP mode enabled) nl80211: Report max TX power in NL80211_BAND_ATTR_FREQS nl80211: Change max TX power to be in mBm instead of dBm nl80211: Add frequency configuration (including HT40) ath9k: Free Beacon skbs in AP mode ath9k: Disable staggered Beacon frame scheduling mac80211: Disable requests for new scans in AP mode ath9k: Do not remove header padding on RX from short frames mac80211: Add HT rates into RX status reporting ath9k: Report HT rates in RX status mac80211: Send Layer 2 Update frame on reassociation mac80211: Remove radiotap rate-present flag for HT ath9k: Fix TX status reporting for retries and MCS index ath9k: Remove MAC header pad before reporting TX status ath9k: Fix a NULL pointer dereference in ath_rate_get ath9k: Key cache allocation for AP mode ath9k: Fix key cache slot selection for splitmic ath9k: Fixed RX decryption status reporting Juergen Beisert (1): i.MX Framebuffer: Use readl/writel instead of direct pointer deref Julia Lawall (50): drivers/net/wireless/ath9k/rc.c: use ARRAY_SIZE ALSA: sound/pci/mixart/mixart.c: Add missing snd_card_free Bluetooth: Change simple_strtol to simple_strtoul powerpc: Eliminate NULL test and memset after alloc_bootmem drivers/isdn/mISDN: use ARRAY_SIZE [MTD] drivers/mtd/maps/nettel.c: use ARRAY_SIZE [ARM] eliminate NULL test and memset after alloc_bootmem drivers/net/hamradio: Move a dereference below a NULL test IB/ehca: Remove redundant test of vpage drivers/net/wan: Remove redundant test crypto: md4 - Use ARRAY_SIZE [S390] drivers/s390/crypto: Move dereference to after IS_ERR test [S390] s390: Remove redundant test drivers/net/au1000_eth.c: Remove redundant test drivers/net/ehea: Remove redundant test drivers/net: Remove redundant test drivers/net/wan: Remove redundant test net/appletalk: Remove redundant test [CIFS] Remove redundant test drm/i915: Remove redundant test in error path. [SCSI] esp_scsi: Use DIV_ROUND_UP [SCSI] fusion: use ARRAY_SIZE V4L/DVB (9638): drivers/media: use ARRAY_SIZE drivers/net/usb: use USB API functions rather than constants Input: gtco - use USB endpoint API V4L/DVB (9796): drivers/media/video/cx88/cx88-alsa.c: Adjust error-handling code V4L/DVB (10130): use USB API functions rather than constants powerpc/85xx: Add local_irq_restore in error handling code drivers/mmc: Move a dereference below a NULL test fs/namespace.c: drop code after return ALSA: sound/usb: use USB API functions rather than constants ALSA: Use usb_set/get_intfdata [SCSI] lpfc: Move a dereference below a NULL test [SCSI] fusion: Move a dereference below a NULL test V4L/DVB (10171): Use usb_set_intfdata ALSA: sound/usb: Use negated usb_endpoint_xfer_control, etc GFS2: Use DEFINE_SPINLOCK [MTD] [NAND] alauda: use USB API functions rather than constants parisc: Use DEFINE_SPINLOCK arch/avr32: Eliminate NULL test and memset after alloc_bootmem Staging: wlan-ng: p80211wext.c: use ARRAY_SIZE mm/page_alloc.c: eliminate NULL test and memset after alloc_bootmem drivers/spi: move a dereference below a NULL test drivers/rtc: correct an error test USB: gadget: change simple_strtol to simple_strtoul drivers/pci/hotplug: Add missing pci_dev_get PCI hotplug: remove redundant test in cpq hotplug V4L/DVB (10185): Use negated usb_endpoint_xfer_control, etc powerpc/52xx: Use DEFINE_SPINLOCK powerpc/pasemi: Use DEFINE_SPINLOCK Julian Calaby (2): sparc: Clean arch-specific code in prom_common.c sparc: Fix minor SPARC32 compile error Julien Boibessot (1): [ARM] MX27: add i.MX27 SDHC1 and SDHC2 GPIO declarations Julius Volz (3): IPVS: Add IPv6 support to SH and DH schedulers IPVS: Add IPv6 support to LBLC/LBLCR schedulers IPVS: Remove supports_ipv6 scheduler flag JĂ¼ri Reitel (1): rtc-ds1307: remove legacy probe() checks KAMEZAWA Hiroyuki (23): cgroups: make cgroup config a submenu memcg: introduce charge-commit-cancel style of functions memcg: fix gfp_mask of callers of charge memcg: simple migration handling memcg: move all acccounting to parent at rmdir() memcg: new force_empty to free pages under group memcg: handle swap caches memcg: mem+swap controller Kconfig memcg: swap cgroup for remembering usage memcg: mem+swap controller core memcg: synchronized LRU memcg: avoid unnecessary system-wide-oom-killer memcg: fix reclaim result checks memcg: revert gfp mask fix memcg: swapout refcnt fix memcg: rename scan global lru memcg: show real limit under hierarchy mode memcg: explain details and test document memcg: fix swap accounting leak memcg: fix double free and make refcnt sane memcg: use css_tryget in memcg memcg: fix LRU accounting for SwapCache memcg: fix shmem's swap accounting KOSAKI Motohiro (38): x86: update CONFIG_NUMA description x86/doc: spelling fix for grub proc: enclose desc variable of show_stat() in CONFIG_SPARSE_IRQ locking, irq: enclose irq_desc_lock_class in CONFIG_LOCKDEP hrtimer: remove #include irq: for_each_irq_desc() move to irqnr.h proc: remove ifdef CONFIG_SPARSE_IRQ from stat.c irq: simplify for_each_irq_desc() usage getrusage: RUSAGE_THREAD should return ru_utime and ru_stime mm: get rid of pagevec_release_nonlru() mm: cleanup: remove #ifdef CONFIG_MIGRATION memcg: reclaim shouldn't change zone->recent_rotated statistics mm: make init_section_page_cgroup() static mm: make maddr __iomem mm: make mem_cgroup_resize_limit() static mm: make scan_all_zones_unevictable_pages() static mm: make scan_zone_unevictable_pages() static mm: make setup_per_zone_inactive_ratio() static mm: make vread() and vwrite() declaration vmscan: improve reclaim throughput to bail out patch mm: kill zone_is_near_oom() mm: remove CONFIG_OUT_OF_LINE_PFN_TO_PAGE mm: kill page_queue_congested() mm: stop kswapd's infinite loop at high order allocation profile: don't include twice. inactive_anon_is_low: move to vmscan mm: introduce zone_reclaim struct mm: add zone nr_pages helper function mm: make get_scan_ratio() safe for memcg memcg: add null check to page_cgroup_zoneinfo() memcg: add inactive_anon_is_low() memcg: add mem_cgroup_zone_nr_pages() memcg: add zone_reclaim_stat memcg: remove mem_cgroup_cal_reclaim() memcg: show reclaim stat memcg: protect prev_priority memcg: swappiness memcg: fix calculation of active_ratio Kai Makisara (2): [SCSI] st: integrate st_scsi_kern_execute and st_do_scsi [SCSI] st: retry enlarge_buffer allocation Kaiwan N Billimoria (1): hwmon: (lm70) Code streamlining and cleanup Kalle Jokiniemi (1): i2c-omap: Enable I2C wakeups for 34xx Kalle Valo (4): mac80211: document ieee80211_tx_info.pad mac80211: enable IEEE80211_CONF_PS only when associated mac80211: track master queue status mac80211: implement dynamic power save Kamalesh Babulal (5): net: Fix more NAPI interface netdev argument drop fallout. Staging: asus_oled: fix build dependancy Staging: meilhaus: fix __symbol_get problems powerpc: Fix iseries drivers build failure without CONFIG_VIOPATH [S390] tape block: fix dependencies Karen Xie (3): cxgb3: manage private iSCSI IP address [SCSI] cxgb3i: Add cxgb3i iSCSI driver. [SCSI] cxgb3i: remove use of skb->sp Karl Beldan (2): ASoC: ssm2602: Fix priv substreams refs ASoC: ssm2602: Update supported stream formats Karl Bongers (1): USB: isp1760: Fix probe in PCI glue code Karsten Keil (3): misdn: Fix lockdep warning mISDN: Cleanup hfc multiport driver mISDN: Add HFC USB driver Kay Sievers (58): Input: struct device - replace bus_id with dev_name(), dev_set_name() uwb: struct device - replace bus_id with dev_name(), dev_set_name() net: struct device - replace bus_id with dev_name(), dev_set_name() ssb: struct device - replace bus_id with dev_name(), dev_set_name() powerpc: struct device - replace bus_id with dev_name(), dev_set_name() rapidio: struct device - replace bus_id with dev_name(), dev_set_name() [MTD] struct device - replace bus_id with dev_name(), dev_set_name() [S390] struct device - replace bus_id with dev_name(), dev_set_name() ide: struct device - replace bus_id with dev_name(), dev_set_name() V4L/DVB (9473): add DVB_DEVICE_NUM and DVB_ADAPTER_NUM to uevent V4L/DVB (9521): V4L: struct device - replace bus_id with dev_name(), dev_set_name() virtio: struct device - replace bus_id with dev_name(), dev_set_name() [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() V4L/DVB (10172): add DVB_DEVICE_TYPE= to uevent HID: struct device - replace bus_id with dev_name(), dev_set_name() avr: struct device - replace bus_id with dev_name(), dev_set_name() driver core: struct device - replace bus_id with dev_name(), dev_set_name() sysfs: clarify SYSFS_DEPRECATED help text xen: struct device - replace bus_id with dev_name(), dev_set_name() w1: struct device - replace bus_id with dev_name(), dev_set_name() video: struct device - replace bus_id with dev_name(), dev_set_name() tifm: struct device - replace bus_id with dev_name(), dev_set_name() thermal: struct device - replace bus_id with dev_name(), dev_set_name() swiotlb: struct device - replace bus_id with dev_name(), dev_set_name() spi: struct device - replace bus_id with dev_name(), dev_set_name() SGI: struct device - replace bus_id with dev_name(), dev_set_name() serial: struct device - replace bus_id with dev_name(), dev_set_name() power-supply: struct device - replace bus_id with dev_name(), dev_set_name() pnp: struct device - replace bus_id with dev_name(), dev_set_name() mwave: struct device - replace bus_id with dev_name(), dev_set_name() mtd: struct device - replace bus_id with dev_name(), dev_set_name() mips: struct device - replace bus_id with dev_name(), dev_set_name() memstick: struct device - replace bus_id with dev_name(), dev_set_name() macintosh: struct device - replace bus_id with dev_name(), dev_set_name() pm: struct device - replace bus_id with dev_name(), dev_set_name() ISDN: struct device - replace bus_id with dev_name(), dev_set_name() infiniband: struct device - replace bus_id with dev_name(), dev_set_name() i7300_idle: struct device - replace bus_id with dev_name(), dev_set_name() IA64: struct device - replace bus_id with dev_name(), dev_set_name() i2o: struct device - replace bus_id with dev_name(), dev_set_name() hwmon: struct device - replace bus_id with dev_name(), dev_set_name() gpu: struct device - replace bus_id with dev_name(), dev_set_name() gpio: struct device - replace bus_id with dev_name(), dev_set_name() gadget: struct device - replace bus_id with dev_name(), dev_set_name() dmi: struct device - replace bus_id with dev_name(), dev_set_name() chris: struct device - replace bus_id with dev_name(), dev_set_name() block: struct device - replace bus_id with dev_name(), dev_set_name() avr: struct device - replace bus_id with dev_name(), dev_set_name() libata: struct device - replace bus_id with dev_name(), dev_set_name() arm: struct device - replace bus_id with dev_name(), dev_set_name() staging: struct device - replace bus_id with dev_name(), dev_set_name() rtc: struct device: replace bus_id with dev_name(), dev_set_name() edac: struct device: replace bus_id with dev_name(), dev_set_name() i2c: Replace bus_id with dev_name(), dev_set_name() usb: struct device - replace bus_id with dev_name(), dev_set_name() oxu210hp-hcd.c: struct device - replace bus_id with dev_name(), dev_set_name() PCI: struct device - replace bus_id with dev_name(), dev_set_name() regulator: struct device - replace bus_id with dev_name(), dev_set_name() Kees Cook (1): ELF: implement AT_RANDOM for glibc PRNG seeding Keith Mannthey (1): block: Supress Buffer I/O errors when SCSI REQ_QUIET flag set Ken Chen (8): x86, sched: enable wchan config menu item on 64-bit sched: fix inconsistency when redistribute per-cpu tg->cfs_rq shares sched: fix sd_parent_degenerate on non-numa smp machine x86: convert rdtscll() to use __native_read_tsc sched, cpuacct: refactoring cpuusage_read / cpuusage_write sched, cpuacct: export percpu cpuacct cgroup stats schedstat: consolidate per-task cpu runtime stats proc: add /proc/*/stack Kenji Kaneshige (6): PCI hotplug: pciehp: remove unnecessary wait after turning power off PCI: pciehp: add ACPI based slot detection PCI: pciehp: add auto option to pciehp_detect_mode PCI hotplug: introduce functions for ACPI slot detection PCI: pciehp: ignore undefined bit in link status register PCI: pciehp: cleanup register and field definitions Kent Liu (1): crypto: crc32c-intel - Update copyright head Kentaro Takeda (1): introduce new LSM hooks where vfsmount is available. Kevin Hao (1): Add device function for USB serial console Kevin Hilman (2): omap mmc: force MMC module reset on boot USB: musb: build fixes for DaVinci Kim Phillips (2): crypto: talitos - Pass correct interrupt status to error handler crypto: talitos - Perform auth check in h/w if on sec 2.1 and above Kiyoshi Ueda (2): dm request: add caches dm request: extend target interface Klaus Schmidinger (2): V4L/DVB (10164): Add missing S2 caps flag to S2API V4L/DVB (10165): Add FE_CAN_2G_MODULATION flag to frontends that support DVB-S2 Klaus-D. Wacker (1): [S390] convert lcs printks to dev_xxx and pr_xxx macros. Klaus-Dieter Wacker (2): qeth: HiperSockets mcl string conversion (pre z9 mach) qeth: No large send using EDDP for HiperSockets. Kolekar, Abhijeet (3): iwl3945 : Fix Sparse Warnings iwl3945 : Simplify iwl3945_send_beacon_cmd iwl3945 : Simplify iwl3945_pci_probe Komuro (1): fmvj18x_cs: write interrupt ack bit for lan and modem to work simultaneously. Krishna Kumar (2): nfsd: Minor cleanup of find_stateid nfsd: Fix leaked memory in nfs4_make_rec_clidname Kristian Høgsberg (2): drm: pin new and unpin old buffer when setting a mode. drm/i915: Pin cursor bo and unpin old bo when setting cursor. Kristian H�gsberg (1): drm: drop DRM_IOCTL_MODE_REPLACEFB, add+remove works just as well. Kristoffer Ericson (1): [ARM] 5336/1: Formatting/Whitespace cleanups in mach-sa1100 Krzysztof Halasa (1): net: PHYLIB mdio fixes #2 Krzysztof HaÅ‚asa (28): WAN: split hd6457x.c into hd64570.c and hd64572.c WAN: remove SCA II support from SCA drivers WAN: remove SCA support from SCA-II drivers WAN: convert HD64572-based drivers to NAPI. WAN: TX-done handler now uses the ownership bit in HD64572 drivers. WAN: HD64572 already handles TX underruns with DMAC. WAN: rework HD64572 interrupts a bit. WAN: Simplify HD64572 status handling. WAN: don't print HD64572 driver versions anymore. WAN: Simplify HD64572 drivers. WAN: HD64572 drivers don't use next_desc() anymore. WAN: Correct comments in hd6457[02].c WAN: Simplify sca_init_port() in HD64572 driver. WAN: new synchronous PPP implementation for generic HDLC. WAN: syncppp.c is no longer used by any kernel code. Remove it. WAN pc300too.c: Fix PC300-X.21 detection IXP4xx: check for queue being empty in qmgr_release_queue(). IXP4xx: clear IRQ stat in qmgr_disable_irq(). IXP4xx: Silence section mismatch warning in Ethernet driver. IXP4xx: Make the Ethernet driver use built-in netdev stats. IXP4xx: Add PHYLIB support to Ethernet driver. IXP4xx: Add PHYLIB MII ioctl to the Ethernet driver. IXP4xx: Add ethtool support to Ethernet driver. WAN: Add IXP4xx HSS HDLC driver. Update MAINTAINERS entries for IXP4xx and WAN network drivers. IXP4xx: move common debugging from network drivers to QMGR module. HDLC_PPP: Fix Configure-Ack to return original options as required by the standard. Convert ixp4xx_eth driver to use net_device_ops. Kukkonen Mika (1): UBIFS: avoid unnecessary checks Kumar Gala (14): powerpc: Add MSR[CE, DE] to the MSR bits we print on show_regs() powerpc: hash_page_sync should only be used on SMP & STD_MMU_32 powerpc: Add a local_flush_tlb_page to handle kmap_atomic invalidates powerpc: Use RCU based pte freeing mechanism for all powerpc powerpc: Remove unncessary SPE related compiler flag powerpc/85xx: minor head_fsl_booke.S cleanup powerpc/85xx: Add support for SMP initialization powerpc/85xx: Fix compile warnings in mpc85xx_mds.c powerpc/85xx: Fix compile issues with mpc8572ds.dts powerpc/85xx: Enable SMP support powerpc/85xx: Add SMP support to MPC8572 DS edac: fix mpc85xx and add mpc8536 mpc8560 powerpc: Export cacheable_memzero as its now used in a driver gianfar: Fixup use of BUS_ID_SIZE Kuninori Morimoto (15): V4L/DVB (9488): Add ov772x driver V4L/DVB (9783): Change power on/off sequence on ov772x V4L/DVB (9784): Register name fix for ov772x driver V4L/DVB (10067): Remove ov772x_default_regs from ov772x driver V4L/DVB (10068): Change device ID selection method on ov772x driver V4L/DVB (10069): Add ov7725 support to ov772x driver V4L/DVB (10086): Add new set_std function on soc_camera V4L/DVB (10087): Add new enum_input function on soc_camera V4L/DVB (10089): Add interlace support to sh_mobile_ceu_camera.c V4L/DVB (10092): Change V4L2 field to ANY from NONE on sh_mobile_ceu_camera.c V4L/DVB (10094): Add tw9910 driver V4L/DVB (10095): The failure of set_fmt is solved in tw9910 V4L/DVB (10096): ov772x: change dev_info to dev_dbg V4L/DVB (10097): ov772x: clear i2c client data on error and remove V4L/DVB (10098): ov772x: fix try_fmt calculation method Kusanagi Kouichi (1): tun: Fix SIOCSIFHWADDR error. Kwangwoo Lee (1): Input: add tsc2007 based touchscreen driver Kyle McMartin (7): parisc: use leX_to_cpu in place of __fswabX parisc: factor out sid to protid conversion parisc: fix braino in commit adding __space_to_prot parisc: quiet palo not-found message from "which" parisc: fix ipv6 checksum parisc: fix kernel crash (protection id trap) when compiling ruby1.9 parisc: export length of os_hpmc vector Kyungmin Park (2): [ARM] S3C64XX: Show uncompress messages [ARM] S3C64XX: Mask the pll values correctly 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/pub/scm/linux/kernel/git/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/pub/scm/linux/kernel/git/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 Lai Jiangshan (17): markers: simplify marker_set_format() markers: remove exported symbol marker_probe_cb_noarg() markers: let marker_table be close to its comments tracepoint: simplification for tracepoints using RCU tracepoint: introduce *_noupdate APIs. ring_buffer: fix comments tracing/ring-buffer: remove unused ring_buffer size ftrace: enable format arguments checking cgroups: add lock for child->cgroups in cgroup_post_fork() cgroups: fix cgroup_iter_next() bug cgroups: don't put struct cgroupfs_root protected by RCU cgroups: use task_lock() for access tsk->cgroups safe in cgroup_clone() cgroups: call find_css_set() safely in cgroup_attach_task() cgroups: remove rcu_read_lock() in cgroupstats_build() devcgroup: use list_for_each_entry_rcu() memcontrol: rcu_read_lock() to protect mm_match_cgroup() cpuset: rcu_read_lock() to protect task_cs() Larry Finger (22): p54: Move rx_mtu to struct bootrec_desc hostap: Fix sparse warnings rtl8187: Remove large delays rtl8187: Remove OFDM delays rtl8187: Remove CCK delays rtl8187: Remove msleep calls after calls to rtl8225_write rtl8187: Remove primitive write delays rtl8187: Reduce channel switch delay rtl8187: Change TX power settings Move all rtl818x files to a common directory. Update of MAINTAINERS for RTL8187 rtl8187: Update file authorship in comments rtl8187: Remove module warning and dependence on CONFIG_EXPERIMENTAL mac80211: Fix pid rate-setting algorithm to allow rate changes rtl8187: Fix transmission count sent to mac80211 rtl8187: Improve wireless statistics for RTL8187 rtl8187: Use usb anchor facilities to manage urbs b43legacy: Fix sparse warnings rtl8187: Fix error returns mac80211: Print unknown packet type in tasklet_handler [SCSI] aha152x_cs: Fix regression that keeps driver from using shared interrupts hp-wmi: handle rfkill_register() failure Laurent Pinchart (18): V4L/DVB (9567): uvcvideo: Add support for Samsung Q310 integrated webcam V4L/DVB (9568): uvcvideo: Add support for Lenovo Thinkpad SL500 integrated webcam V4L/DVB (9569): uvcvideo: Sort the frame descriptors during parsing V4L/DVB (9570): uvcvideo: Handle failed video GET_{MIN|MAX|DEF} requests more gracefully V4L/DVB (9659): uvcvideo: Use {get|set}_unaligned_le32 macros V4L/DVB (9661): uvcvideo: Commit streaming parameters when enabling the video stream V4L/DVB (9662): uvcvideo: Fix printk badness when printing ioctl names V4L/DVB (9809): uvcvideo: Add nodrop module parameter to turn incomplete frame drop off. V4L/DVB (9810): uvcvideo: Add a device quirk to prune bogus controls. V4L/DVB (9897): v4l2: Add camera zoom controls V4L/DVB (9898): v4l2: Add privacy control V4L/DVB (9899): v4l2: Add missing control names V4L/DVB (9902): uvcvideo: V4L2 privacy control support V4L/DVB (9903): uvcvideo: V4L2 zoom controls support V4L/DVB (10101): uvcvideo: Fix bulk URB processing when the header is erroneous V4L/DVB (10102): uvcvideo: Ignore interrupt endpoint for built-in iSight webcams. V4L/DVB (10104): uvcvideo: Add support for video output devices Check fops_get() return value Lauri Leukkunen (1): ARM: OMAP2: Use omap_rev() instead of system_rev Lee Nipper (2): crypto: talitos - Implement done interrupt mitigation crypto: talitos - Ack done interrupt in isr instead of tasklet Len Brown (21): drivers/misc/Makefile, Kconfig: cleanup create drivers/platform/x86/ from drivers/misc/ ACPI: move wmi, asus_acpi, toshiba_acpi to drivers/platform/x86 ACPI: disable MPS when NO APIC-table found ACPI: simplify buffer management for acpi_pci_bind() etc. ACPICA: delete acdisasm.h ACPICA: delete utcache.c ACPI: fix build warning ACPICA: create acpica/ directory ACPICA: hide private headers Merge branch 'alarm' into release Merge branch 'asus-eeepc' into release Merge branch 'battery' into release Merge branches 'release', 'bugzilla-11880', 'bugzilla-12037' and 'bugzilla-12257' into release Merge branch 'fluff' into release Merge branch 'fujitsu-laptop' into release Merge branch 'misc' into release Merge branch 'suspend' into release Merge branch 'linus' into release Merge branch 'simplify_PRT' into release Merge branch 'drivers-platform' into release Lennert Buytenhek (11): mv643xx_eth: checkpatch fixes mv643xx_eth: introduce per-port register area pointer mv643xx_eth: inline txq_alloc_desc_index() mv643xx_eth: implement ->set_rx_mode() mv643xx_eth: move receive error handling out of line mv643xx_eth: calculate descriptor pointer only once in rxq_refill() [ARM] Orion: share GPIO handling code [ARM] Orion: share GPIO IRQ handling code [ARM] Kirkwood: implement GPIO and GPIO interrupt support [ARM] mv78xx0: implement GPIO and GPIO interrupt support tcp: don't mask EOF and socket errors on nonblocking splice receive Leon Woestenberg (1): Staging: add Driver for Altera PCI Express Chaining DMA reference design Leonardo Potenza (1): x86: fix section mismatch warnings in mcheck/mce_amd_64.c Lev Babiev (1): HID: driver for TopSeed Cyberlink quirky remote Li YanBo (1): Staging: add agnx wireless driver Li Yang (1): gianfar: ensure ECNTRL[R100] is cleared on link state change Li Zefan (31): Btrfs: async-thread: fix possible memory leak sched: cleanup for alloc_rt/fair_sched_group() sched: switch sched_features to seqfile sched debug: remove sd_level_to_string() sched debug: remove NULL checking in print_cfs/rt_rq() sched: remove redundant call to unregister_sched_domain_sysctl() sched: add sanity check in partition_sched_domains() sched: clean up SCHED_CPUMASK_ALLOC cls_cgroup: fix an oops when removing a cgroup cls_cgroup: clean up for cgroup part cls_cgroup: clean up Kconfig cpumask: fix bogus kernel-doc cgroups: fix a race between cgroup_clone and umount sched: mark sched_create_sysfs_power_savings_entries() as __init sched: clean up arch_reinit_sched_domains() vfs: remove duplicate code in get_fs_type() sched: fix double kfree in failure path sched: fix section mismatch cgroups: documentation updates cgroups: remove some redundant NULL checks ns_cgroup: remove unused spinlock memcg: fix a typo in Kconfig cgroups: make root_list contains active hierarchies only cgroups: add inactive subsystems to rootnode.subsys_list cgroups: introduce link_css_set() to remove duplicate code cpuset: remove on stack cpumask_t in cpuset_sprintf_cpulist() cpuset: remove on stack cpumask_t in cpuset_can_attach() cpuset: convert cpuset_attach() to use cpumask_var_t cpuset: don't allocate trial cpuset on stack cpuset: convert cpuset->cpus_allowed to cpumask_var_t cpuset: remove remaining pointers to cpumask_t Liming Wang (5): ftrace: adding other non-leaving .text sections ftrace: improve seq_operation of ftrace softirq: remove useless function __local_bh_enable function trace: fix a bug of single thread function trace ftrace: avoid duplicated function when writing set_graph_function Lin Ming (15): ACPICA: Fix possible memory leak on error in parser ACPICA: Allow multiple backslash prefix in namepaths ACPICA: Enhance implicit return mechanism ACPI: osl.c: replace return_ACPI_STATUS with return ACPI: ec.c: call acpi_get_name to get node name ACPI: proc.c: remove ACPI_FUNCTION_TRACE ACPI: wakeup.c: remove ACPI_FUNCTION_TRACE ACPI: main.c: use new public GPE group enable/disable interfaces ACPI: sony-laptop.c: call acpi_get_object_info to get node info ACPI: power.c: call acpi_get_name to get node name ACPI: panasonic-laptop.c: remove ACPI_FUNCTION_TRACE ACPI: io_acpi_init.c: call acpi_get_name to get node fullname ACPI: io_common.c: call acpi_get_table to avoid using ACPI_SIG_DSDT ACPI: reboot.c: use new acpi_reset interface ACPI: remove private acpica headers from driver files Linda Knippers (1): btrfsctl -A error code fixup Linus Torvalds (139): Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'x86-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-nvram Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc Merge branch 'core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-2.6.29' of git://git.kernel.dk/linux-2.6-block Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6 Merge branch 'agp-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6 Merge branch 'drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 Merge branch 'oprofile-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge git://git.kernel.org/pub/scm/linux/kernel/git/hirofumi/fatfs-2.6 Merge branch 'irq-fixes-for-linus-4' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 ide-floppy: allocate only toplevel packet commands Sanitize gcc version header includes Disallow gcc versions 4.1.{0,1} Merge branch 'tty-updates' from Alan Merge branch 'i8k-updates' from Alan Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/dvrabel/uwb Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'kvm-updates/2.6.29' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm Merge branch 'cpus4096-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next Merge branch 'linux-next' of git://git.infradead.org/~dedekind/ubi-2.6 Merge branch 'linux-next' of git://git.infradead.org/ubifs-2.6 Make %p print '(null)' for NULL pointers Merge branch 'cputime' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu Merge branch 'cpus4096-for-linus-3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'audit.b61' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 igb: fix anoying type mismatch warning on rx/tx queue sizing Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'i2c-next' of git://aeryn.fluff.org.uk/bjdooks/linux Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge branch 'for-next' of git://git.o-hand.com/linux-mfd Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Fix up 64-bit byte swaps for most 32-bit architectures PCI: extend on the ICH motherboard IO decode quirk list Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial Merge git://git.kernel.org/pub/scm/linux/kernel/git/czankel/xtensa-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes Merge git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6 Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge branch 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6 Merge branch 'proc-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes Merge git://git.kernel.org/pub/scm/linux/kernel/git/arjan/linux-2.6-async Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-2.6.29' of git://linux-nfs.org/~bfields/linux Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for-linus' of git://neil.brown.name/md Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6 Merge branch 'docs-next' of git://git.lwn.net/linux-2.6 Merge branch 'bkl-removal' of git://git.lwn.net/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge git://git.infradead.org/mtd-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile x86: make 'constant_test_bit()' take an unsigned bit number Merge branch 'for-2.6.29' of git://git.kernel.dk/linux-2.6-block Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-backlight Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-nommu Merge git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-linus Merge branch 'for_2.6.29' of git://git.kernel.org/pub/scm/linux/kernel/git/kkeil/ISDN-2.6 Merge git://git.infradead.org/mtd-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/arjan/linux-2.6-async-2 btrfs: fix for write_super_lockfs/unlockfs error handling Merge branch 'cpus4096-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Linux 2.6.29-rc1 Lior Dotan (3): Staging: slicoss: use kzalloc Staging: slicoss: use correct type for memory allcations Staging: slicoss: use request_firmware Liu Hui (5): Btrfs: Some fixes for batching extent insert. Btrfs: Fix cow semantic in run_delalloc_nocow() Btrfs: Fix cow semantic in run_delalloc_nocow() Btrfs: Fix typo in clear_state_cb Btrfs: Fix free block discard calls down to the block layer Liu Yu (4): powerpc/math-emu: Fix single float point division bug powerpc/math-emu: Adopt new version of _FP_CHOOSENAN powerpc/math-emu: Remove redundant 'ret' powerpc: Add SPE/EFP math emulation for E500v1/v2 processors. Lubomir Bulej (1): libata: blacklist NCQ on OCZ CORE 2 SSD (resend) Luis R. Rodriguez (33): ath5k/ath9k: correct signal quality ath9k: correct signal quality report ath5k: correct ath5k signal quality mac80211: make use of regulatory tx power settings on change of tx power ath9k: remove pointless sc_txintrperiod and spin_lock_bh on tx prepare ath9k: enable RX interrupt mitigation ath9k: Allow user to change tx power when asked ath9k: use ETH_P_PAE cfg80211: a reg rule is invalid if freq diff is 0 cfg80211: Add regulatory domain intersection capability cfg80211: make use of reg macros on REG_RULE cfg80211: Add kdoc for struct regulatory_request ath5k: allow APs to receive beacons ath9k: enable RXing of beacons on STA/IBSS cfg80211: mark negative frequencies as invalid cfg80211: remove switch from __regulatory_hint() cfg80211: remove switch from __set_regdom() cfg80211: separate intersection section in __set_regdom() cfg80211: expect different rd in cfg80211 when intersecting cfg80211: call_crda() won't tell us if CRDA was present cfg80211: mark regdomains with > NL80211_MAX_SUPP_REG_RULES invalid cfg80211/mac80211: Add 802.11d support cfg80211: add support for custom firmware regulatory solutions iwlwifi: enable custom fw regulatory solution ath9k: Clarify we only want 32-bit DMA ath9k: make DMA memory consistent mac80211: don't assume driver has been attached on registration mac80211: make Minstrel the default rate control algorithm ath9k: Handle -ENOMEM on RX gracefully nl80211: relicense nl80211.h under the ISC ath9k: Check for pci_map_single() errors ath9k: Use GFP_ATOMIC when allocating TX private area Staging: add otus Atheros wireless network driver Luiz Fernando N. Capitulino (1): fs/exec.c:__bprm_mm_init(): clean up error handling Lukasz Lubojanski (1): HID: force feedback driver for GreenAsia 0x12 PID Luotao Fu (1): smc91x: remove isa stuff from smc91x driver Magnus Damm (42): sh: enable and disable clocks recursively sh: sh_mobile clock divider index fix sh: use arch_flags for sh_mobile mstpcr clock bits sh: new sh_mobile mstpcr clocks base code sh: sh_mobile mstpcr clocks for sh7722 sh: sh_mobile mstpcr clocks for sh7723 sh: sh_mobile mstpcr clocks for sh7343 sh: sh_mobile mstpcr clocks for sh7366 sh: sh_mobile i2c clock framework support sh: sh_mobile keysc clock framework support sh: sh_mobile ceu clock framework support sh: sh_mobile usbf clock framework support sh: sh_mobile usb clock framework support sh: sh_mobile lcdc clock framework support sh: remove old sh_mobile mstpc clocks sh: P4 ioremap pass-through sh: propagate r_clk sh: sh7343 scif configuration update sh: fix number of interrupts on se7343 sh: add st16c2550 devices to se7343 sh: add isp1161 usb host device to se7343 sh: remove ioport cruft and smc91x from se7343 sh: update se7343 defconfig sh: move the hp6xx pm code sh: allow CONFIG_PM sh: allow CONFIG_CPU_IDLE sh: add ov772x reset delay on Migo-R sh: split coherent pages sh_mobile_lcdc: use FB_SYS helpers instead of FB_CFB sh: add LCDC interrupt configuration to AP325 and Migo-R video: fix deferred io fsync() video: deferred io cleanup video: deferred io with physically contiguous memory video: sh_mobile_lcdcfb deferred io support sh: enable deferred io LCDC on Migo-R V4L/DVB (10078): video: add NV16 and NV61 pixel formats V4L/DVB (10079): sh_mobile_ceu: use new pixel format translation code V4L/DVB (10084): sh_mobile_ceu: add NV12 and NV21 support V4L/DVB (10085): sh_mobile_ceu: add NV16 and NV61 support V4L/DVB (10088): video: sh_mobile_ceu cleanups and comments USB: m66592 and r8a66597 resource changes vmcore: remove saved_max_pfn check Manu Abraham (79): V4L/DVB (9344): DVB-Core update V4L/DVB (9478): Fix: parameters not supplied in the search process V4L/DVB (9375): Add STB0899 support V4L/DVB (9376): Add STB0899 to build V4L/DVB (9377): Add STB6100 Support V4L/DVB (9378): Add STB6100 Support V4L/DVB (9379): FIX: fix a bug in the charge pump setting V4L/DVB (9380): FIX: a possible division by zero V4L/DVB (9381): On the KNC1 cards the CLOCK is clamped to a maximum limit of 90MHz, eventhough V4L/DVB (9382): Use a delay for tracking acquisition status V4L/DVB (9383): Let's neither sleep nor wakeup for now V4L/DVB (9384): FIX: register value is not reset to 0 after write V4L/DVB (9386): FIX: Add in missing inversion (should be ideally in the config struct) V4L/DVB (9387): FIX: Write to the correct register V4L/DVB (9392): initial go at TDA8261 tuner V4L/DVB (9393): Add TDA8261 to build V4L/DVB (9394): cache last successful state V4L/DVB (9395): Add initial support for two KNC1 DVB-S2 boards V4L/DVB (9396): Fix clocks at stb0899 V4L/DVB (9397): fix some bugs at tda8261 V4L/DVB (9399): some cleanups at budget-ci V4L/DVB (9400): stb6100: Code Simplification V4L/DVB (9401): Code Simplification V4L/DVB (9402): TT S2 3200 shouldn't need Inversion ON and Inversion AUTO at the same time V4L/DVB (9403): Fix the CA module not working issue V4L/DVB (9404): the KNC1 and clones also don't have the I/Q inputs swapped V4L/DVB (9405): Practical tests show that the TT S2 3200 has I/Q inputs inverted, similar to the KNC1. V4L/DVB (9407): Optimizations Reduce capture range from 10MHz to 3Mhz V4L/DVB (9408): tda8261: check status to avoid lock loss V4L/DVB (9409): Bug! inverted logic V4L/DVB (9410): Bug: Missing reference clock definition V4L/DVB (9411): Bug! Timing recovery was calculated for 99MHz not 90 MHz V4L/DVB (9412): Fix tuner name and comment V4L/DVB (9413): Bug: Set Auxilliary Clock Register correctly V4L/DVB (9414): Initialize DiSEqC V4L/DVB (9416): Hmmph, a proper calculation broke the working behaviour. V4L/DVB (9417): DVB_ATTACH for STB0899, STB6100, TDA8261 V4L/DVB (9418): DVB_ATTACH for STB0899, STB6100, TDA8261 V4L/DVB (9419): Bug: unnecessary large current causes large phasor errors V4L/DVB (9420): return -EINVAL for invalid parameters V4L/DVB (9421): We must wait for the PLL to stabilize V4L/DVB (9422): Bug: Fix a typo V4L/DVB (9423): Though insignificant, removes an unnecessary read of the LOCK_LOSS register, V4L/DVB (9424): Deviation from the reference, pullup is 12k instead V4L/DVB (9425): Initialize at 90MHz itself V4L/DVB (9426): Add a missing break V4L/DVB (9427): Code simplification: Sleep only for the required time interval. V4L/DVB (9431): Bug ID #19: Diseqc works properly at 90MHz only on Cut 1.1 and 2.0 V4L/DVB (9434): Limit initial RF AGC gain V4L/DVB (9435): Add post process interfaces V4L/DVB (9436): Fix a typo in the previous commit V4L/DVB (9437): Disable Symbol rate auto scan feature V4L/DVB (9439): Bug! SFRL nibble got swapped V4L/DVB (9441): Code simplification: clock is already initialized, no need to initialize again. V4L/DVB (9442): Revert back previous change to 90MHz V4L/DVB (9443): Bug: Bandwidth calculation V4L/DVB (9444): Initialize post process events to NULL V4L/DVB (9450): Code Review: #4 Consolidate configurations V4L/DVB (9451): Bug! F/3 Clock domain was incorrectly used V4L/DVB (9452): Fix invalid GCT mode V4L/DVB (9453): stb0899: fix compilation warnings V4L/DVB (9454): Fix a compile warning V4L/DVB (9455): Cleanup: remove some superfluous stuff and dead commented out code V4L/DVB (9456): Select STB0899, STB6100, TDA8261 for budget_ci and budget_av respectively. V4L/DVB (9457): Optimization, Fix a Bug V4L/DVB (9458): Bugfix: gate control needs to be handled V4L/DVB (9459): We can now reduce the debug levels, just need to look at errors only. V4L/DVB (9460): Code Simplification V4L/DVB (9461): Initialize SYSREG register V4L/DVB (9462): Allow specifying clock per device V4L/DVB (9463): Make delivery system standalone. V4L/DVB (9464): Remove unreferenced delivery V4L/DVB (9465): Fix incorrect IF_AGC Bitfield definition V4L/DVB (9466): Bug: Fix incorrect Register definitions V4L/DVB (9469): Port STB0899 and STB6100 V4L/DVB (9479): Wait for a maximum of 100mS V4L/DVB (9425): Initialize at 90MHz itself V4L/DVB (9431): Bug ID #19: Diseqc works properly at 90MHz only on Cut 1.1 and 2.0 V4L/DVB (9442): Revert back previous change to 90MHz Manuel Lauss (2): rtc: Au1000 On-Chip Counter0-as-RTC driver. hwmon: (lm70) Add TI TMP121 support Marc Eshel (1): nfsd: delete wrong file comment from nfsd/nfs4xdr.c Marc Kleine-Budde (3): imxmmc: Checkpatch cleanup imxmmc: Remove unused variables imxmmc: use readl/writel Marc Zyngier (1): [ARM] pxa: cpufreq-pxa2xx: allow frequency table selection Marcel Holtmann (10): Bluetooth: Add fine grained mem_flags usage to btusb driver Bluetooth: Handle bulk URBs in btusb driver from notify callback Bluetooth: Add suspend/resume support to btusb driver Bluetooth: Fix warnings for bt_key_strings and bt_slock_key_strings Bluetooth: Remove deprecated hci_usb driver Bluetooth: Send HCI Reset command by default on device initialization Bluetooth: Allow SCO audio with Asus WL-BTD202 dongle Bluetooth: Enable per-module dynamic debug messages Bluetooth: Fix format arguments warning Bluetooth: Fix RFCOMM release oops when device is still in use Marcelo Tosatti (7): KVM: MMU: optimize set_spte for page sync KVM: MMU: use page array in unsync walk KVM: MMU: collapse remote TLB flushes on root sync KVM: MMU: skip global pgtables on sync due to cr3 switch KVM: MMU: prepopulate the shadow on invlpg KVM: MMU: check for present pdptr shadow page in walk_shadow KVM: MMU: handle large host sptes on invlpg/resync Marcin Slusarz (3): cdrom: split mmc_ioctl to lower stack usage cdrom: reduce stack usage of mmc_ioctl_dvd_read_struct USB: emi26: fix oops on load Marco Schluessler (1): V4L/DVB (9480): Fix frontend DVBFE_ALGO_CUSTOM Search Marek Vasut (1): ASoC: Add Palm/PXA27x unified ASoC audio driver Mario Schwalbe (1): ide: Fix drive's DWORD-IO handling Mark Brown (93): ALSA: ASoC: Remove snd_soc_dapm_connect_input() ASoC: Fix handling of DAPM suspend work ASoC: Convert core to use standard debug print macros ASoC: Remove DAPM restriction on mixer control name lengths ASoC: Add PXA SSP support ASoC: Do a warm reset after cold when resetting the WM9713 ASoC: Use finer grained dependencies in SND_SOC_ALL_CODECS ASoC: Remove core version number ASoC: Revert "ASoC: Add new parameter to s3c24xx_pcm_enqueue" ASoC: Add WM8728 codec driver ASoC: Allow writes to uncached registers in WM8990 ASoC: Enable WM8990 ADC clocking workaround ASoC: Manage VMID mode for WM8990 ASoC: Build tlv320aic23 cleanly ASoC: Move uda134x_codec.h to uda134x.h ASoC: Remove unused snd_soc_machine_config declaration ASoC: s3c24xx_uda134x DAI accessor functions and static cleanup ASoC: Convert blackfin machines to use DAI accessor functions ASoC: Rename snd_soc_card to snd_soc_machine ASoC: Add abbreviation to maintainers for searchability ASoC: Move DAI structure definitions into new soc-dai.h ASoC: Merge snd_soc_ops into snd_soc_dai_ops ASoC: Add Marvell Zylonite machine support ASoC: Staticise pxa2xx_pcm_ops ASoC: Improve error reporting for AC97 reset failures ALSA: ASoC: Fix typo in snd_soc_card update documentation ASoC: Use supplied DAI for WM9713 rather than substream ASoC: Remove DAI type information ASoC: Flag AD1980 as an AC97 interface ASoC: Lower priority of resume work logging ASoC: Fix word wrapping in OMAP Kconfig ALSA: ac97 - Add WM9715 to AC97 IDs ASoC: Rename snd_soc_register_card() to snd_soc_init_card() ASoC: Annotate core removal function ASoC: Remove in-code changelog from AD73311 driver ASoC: Don't free static data in WM9713 ASoC: Push workqueue data into snd_soc_card ALSA: ac97 - Include ac97_codec.h for ac97_bus_type declaration ASoC: Push platform registration down into the card ASoC: Fix WM8903 right mixer bypass path ASoC: Push debugfs files out of the snd_soc_device structure ASoC: Remove device from platform suspend and resume operations ASoC: Remove platform device from DAI suspend and resume operations ASoC: Remove obsolete declaration of struct snd_soc_clock_info ASoC: Add card registration API ASoC: Add DAI registration API ASoC: Register platform DAIs ASoC: Add platform registration API ASoC: Register platform drivers ASoC: Register non-AC97 codec DAIs ASoC: Initial framework for dynamic card instantiation ASoC: Wait for non-AC97 codec DAIs before instantiating ASoC: Convert WM8900 to allow registration by machine code ASoC: Fix typos in Atmel module registration ASoC: Work around warnings from some build environments ALSA: Add support for mechanical jack insertion ASoC: Add codec registration API ASoC: Convert WM8900 to do more work at I2C probe time ASoC: Convert WM8903 driver to register at I2C probe time ASoC: Stop WM8903 SYSCLK when suspending ASoC: Fix variable name for Blackfin I2S DAI ALSA: Fix declaration of sound_class ASoC: Ease merge difficulties from new architectures ASoC: Complain if we fail to create DAPM controls ASoC: Add WM8350 AudioPlus codec driver [WATCHDOG] Add support for the WM8350 watchdog ASoC: Clean up kerneldoc warnings mfd: Don't mark WM8350 security register as volatile mfd: Remove i.MX31ism from WM8350 i2c driver mfd: Add some documentation for WM8350 register lock mfd: Add WM8350 revision H support mfd: Add AUXADC support for WM8350 power_supply: Add support for WM8350 PMU mfd: Switch WM8350 revision detection to a feature based model mfd: Refactor WM8350 chip identification power_supply: Add cold to the POWER_SUPPLY_HEALTH report values power_supply: Add battery health reporting for WM8350 mfd: Pass driver_data onto child devices mfd: Register WM8400 codec device mfd: Add WM8352 support mfd: Handle missing WM8350 platform data mfd: Support configurable numbers of DCDCs and ISINKs on WM8350 mfd: Add WM8351 support mfd: Add missing break from wm3850-core mfd: Fix section mismatch in da903x ASoC: Use snd_soc_dapm_nc_pin() in at91sam9g20ek ASoC: Fix SND_SOC_ALL_CODECS handling of dual SPI and I2C control buses leds: Add WM8350 LED driver regulator: Remove extraneous kerneldoc annotations regulator: Clean up kerneldoc warnings regulator: Add missing kerneldoc regulator: Fix some kerneldoc rendering issues regulator: Add basic DocBook manual Mark Fasheh (10): Btrfs: Null terminate strings passed in from userspace jbd2: Add BH_JBDPrivateStart ocfs2: turn __ocfs2_remove_inode_range() into ocfs2_remove_btree_range() ocfs2: Remove JBD compatibility layer ocfs2: Periodic quota syncing jbd2: Add BH_JBDPrivateStart ocfs2: Use BH_JBDPrivateStart instead of BH_Unshadow ocfs2: Add directory block trailers. ocfs2: remove unneeded lvb casts ocfs2: use min_t in ocfs2_quota_read() Mark Jackson (1): MIMC200: Remove deprecated call Mark Lord (3): /proc/acpi/alarm: handle day-of-month wraparound on readback V4L/DVB (10157): Add USB ID for the Sil4701 radio from DealExtreme USB: fix minor nit in usbfs checking Mark McLoughlin (28): virtio_net: Recycle some more rx buffer pages virtio_net: hook up the set-tso ethtool op virtio_net: VIRTIO_NET_F_MSG_RXBUF (imprive rcv buffer allocation) virtio_net: large tx MTU support virtio: add PCI device release() function lguest: struct device - replace bus_id with dev_name() KVM: remove the IRQ ACK notifier assertions KVM: make kvm_unregister_irq_ack_notifier() safe KVM: don't free an unallocated irq source id KVM: add KVM_USERSPACE_IRQ_SOURCE_ID assertions KVM: split out kvm_free_assigned_irq() KVM: fix handling of ACK from shared guest IRQ intel-iommu: remove some unused struct intel_iommu fields intel-iommu: make init_dmars() static intel-iommu: move DMA_32/64BIT_PFN into intel-iommu.c intel-iommu: move root entry defs from dma_remapping.h intel-iommu: move context entry defs out from dma_remapping.h intel-iommu: move DMA PTE defs out of dma_remapping.h intel-iommu: move struct dmar_domain def out dma_remapping.h intel-iommu: move struct device_domain_info out of dma_remapping.h intel-iommu: kill off duplicate def of dmar_disabled intel-iommu: move iommu_prepare_gfx_mapping() out of dma_remapping.h intel-iommu: trivially inline context entry macros intel-iommu: trivially inline DMA PTE macros driver core: add root_device_register() virtio: do not statically allocate root device lguest: do not statically allocate root device s390: remove s390_root_dev_*() Mark Nelson (5): powerpc: Add new CPU feature: CPU_FTR_UNALIGNED_LD_STD powerpc: Update 64bit memcpy() using CPU_FTR_UNALIGNED_LD_STD powerpc: Remove map_/unmap_single() from dma_mapping_ops powerpc: Update 64bit __copy_tofrom_user() using CPU_FTR_UNALIGNED_LD_STD [SCSI] ipr: fix lockdep warning from ipr_ioa_reset_done Mark van Doesburg (3): hwmon: (f71882fg) Use sensor_device_attribute_2 hwmon: (f71882fg) Misc cleanups hwmon: (f71882fg) Add PWM support Marko Schluessler (7): V4L/DVB (9388): Reference Clock is in kHz V4L/DVB (9389): Use kzalloc instead of kmalloc V4L/DVB (9390): Offset Freq has been set in reg V4L/DVB (9391): Register definition bugs V4L/DVB (9398): Initial support for the Technotrend TT S2 3200 V4L/DVB (9406): Really silly bug, setting bandwidth into frequency V4L/DVB (9428): Fix: assignment of wrong values Markus Bollinger (5): ALSA: pcxhr - add support for pcxhr stereo sound cards ALSA: pcxhr - add support for pcxhr stereo sound cards (core change) ALSA: pcxhr - add support for pcxhr stereo sound cards (firmware support) ALSA: pcxhr - add support for pcxhr stereo sound cards (mixer part) ALSA: pcxhr - change firmware filenames Markus Metzger (12): x86, bts: DS and BTS initialization x86, bts: base in-kernel ds interface on handles x86, bts, ptrace: move BTS buffer allocation from ds.c into ptrace.c x86, ftrace: call trace->open() before stopping tracing; add trace->print_header() x86, bts, ftrace: a BTS ftrace plug-in prototype x86, bts: turn BUG_ON into WARN_ON_ONCE x86, bts: provide in-kernel branch-trace interface x86, bts, ftrace: adapt the hw-branch-tracer to the ds.c interface x86, bts: remove recursion from get_context x86, bts: correctly report invalid bts records x86, bts: add fork and exit handling x86, bts: memory accounting Markus Rechberger (4): V4L/DVB (9362): zl10353: add new register configuration for zl10353/especially 6mhz taiwan. V4L/DVB (9363): tvp5150: add support to enable raw vbi V4L/DVB (9364): adding sharp s921 ISDB-T driver V4L/DVB (9365): adding lgdt3304 based driver Markus Trippelsdorf (1): x86: remove debug printks (io_apic.c) Martin Bachem (5): mISDN: Use protocol to detect D-channel mISDN: Add E-Channel logging features mISDN: Return error on E-channel access mISDN: Add ISDN_P_TE_UP0 / ISDN_P_NT_UP0 mISDN: Add layer1 prim MPH_INFORMATION_REQ Martin K. Petersen (4): [SCSI] Fix error handling for DIF/DIX [SCSI] sd: DIF: Show app tag on error [SCSI] sd: DIF: Fix tagging on platforms with signed char [SCSI] sd: Correctly handle 6-byte commands with DIX Martin Schwidefsky (25): [S390] arch_setup_additional_pages arguments [S390] introduce vdso on s390 [S390] serialize stp/etr work [S390] service level interface. [S390] __page_to_pfn warnings [S390] remove ptrace warning on 31 bit. [S390] remove warnings with functions ending in BUG [S390] Add processor type march=z10 and a processor type safety check. [S390] add new machine types to setup_hwcaps. [S390] Remove config options. [S390] clear_table inline assembly contraints [S390] panic_stack leak in smp_alloc_lowcore [S390] convert xpram printks to pr_xxx macros. [S390] convert time printks to pr_xxx macros. [S390] convert setup printks to pr_xxx macros. [S390] convert ap_bus printks to pr_xxx macros. [S390] convert sclp printks to pr_xxx macros. [S390] convert cpu related printks to pr_xxx macros. [S390] convert vmlogrdr printks to pr_xxx macros. fix scaled & unscaled cputime accounting idle cputime accounting improve precision of process accounting. improve precision of idle time detection. improve idle cputime accounting fast vdso implementation for CLOCK_THREAD_CPUTIME_ID Martin Willi (3): xfrm: Notify changes in UDP encapsulation via netlink xfrm: Accept XFRM_STATE_AF_UNSPEC SAs on IPv4/IPv6 only hosts xfrm: Accept ESP packets regardless of UDP encapsulation mode Marton Balint (1): do_mounts: add device info to mount message Martyn Welch (2): powerpc/86xx: Add use of Epson RTX-8581 RTC to GE Fanuc SBC610 dts powerpc/86xx: Basic GPIO support for GE Fanuc SBC610 Masakazu Mokuno (1): powerpc/ps3: Fix memory leak in device init Masami Hiramatsu (10): kprobes: bugfix: try_module_get even if calling_mod is NULL kprobes: indirectly call kprobe_target kprobes: add tests for register_kprobes module: add within_module_core() and within_module_init() kprobes: add kprobe_insn_mutex and cleanup arch_remove_kprobe() kprobes: add __kprobes to kprobe internal functions kprobes: support probing module __exit function kprobes: remove called_from argument module: add MODULE_STATE_LIVE notify kprobes: support probing module __init function Mathieu Desnoyers (15): rcu: add rcu_read_*_sched_notrace() markers: fix unregister markers: use rcu_*_sched_notrace and notrace markers: use module notifier markers: auto enable tracepoints (new API : trace_mark_tp()) markers: create DEFINE_MARKER and GET_MARKER (new API) tracepoints: samples, fix teardown tracepoints: fix disable tracepoints: use rcu_*_sched_notrace tracepoints: use unregister return value tracepoints: do not put arguments in name tracepoints: use modules notifiers tracepoints: add DECLARE_TRACE() and DEFINE_TRACE() tracepoints: documentation fix for teardown tracepoints, docs: marker_synchronize_unregister->tracepoint_synchronize_unregister Matias Zabaljauregui (1): lguest: move the initial guest page table creation code to the host Matt Carlson (30): tg3: Add 5761S support tg3: Use pci_ioremap_bar() tg3: Preserve DASH connectivity when WOL enabled tg3: Preserve LAA when device control is released tg3: Reclaim TG3_FLG3_5761_5784_AX_FIXES flag tg3: Do not enable APE on bcm5700 tg3: Move phylib report to end of tg3_init_one tg3: Refine power management and WOL code tg3: Allow WOL for phylib controlled Broadcom phys tg3: Refine phylib support tg3: 5785 enhancements broadcom: Add flow control support broadcom: Refine expansion register access routine broadcom: Add support for BCM50610 tg3: Update version to 3.95 tg3: Use NET_IP_ALIGN tg3: Qualify use of tp->pcix_cap tg3: Prevent corruption at 10 / 100Mbps w CLKREQ tg3: Enable GPHY APD on select devices tg3: Extract FW ver from alt NVRAM formats tg3: Embrace pci_ioremap_bar() tg3: Allow GPHY powerdown on 5761 tg3: Add 57780 support broadcom: Add 57780 support tg3: Update version to 3.96 tg3: WOL fixes tg3: Cleanup IPV6 LSO tg3: Remove unused cfgspc device members tg3: tg3.h cleanups tg3: Update version to 3.97 Matt Fleming (10): ftrace: align __mcount_loc sections sh: dynamic ftrace support. ftrace: specify $alignment for sh architecture sh: dynamic ftrace support. sh: Switch HD64461 from hw_interrupt_type to irq_chip sh: Convert Microdev boards from hw_interrupt_type to irq_chip sh: Convert SystemH board support from hw_interrupt_type to irq_chip sh: Convert Dreamcast support from hw_interrupt_type to irq_chip sh: Convert Cayman boards from hw_interrupt_type to irq_chip sh: Enable GENERIC_HARDIRQS_NO__DO_IRQ for all SuperH machines Matt Helsley (1): HID: add proper support for pensketch 12x9 tablet Matt Hsu (2): [ARM] S3C64XX: Correct the EINT IRQ type configuration [ARM] S3C64XX: Fix EINT group macro definition Matt Mackall (3): tcp: Stop scaring users with "treason uncloaked!" shmem: unify regular and tiny shmem random: don't try to look at entropy_count outside the lock Matt Palmer (2): [ARM] DNS323: Read MAC address from flash [ARM] DNS323: Initialise 88F5182 correctly Matt Reimer (2): [MTD] [NAND] pxa3xx: fix non-page-aligned reads [MTD] [NAND] pxa3xx: convert from ns to clock ticks more accurately Matthew Garrett (5): [CPUFREQ] Disable sysfs ui for p4-clockmod. Input: atkbd - broaden the Dell DMI signatures PCI/ACPI: acpiphp: Identify more removable slots dcdbas: export functionality for use in other drivers misc: add dell-laptop driver Matthew Ranostay (9): ALSA: hda: add support for jack detection on IDT/Sigmatel ALSA: hda: dynamic jack id ALSA: jack: lineout support to jack abstraction layer ALSA: hda: add snd_hda_get_jack* functions ALSA: hda: add support for jack detection on IDT codecs. ALSA: hda: STAC_DELL_M6 EAPD ALSA: hda: EAPD mute on suspend ALSA: hda: dinput_mux check ALSA: hda: fix incorrect mixer index values for 92hd83xx Matthew Wilcox (3): driver core: Rearrange struct device for better packing driver core: Remove completion from struct klist_node atomic_t: unify all arch definitions Matthias Fuchs (1): powerpc: Add ioctls for RS485 mode control of serial drivers Matthias Schwarzott (1): V4L/DVB (9477): Fix: Commit 9344 breaks tning of cx24123 Matthias Urlichs (5): mISDN: Remove the local max-card limit mISDN: Added an ioctl to change the device name mISDN: Use struct device name field mISDN: Create /sys/class/mISDN mISDN: Add MODULE_DEVICE_TABLE() to hfcpci Mauro Carvalho Chehab (95): V4L/DVB (9366): Move S921 driver to the proper place and allow it to compile V4L/DVB (9367): Move lgdt3304 driver to the proper place and allow it to compile V4L/DVB (9370): Update README.cx88 with the current status V4L/DVB (9498): Simplify video standards enumeration V4L/DVB (9532): Properly handle error messages during alsa registering V4L/DVB (9572): Whitespace cleanup V4L/DVB (9572a): Whitespace cleanup V4L/DVB (9578): v4l core: add support for enumerating frame sizes and intervals V4L/DVB (9579): v4l core: a few get ioctls were lacking memory clean V4L/DVB (9591): v4l core: fix debug printk for enumberating framerates V4L/DVB (9607): em28xx: Properly implement poll support for IR's V4L/DVB (9611): em28xx: experimental support for HVR-950 IR V4L/DVB (9612): Fix key repetition with HVR-950 IR V4L/DVB (9630): Some boards need to specify tuner address V4L/DVB (9641): Add chip ID's for em2820 and em2840 V4L/DVB (9642): Add AC97 registers found on em28xx devices V4L/DVB (9643): em28xx: remove the previous register names V4L/DVB (9649): em28xx: remove two amux entries used only on one card V4L/DVB (9650): em28xx: replace magic numbers to something more meaningful V4L/DVB (9651): em28xx: Improve audio handling V4L/DVB (9652): em28xx: merge AC97 vendor id's into a single var V4L/DVB (9653): em28xx: improve AC97 handling V4L/DVB (9669): em28xx: Fix a stupid cut-and-paste error V4L/DVB (9670): em28xx: allow specifying audio output V4L/DVB (9671): em28xx: Add detection of Sigmatel Stac97xx series of AC97 devices V4L/DVB (9672): Allow opening more than one output at the same time V4L/DVB (9673): em28xx: fix Pixelview PlayTV board entry V4L/DVB (9675): em28xx: devices with xc2028/3028 don't have tda9887 V4L/DVB (9676): em28xx: fix a regression caused by 22c90ec6a5e07173ee670dc2ca75e0df0a7772c0 V4L/DVB (9717): em28xx: improve message probing logs V4L/DVB (9747): em28xx: Properly handles XCLK and I2C speed V4L/DVB (9751): em28xx: card description cleanups V4L/DVB (9752): Remove duplicated fields on em28xx_board and em28xx structs V4L/DVB (9753): em28xx: cleanup: saa7115 module auto-detects saa711x type V4L/DVB (9754): em28xx: improve debug messages V4L/DVB (9755): em28xx: cleanup: We need just one tuner callback V4L/DVB (9758): em28xx: replace some magic by register descriptions where known V4L/DVB (9759): em28xx: move gpio tables to the top of em28xx-cards V4L/DVB (9760): em28xx: move gpio lines into board table description V4L/DVB (9761): em28xx: replace magic numbers for mux aliases V4L/DVB (9762): em28xx: fix tuner absent entries V4L/DVB (9763): em28xx: fix gpio settings V4L/DVB (9764): em28xx: Add support for suspend the device when not used V4L/DVB (9765): em28xx: move tuner gpio's to the cards struct V4L/DVB (9766): em28xx: improve probe messages V4L/DVB (9767): em28xx: improve board description messages V4L/DVB (9756): em28xx: Improve register log format V4L/DVB (9769): tuner-xc2028: powers device of when not used V4L/DVB (9770): em28xx: turn off tuner when not used V4L/DVB (9771): tuner-xc2028: fix a small warning V4L/DVB (9772): saa7134: Add support for Kworld Plus TV Analog Lite PCI V4L/DVB (9773): tda827x: fix printk message when in FM mode V4L/DVB (9774): tda827x: fix returned frequency V4L/DVB (9775): tda8290: fix FM radio V4L/DVB (9799): em28xx: fix Kworld Hybrid 330 (A316) support V4L/DVB (9909): em28xx: move dev->lock from res_free to the caller routines V4L/DVB (9910): em28xx: move res_get locks to the caller routines V4L/DVB (9911): em28xx: vidioc_try_fmt_vid_cap() doesn't need any lock V4L/DVB (9912): em28xx: fix/improve em28xx locking schema V4L/DVB (9913): tuner-xc2028: allow printing stack trace as debug on sleep code V4L/DVB (9925): tuner-core: add debug msg's when asking tuner to sleep V4L/DVB (9926): em28xx: Fix a bug that were putting xc2028/3028 tuner to sleep V4L/DVB (9927): em28xx: use a more standard way to specify video formats V4L/DVB (9930): em28xx: Fix bad locks on error condition V4L/DVB (9931): em28xx: de-obfuscate vidioc_g_ctrl logic V4L/DVB (9953): em28xx: Add suport for debugging AC97 anciliary chips V4L/DVB (9969): tvp5150: add support for VIDIOC_G_CHIP_IDENT ioctl V4L/DVB (9970): em28xx: Allow get/set registers for debug on i2c slave chips V4L/DVB (9977): Kbuild: fix compilation when dib7000p is not defined V4L/DVB (9979): em28xx: move usb probe code to a proper place V4L/DVB (9980): em28xx: simplify analog logic V4L/DVB (10106): gscpa - stv06xx: Fix compilation with kernel tree V4L/DVB (10107): More than one driver defines the same var name (dump_bridge). Add V4L/DVB (10109): anysee: Fix usage of an unitialized function V4L/DVB (10110): v4l2-ioctl: Fix warnings when using .unlocked_ioctl = __video_ioctl2 V4L/DVB (10111): quickcam_messenger.c: fix a warning V4L/DVB (10111a): usbvideo.h: remove an useless blank line V4L/DVB (10116): af9013: Fix gcc false warnings V4L/DVB (10118): zoran: fix warning for a variable not used V4L/DVB (10154): saa7134: fix a merge conflict on Behold H6 board V4L/DVB (10160): em28xx: update chip id for em2710 V4L/DVB (10162): tuner-simple: Fix tuner type set message V4L/DVB (10163): em28xx: allocate adev together with struct em28xx dev V4L/DVB (10166): dvb frontend: stop using non-C99 compliant comments Staging: go7007: Convert driver to use video_ioctl2 edac: driver for i5400 MCH (Seaburg) edac: driver for i5400 MCH (update) V4L/DVB (10177): Fix sparse warnings on em28xx V4L/DVB (10178): dvb_frontend: Fix some sparse warnings due to static symbols V4L/DVB (10179): tda8290: Fix two sparse warnings V4L/DVB (10180): drivers/media: Fix a number of sparse warnings V4L/DVB (10181): v4l2-device: Fix some sparse warnings V4L/DVB (10189): dm1105: Fix build with INPUT=m and DVB_DM1105=y V4L/DVB (10190): cx88: Fix some Kbuild troubles V4L/DVB (10191a): Update MAINTAINERS entries on media drivers Mel Gorman (2): mm: report the pagesize backing a VMA in /proc/pid/smaps mm: report the MMU pagesize in /proc/pid/smaps Melissa Howland (1): [S390] convert monwriter printks to pr_xxx macros. Miao Xie (1): cpusets: set task's cpu_allowed to cpu_possible_map when attaching it into top cpuset Michael Buesch (4): b43: Fix some MAC locking b43: Suspend MAC while killing the radio b43: Add key memory dumping parport: ieee1284: use del_timer_sync() in parport_wait_event() Michael Chan (7): bnx2: Add PCI ID for 5716S. bnx2: Restrict WoL support. bnx2: Set rx buffer water marks based on MTU. bnx2: Reorganize timeout constants. bnx2: Update version to 1.8.2. bnx2: Rename MSI-X vectors. bnx2: Update version to 1.9.0. Michael Ellerman (6): of: Add helpers for finding device nodes which have a given property powerpc: Use for_each_node_with_property() in of_irq_map_init() powerpc: Use of_find_node_with_property() in cell_iommu_fixed_mapping_init() powerpc/pmac: Use of_find_node_with_property() in pmac_setup_arch() IB/ipath: Fix pointer-to-pointer thinko in ipath_fs.c powerpc/iseries: Kexec is known not to work on iseries Michael Ernst (1): [S390] convert cio printks to pr_xxx macros. Michael Halcrow (9): eCryptfs: Filename Encryption: Tag 70 packets eCryptfs: Filename Encryption: Header updates eCryptfs: Filename Encryption: Encoding and encryption functions eCryptfs: Filename Encryption: filldir, lookup, and readlink eCryptfs: Filename Encryption: mount option eCryptfs: Replace %Z with %z eCryptfs: Fix data types (int/size_t) eCryptfs: kerneldoc for ecryptfs_parse_tag_70_packet() eCryptfs: Clean up ecryptfs_decode_from_filename() Michael Hennerich (20): Blackfin arch: BF538/9 Linux kernel Support Blackfin arch: lookup channel2irq() only once Blackfin arch: Remove useless SSYNCs in DMA code Blackfin arch: remove most BUG_ON channel checks Blackfin arch: don't assume a specific SPI flash part - take whatever you probe Blackfin arch: Enable ISP1760 USB Host Driver in platform device initialization code. Blackfin arch: Cleanup and unify Blackfin IRQ and GPIO IRQ handling Blackfin arch: Convert Blackfin GPIO driver to use common gpiolib/gpiochip infrastructure Blackfin arch: Fix BUG - Kernel does not link when CONFIG_CPU_FREQ_STAT=m Blackfin arch: Fix bug - change cpufreq doesn't take effect on bf537 now ASoC: Fix Blackfin AC97 DAI probe function return code V4L/DVB (9660): uvcvideo: Fix unaligned memory access. Blackfin arch: fix bugs and unify BFIN_KERNEL_CLOCK option Blackfin arch: gpio.h split into machine subfolders like already done for BF54x Blackfin arch: fix bug - kernel build fails with undefined reference to pm_overflow_handler Blackfin arch: Add BF537-STAMP platform support for ENC28J60 SPI Ethernet MAC Blackfin arch: ADP5588 QWERTY I2C Keyboard Input device driver Blackfin arch: Make the interrupt edge and polarity type configurable based on IORESOURCE_BITS Blackfin arch: Add AD7879 defaults for the Blackfin Landscape LCD EZ-Extender Blackfin arch: fix bug - kernel crash after config IP for ethernet port Michael Hillmann (1): Staging: comedi: add me_daq driver Michael Holzheu (3): [S390] convert hypfs printks to pr_xxx macros. [S390] convert s390 debug feature printks to pr_xxx macros. [S390] convert zfcp dumper printks to pr_xxx macros. Michael Kerrisk (1): inotify: fix type errors in interfaces Michael Krufky (11): V4L/DVB (9734): sms1xxx: add functions to configure and set gpio V4L/DVB (9733): sms1xxx: add autodetection support for Hauppauge WinTV MiniCard V4L/DVB (9735): sms1xxx: turn off LEDs after initialization of Hauppauge WinTV MiniStick V4L/DVB (9736): sms1xxx: enable power LED on Hauppauge WinTV MiniStick V4L/DVB (9738): sms1xxx: fix invalid unc readings V4L/DVB (9739): sms1xxx: enable signal quality indicator LEDs on Hauppauge WinTV MiniStick V4L/DVB (9737): sms1xxx: enable LNA control on Hauppauge WinTV MiniCard V4L/DVB (10167): sms1xxx: add support for inverted gpio V4L/DVB (10168): sms1xxx: fix inverted gpio for lna control on tiger r2 V4L/DVB (10170): tuner-simple: prevent possible OOPS caused by divide by zero error V4L/DVB (10182): tda8290: fix TDA8290 + TDA18271 initialization Michael Marineau (1): net: Fix for initial link state in 2.6.28 Michael McTernan (1): Blackfin arch: add const to some function prototype and struct dma_channel Michael Tokarev (2): x86: fix missing space in printk x86: fix missing space in printk, #2 Michael Trimarchi (2): serial: sh-sci: Codestyle cleanup patch. sh: Add SH-4A optimized fastpath mutex implementation. Michal Schmidt (1): selinux: recognize netlink messages for 'ip addrlabel' Miguel (3): Btrfs: Endianess bug fix for v0.13 with kernels Btrfs: define write_cache_pages for linux kernel <= 2.6.20 instead Btrfs: bio_endio support for linux 2.6.23 and older. Mikael Pettersson (1): x86, signals: remove duplicated register setup code in ia32 signal delivery Mike Chan (1): [CPUFREQ] Fix on resume, now preserves user policy min/max. Mike Christie (13): [SCSI] iscsi_tcp: prepare helpers for LLDs that can offload some operations [SCSI] libiscsi: prepare libiscsi for new offload engines by modifying unsol data code [SCSI] iser: convert iser to new alloc_pdu api [SCSI] iscsi_tcp: convert to new alloc_hdr api [SCSI] iscsi_tcp: remove unused r2t handling [SCSI] libiscsi: change login data buffer allocation [SCSI] iscsi_tcp: add iscsi_tcp prefix to iscsi_tcp functions [SCSI] iscsi_tcp: split module into lib and lld [SCSI] iscsi_tcp: hook iscsi_tcp into new libiscsi_tcp module [SCSI] libiscsi: allow drivers to modify the itt sent to the target [SCSI] libiscsi: pass opcode into alloc_pdu callout [SCSI] libiscsi: handle init task failures. [SCSI] libiscsi_tcp: support padding offload Mike Day (1): intel-iommu: fix bit shift at DOMAIN_FLAG_P2P_MULTIPLE_DEVICES Mike Frysinger (121): Blackfin arch: unify duplicated bss init code Blackfin arch: move EXPORT_SYMBOL to the place where it is actually defined Blackfin arch: add an option to allow people to stick exception stack into L1 scratch Blackfin arch: drop unused exports and comment remaining exports Blackfin arch: drop redundant BFIN_DMA_5XX depends Blackfin arch: put quotes around error to silence a ton of warnings from gcc-4.3 Blackfin arch: remove unused local define Blackfin arch: unify check_gpio() to reduce arch differences Blackfin arch: fix cmp_label() so it doesnt incorrectly accept partial leading matches Blackfin arch: unify peripheral_request() to reduce arch differences Blackfin arch: unify port_setup() to reduce arch differences Blackfin arch: refine the gpio check Blackfin arch: update anomaly lists to match latest sheets Blackfin arch: only add IFLUSH nop padding when anomaly 443 is enabled smc91x: add __init markings to smc_drv_probe() Blackfin arch: update defconfig file for all boards Blackfin arch: use sti to set the mask rather than banging on imask Blackfin arch: do not bother initializing the first 4k Blackfin arch: fixup get_user() macros Blackfin arch: enable i2c_bfin_twi0_device in cm_bf548 board Blackfin arch: remove useless SSYNC() in irq priority code Blackfin arch: use physmap in board resources rather than legacy config method Blackfin arch: fix unused warning for some blackfin derivatives Blackfin arch: make ADI board names consistent Blackfin arch: rewrite blackfin_invalidate_entire_dcache function Blackfin arch: overlay thread.usp over PT_USP Blackfin arch: delete old comments and NO_IRQ define Blackfin arch: move ack_bad_irq() prototype to hardirq.h to match other arches Blackfin arch: move SIC_SYSIRQ() to the one file that actually uses it Blackfin arch: dont export ack_bad_irq as no one else does Blackfin arch: delay PLL_CTL/VR_CTL wrappers Blackfin arch: set PM_WAKEUP_GPIO_NUMBER default to 2 for everyone Blackfin arch: remove superficial check on blackfin watchdog Blackfin arch: move fixed code into init section Blackfin arch: delete unused vars and add parenthesis to fixup warnings Blackfin arch: fix off-by-one errors on end of memory range Blackfin arch: introduce an IM_MEM macro to kgdb Blackfin arch: move the PORT registers down Blackfin arch: move out irq related functions Blackfin arch: rename irq_flags to bfin_irq_flags Blackfin arch: do not define decode_instruction if hwtrace is turned off Blackfin arch: fix building with CONFIG_DEBUG_DOUBLEFAULT Blackfin arch: cleanup the time.c code Blackfin arch: use generic xor.h Blackfin arch: rename cache_lock() to bfin_cache_lock() Blackfin arch: add mmiowb() as some drivers expect Blackfin arch: remove BFIN_DMA_5XX option Blackfin arch: define BASE_BAUD like everyone else Blackfin arch: unify cplbinfo files Blackfin arch: remove pointless define IN_KERNEL Blackfin arch: change return value Blackfin arch: do not include init sections in the kernel lock down as it gets released afterwards Blackfin arch: noMMU CPLB lookup tables can be in L1 SRAM Blackfin arch: make ROM_BASE depend on ROMKERNEL Blackfin arch: add BUG_ON() checks to make sure we dont overflow the cplb tables Blackfin arch: only define HI/LO macros for assembly files Blackfin arch: add ANOMALY_05000435 to our headers Blackfin arch: fix bug - reboot fails on BF527 ASoC: Blackfin: updates Kconfig for SPORT ASoC: Blackfin: do not force TWI bus for ssm2602 codec ASoC: Blackfin: always set a default value for that GPIO range netdev/smc91x: unify Blackfin code a bit and use proper read/write functions kbuild: kill output in silent mode of mkcompile_h kbuild: introduce $(kecho) convenience echo kbuild: use KECHO convenience echo [MTD] physmap: make physmap compat explicit linux/timex.h: cleanup for userspace Input: map_to_7segment.h - convert to __inline__ for userspace V4L/DVB (10149): ttusb-budget: make it depend on PCI V4L/DVB (10150): ttusb-dec: make it depend on PCI headers_check.pl: disallow extern's kbuild: in headers_install autoconvert asm/inline/volatile to __xxx__ UIO: uio_pdrv_genirq: allow custom irq_flags autodetect_raid: add missing __init marking checkpatch: try to catch missing VMLINUX_SYMBOL() in vmlinux.lds.h genrtc: disable genrtc on Blackfin systems Blackfin arch: delete now unused "cclk" member of blackfin_cpudata Blackfin arch: do not allow L2 to be cached on BF561 SMP Blackfin arch: add simple-gpio resources to all adi/tinyboards Blackfin arch: rewrite cplbinfo to use seq files Blackfin arch: cleanup the header file comments Blackfin arch: tweak the BUG_ON() check to allow for equal values Blackfin arch: rename MAX_BLACKFIN_DMA_CHANNEL to MAX_DMA_CHANNELS to match everyone else Blackfin arch: remove #if check on L2_LENGTH Blackfin arch: dma_memcpy() - do not return NULL when transferring a multiple of 65k Blackfin arch: Set TWI/I2C Clock to 100kHz Blackfin arch: cleanup - use scm for changelog, not file headers Blackfin arch: push bf561 PERIPHERAL_MAP oddity into bf561-specific code Blackfin arch: check pointers in safe_dma_memcpy Blackfin arch: rewrite dma_memcpy() and dma in/out functions Blackfin arch: enable DEBUG_KERNEL for ADI boards Blackfin arch: include linux/mm.h since we use PAGE_ALIGN and such Blackfin arch: drop custom dma_interrupt_t and just use irq_handler_t Blackfin arch: drop irq_callback from struct dma_channel Blackfin arch: set_dma_callback: do not store .irq Blackfin arch: dma header file: strip down includes to only necessary ones Blackfin arch: move most dma functions into static inlines Blackfin arch: desc_ptr is a pointer, so declare it as such Blackfin arch: request_dma() returns 0 on success, not channel Blackfin arch: push cache flushing up to dma_memcpy Blackfin arch: add bfin_read_MDMA_S0_CONFIG compat for dma_memcpy Blackfin arch: dma code: cannot simply OR the ndsize Blackfin arch: add __must_check markings to our user functions like other arches Blackfin arch: stub out pgprot_noncached() like other people seem to do on nommu Blackfin arch: remove unused members of dma_channel struct Blackfin arch: add volatile markings to DMA MMRs Blackfin arch: add get_dma_config() func to match set_dma_config() Blackfin arch: add __init markings to Blackfin timer init functions Blackfin arch: show_cpuinfo - consolidate ugly casts Blackfin arch: allow clkin_hz to be specified on the command line Blackfin arch: do not allow people to pass in a diff clkin_hz value Blackfin arch: update anomaly headers to match latest sheets Blackfin arch: merge kgdb test code using common CONFIG_KGDB_TESTS Blackfin arch: cleanup and unify the ins functions Blackfin arch: rewrite get_sclk()/get_vco() Blackfin arch: change HWTRACE Kconfig and set it on default Blackfin arch: add () to avoid warnings from gcc Blackfin arch: fix typo in early printk bit size processing Blackfin arch: drop ad73311 test code Blackfin arch: fix bug: kernel crash when enable SDIO host driver [S390] asm-s390/posix_types.h: drop __USE_ALL usage Mike Galbraith (2): sched: fix wakeup preemption clock sched: fix sched_slice() Mike Lockwood (2): Staging: android: add timed_gpio driver Staging: android: timed_gpio: Rename android_timed_gpio to timed_gpio Mike Rapoport (8): V4L/DVB (10076): v4l: add chip ID for MT9M112 camera sensor from Micron V4L/DVB (10077): mt9m111: add support for mt9m112 since sensors seem identical mfd: Dialog DA9030 battery charger MFD driver power_supply: Add Dialog DA9030 battery charger driver regulator: da903x: add '\n' to error messages regulator: da903x: make da903x_is_enabled return 0 or 1 regulator: move set_machine_constraints after regulator device initialization backlight: add support for Toppoly TDO35S series to tdo24m lcd driver Mike Travis (41): x86/uv: provide a System Activity Indicator driver x86/uv: update SCIR driver to use the idle_cpu() function sched: reduce stack size requirements in kernel/sched.c x86: fix build error with post-merge of tip/cpus4096 and rr-for-ingo/master. x86: enable MAXSMP x86 smp: modify send_IPI_mask interface to accept cpumask_t pointers x86: move and enhance debug printk for nr_cpu_ids etc. x86: Add cpu_mask_to_apicid_and x86: update add-cpu_mask_to_apicid_and to use struct cpumask* x86: Update io_apic.c to use new cpumask API xen: convert to cpumask_var_t and new cpumask primitives. x86: fixup_irqs() doesnt need an argument. x86: cosmetic changes apic-related files. x86: Set CONFIG_NR_CPUS even on UP x86: prepare for cpumask iterators to only go to nr_cpu_ids x86: Use cpumask accessors code for possible/present maps. x86: Remove cpumask games in x86/kernel/cpu/intel_cacheinfo.c x86: use work_on_cpu in x86/kernel/cpu/mcheck/mce_amd_64.c x86: xen: use smp_call_function_many() x86: Introduce topology_core_cpumask()/topology_thread_cpumask() x86: fix cpu_mask_to_apicid_and to include cpu_online_mask x86: use possible_cpus=NUM to extend the possible cpus allowed cpumask: Add alloc_cpumask_var_node() cpumask: documentation for cpumask_var_t cpumask: add sysfs displays for configured and disabled cpu maps sysfs: add documentation to cputopology.txt for system cpumasks Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask into merge-rr-cpumask x86: enable cpus display of kernel_max and offlined cpus sched: put back some stack hog changes that were undone in kernel/sched.c x86: cleanup some remaining usages of NR_CPUS where s/b nr_cpu_ids cpumask: use alloc_cpumask_var_node where appropriate cpumask: fix compile error when CONFIG_NR_CPUS is not defined ia64: cpumask fix for is_affinity_mask_valid() cpumask: update local_cpus_show to use new cpumask API cpumask: update pci_bus_show_cpuaffinity to use new cpumask API x86: cleanup remaining cpumask_t ops in smpboot code cpumask: use work_on_cpu in acpi/cstate.c cpumask: use cpumask_var_t in acpi-cpufreq.c cpumask: use work_on_cpu in acpi-cpufreq.c for drv_read and drv_write cpumask: use work_on_cpu in acpi-cpufreq.c for read_measured_perf_ctrs x86: fix x86_32 builds for summit and es7000 arch's Miklos Szeredi (3): fuse: style fixes fuse: update interface version fuse: fix sparse warning in ioctl Mikulas Patocka (4): dm table: drop reference at unbind dm snapshot: change yield to msleep dm: consolidate target deregistration error handling dm table: rework reference counting Milan Broz (6): loop: Flush possible running bios when loop device is released. loop: Do not call loop_unplug for not configured loop device. dm log: move region_size validation dm log: ensure log bitmap fits on log device dm ioctl: allow dm_copy_name_and_uuid to return only one field dm: add name and uuid to sysfs Milton Miller (3): powerpc: Provide a separate handler for each IPI action powerpc/mpic: Use new smp_request_message_ipi scsi-ioctl: use clock_t <> jiffies Ming Lei (4): kobject: return the result of uevent sending by netlink kernel/ksysfs.c:fix dependence on CONFIG_NET driver core:fix duplicate removing driver link in __device_release_driver USB: mark "reject" field of struct urb as atomic_t Mingming (1): btrfs delete ordered inode handling fix Miquel van Smoorenburg (1): do_mpage_readpage(): don't submit lots of small bios on boundary Misael Lopez Cruz (1): ASoC: Add support for TI SDP3430 Mohamed Abbas (6): iwlwifi: clear scanning bits upon failure iwlwifi: do not call statistics from rfkill iwlagn: fix resume for ADHOC network iwl3945: fix resume for ADHOC network iwlwifi: fix resume while txpower off iwlagn: fix agn rate scaling Mohan Kumar M (1): powerpc: Enable RELOCATABLE option for CRASH_DUMP Naresh Medisetty (2): ASoC: DaVinci: Audio: Fix swapping of channels at start of stereo playback ASoC: DaVinci: Fix audio stall when doing full duplex Nathan Lynch (8): powerpc: Move smp_hw_index to 32-bit code powerpc/powermac: Use set_hard_smp_processor_id() instead of smp_hw_index powerpc/pseries: Check for GIQ indicator before calling set-indicator powerpc: Add of_find_next_cache_node() powerpc: Convert cpu_to_l2cache() to of_find_next_cache_node() powerpc: Convert sysfs cache code to of_find_next_cache_node() ehea: use get_zeroed_page for alignment-sensitive allocation powerpc: Rewrite sysfs processor cache info code Neil Brown (1): block: fix bug in ptbl lookup cache Neil Horman (5): x86: unify appropriate bits from dumpstack_32 and dumpstack_64 net: implement emergency route cache rebulds when gc_elasticity is exceeded net: Remove unused netdev arg from some NAPI interfaces. crypto: testmgr - Trigger a panic when self test fails in FIPS mode crypto: ansi_cprng - Allow resetting of DT value Neil Turton (1): sfc: Add option to use a separate channel for TX completions NeilBrown (7): md: fix bitmap-on-external-file bug. md: use sysfs_notify_dirent to notify changes to md/sync_action. md: move allocation of ->queue from mddev_find to md_probe md: centralise all freeing of an 'mddev' in 'md_free' md: make devices disappear when they are no longer needed. md: Allow md devices to be created by name. md: don't retry recovery of raid1 that fails due to error on source drive. Nguyen Anh Quynh (1): USB: another unusual_devs entry for another bad Argosy storage device Nick Andrew (17): wireless: Fix incorrect use of loose in wext.c net: Fix incorrect use of loose in spider_net.c slub: Fix incorrect use of loose Fix incorrect use of loose in c-checksum.c trivial: Fix incorrect use of "loose" in event.c trivial: Fix misspelled firmware in Kconfig trivial: Fix misspelling of "firmware" in atmel.c trivial: Fix misspelling of "firmware" in ipw2100.c trivial: Fix misspelling of "firmware" in acpi_memhotplug.c trivial: Fix misspelling of "firmware" in ql4_mbx.c trivial: Fix misspelling of "firmware" in megaraid.c trivial: Fix misspelling of "firmware" in a100u2w.c trivial: Fix misspelling of "firmware" in qla1280.c trivial: Fix misspelling of "firmware" in usb.c trivial: Fix misspelling of "firmware" in powerpc Makefile trivial: Fix misspelling of "firmware" in docs for ncr53c8xx/sym53c8xx Blackfin arch: Fix incorrect use of loose in cpufreq.c Nick Kossifidis (3): ath5k: Update interrupt masking code ath5k: Update PCU code ath5k: Fix IMR init Nick Pelly (1): Bluetooth: Respect HCI_UART_DEBUG config in hci_ll.c Nick Piggin (27): x86: some lock annotations for user copy paths x86: some lock annotations for user copy paths, v2 sched: improve preempt debugging x86, mm: enable GBPAGES option by default powerpc: Optimise smp_wmb powerpc: Optimise smp_rmb powerpc: Optimise mutex shrink struct dentry fs: symlink write_begin allocation context fix mm lockless pagecache barrier fix mm: don't mark_page_accessed in fault path mm: invoke oom-killer from page fault mm: write_cache_pages cyclic fix mm: write_cache_pages early loop termination mm: write_cache_pages writepage error fix mm: write_cache_pages integrity fix mm: write_cache_pages cleanups mm: write_cache_pages optimise page cleaning mm: write_cache_pages terminate quickly mm: do_sync_mapping_range integrity fix mm: vmalloc use mutex for purge mm: vmalloc make lazy unmapping configurable mm: direct IO starvation improvement fs: remove WB_SYNC_HOLD fs: sync_sb_inodes fix fs: sys_sync fix mm: pagecache gfp flags fix Nicolas Dichtel (1): xfrm6: handling fragment Nicolas Ferre (2): mmc: at91_mci: reorder timer setup and mmc_add_host() call atmel-mci: move atmel-mci.h file to include/linux Nicolas Palix (5): drivers/hvc: Add missing of_node_put sparc: Add missing of_node_put powerpc/chrp: Add missing of_node_put in pci.c drivers/macintosh: Add missing of_node_put in therm_adt746x.c powerpc/powermac: Add missing of_node_put Nicolas Pitre (14): [ARM] fix a couple clear_user_highpage assembly constraints [ARM] rationalize memory configuration code some more [ARM] split highmem into its own memory bank [ARM] mem_init() cleanups [ARM] prevent the vmalloc cmdline argument from eating all memory [ARM] remove bogus #ifdef CONFIG_HIGHMEM in show_pte() [ARM] unconditionally define __virt_to_phys and __phys_to_virt [ARM] remove a common set of __virt_to_bus definitions [ARM] Feroceon: pass proper -mtune argument to gcc [ARM] Kirkwood: update defconfig [ARM] 5359/1: Kirkwood: fix compilation error [ARM] 5360/1: Orion: fix compilation error [ARM] 5361/1: mv78xx0: fix compilation error [ARM] 5357/1: Kirkwood: add missing ge01 tclk initialization Niels de Vos (2): x86, apm: remove CONFIG_APM_REAL_MODE_POWER_OFF in favor of a kernel parameter serial: set correct baud_base for Oxford Semiconductor Ltd EXSYS EX-41092 Dual 16950 Serial adapter Nikanth Karthikesan (4): tracepoints: Documentation TPPROTO misspelt in Documentation/tracepoints.txt Do not free io context when taking recursive faults in do_exit Documentation: remove reference to ll_rw_blk.c and moved drivers/block/elevator.c memcg: check group leader fix Nishanth Menon (1): i2c-omap: FIFO handling support and broken hw workaround for i2c-omap Nitin A Kamble (2): KVM: Fix cpuid leaf 0xb loop termination KVM: Fix cpuid iteration on multiple leaves per eac Niv Sardi (1): Merge branch 'master' of git://oss.sgi.com:8090/xfs/linux-2.6 Nobuhiro Iwamatsu (2): sh: sh7760fb: Fix color pallette setting sh: sh7760fb: Add support SH7720/SH7721 of Renesas Nuno Lucas (1): Input: usbtouchscreen - fix TSC-10 DM USB controllers without EEPROM NĂ©meth MĂ¡rton (1): V4L/DVB (10128): modify V4L documentation to be a valid XHTML OGAWA Hirofumi (3): fat: drop negative dentry on rename() path fat: fix duplicate addition of ->llseek handler slub: Add might_sleep_if() to slab_alloc() Olaf Dabrunz (4): pci: add PCI IDs for devices that need boot irq quirks PCI quirks: add quirk to disable boot interrupt generation on broadcom HT1000 PCI quirks: disable AMD/ATI legacy boot interrupt generation PCI quirks: call boot IRQ quirks at end of device init and during resume Oldrich Jedlicka (1): V4L/DVB (9667): Fixed typo in sizeof() causing NULL pointer OOPS Oleg Nesterov (7): account_steal_time: kill the unneeded account_group_system_time() thread_group_cputime: kill the bogus ->signal != NULL check thread_group_cputime: move a couple of callsites outside of ->siglock posix-timers: use "struct pid*" instead of "struct task_struct*" posix-timers: check ->it_signal instead of ->it_pid to validate the timer posix-timers: simplify de_thread()->exit_itimers() path mm: introduce get_mm_hiwater_xxx(), fix taskstats->hiwater_xxx accounting Olga Kornievskaia (6): nfsd: pass client principal name in rsc downcall rpc: pass target name down to rpc level on callbacks rpc: allow gss callbacks to client nfsd: support callbacks with gss flavors rpc: add target field to new upcall rpc: add service field to new upcall Oliver Hartkopp (4): vcan: convert to net_device_ops vcan: whitespace fixes can: update can-bcm for hrtimer hardirq callbacks can: omit unneeded skb_clone() calls Oliver Neukum (11): net: prepare usb net drivers for addition of status as a parameter net: startup race in hso driver HID: hiddev cleanup -- handle all error conditions properly HID: fix reference count leak hidraw Staging: at76_usb: cleanup dma on stack issues Staging: go7007: small cleanup USB: storage: extend unusual range for 067b:3507 USB: power availability check for berry_charge USB: extension of anchor API to unpoison an anchor net: switch kaweth driver to netdevops net: convert pegasus driver to net_device_ops Ozan ÇaÄŸlayan (1): Input: i8042 - add Gigabyte M912 netbook to noloop exception table PJ Waskiewicz (1): ixgbe: Fix usage of netif_*_all_queues() with netif_carrier_{off|on}() Pablo Neira Ayuso (7): netfilter: ctnetlink: use nf_conntrack_get instead of atomic_inc netfilter: ctnetlink: use EOPNOTSUPP instead of EINVAL if the conntrack has no helper netfilter: ctnetlink: get rid of module refcounting in ctnetlink netfilter: nf_conntrack: connection tracking helper name persistent aliases netfilter: ctnetlink: helper modules load-on-demand support netfilter: ctnetlink: deliver events for conntracks changed from userspace filter: add SKF_AD_NLATTR_NEST to look for nested attributes Pallipadi, Venkatesh (1): cpuidle: Add decaying history logic to menu idle predictor Parag Warudkar (1): HID: make boot protocol drivers depend on EMBEDDED Pascal Terjan (1): slab: Fix comment on #endif Patrice Levesque (1): V4L/DVB (9529): cx88: add a second PCI ID for ATI TV Wonder Pro Patrick Boettcher (4): V4L/DVB (9811): Add support for the CX24113 DVB-S tuner driver V4L/DVB (9812): [PATCH] short help for Technisat cards to select the right configuration V4L/DVB (9887): Minor fixes for cx24113-driver (codingstyle) V4L/DVB (9889): CX24113: Fixed more typos Patrick McHardy (17): netlink: constify struct nlattr * arg to parsing functions pkt_sched: Add ->peek() methods for fifo, prio and SFQ qdiscs. netfilter: nfnetlink_log: fix warning and prototype mismatch netfilter: nf_conntrack: fix warning and prototype mismatch netlink: avoid memset of 0 bytes sparse warning pkt_sched: add DRR scheduler pkt_sched: remove unnecessary xchg() in packet schedulers pkt_sched: remove unnecessary xchg() in packet classifiers netfilter: nf_conntrack_proto_sctp: avoid bogus warning netfilter: nf_conntrack_ftp: change "partial ..." message to pr_debug() pkt_sched: sch_drr: fix drr_dequeue loop() netlink: allow empty nested attributes crypto: hifn_795x - Fix DMA setup crypto: hifn_795x - Don't copy src sg list crypto: hifn_795x - Fix request context corruption crypto: hifn_795x - Fix queue processing crypto: hifn_795x - Remove some unused cruft Paul Bolle (1): trivial: Add a space (and a comma) to a printk in 8250 driver Paul E. McKenney (8): rcu: increase RCU stall-check timeouts Document RCU and unloadable modules rcu: fix rcutorture behavior during reboot "Tree RCU": scalable classic RCU implementation rcu: fix rcutree grace-period-latency bug on small systems rcu: make treercu safe for suspend and resume rcu: eliminate synchronize_rcu_xxx macro rcu: fix rcutorture bug Paul Fox (1): Input: psmouse - add module parameters to control OLPC touchpad delays Paul Mackerras (13): powerpc: Improve resolution of VDSO clock_gettime powerpc: Eliminate unused do_gtod variable Merge branch 'linux-2.6' into next powerpc: Tell gcc when we clobber the carry in inline asm Merge branch 'linux-2.6' into next Merge branch 'merge' Merge branch 'merge' into next Merge branch 'next' of master.kernel.org:/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx into next Merge branch 'linux-2.6' into next powerpc: Fix KVM build on ppc440 Update powerpc maintainers Allow times and time system calls to return small negative values powerpc: Fix pciconfig_iobase system call on PCI-Express powermac Paul Menage (4): cgroups: make cgroup_path() RCU-safe cgroups: add a per-subsystem hierarchy_mutex cgroups: use hierarchy_mutex in memory controller cgroups: add css_tryget() Paul Moore (2): netlabel: Update kernel configuration API selinux: Deprecate and schedule the removal of the the compat_net functionality Paul Mundt (77): sh: Move arch_get_unmapped_area() in to arch/sh/mm/mmap.c. media: sh_mobile_ceu_camera: Add HAVE_CLK dependency. usb: Fix up sh_mobile usbf clock framework warnings. sh: Fix clock framework compiler warnings. sh: __udivdi3 -> do_div() in softfloat lib. sh: Migrate necessary libgcc bits in to arch/sh/lib for SUPERH32. sh: Specify sane default image targets for the SH-2 platforms. sh: Convert to generic bitops for IRQ-toggling implementation. sh: Add exports for __udivsi3/__sdivsi3 and the _i4 versions. sh: Add -m4al tuning for SH4AL-DSP. sh: Provide optimized non-atomic bitops for SH-2A. sh: Provide optimized unaligned loads on SH-4A. sh: More movmem alias symbol exports for older compilers. sh: Re-add support for best fit ISA tuning if none is available. sh: Add a few more branch types to the branch emulator. sh: Add a simple code dumper for SUPERH32 show_regs(). sh: Tidy up backtrace formatting with kallsyms disabled. sh: do not latency trace idle. sh: Consolidate cpu_relax()/cpu_sleep() definitions across _32/_64. sh: Split out the idle loop for reuse between _32/_64 variants. sh: Provide a dyn_arch_ftrace struct definition. sh: Fix up the SH-4A mutex fastpath semantics. sh: Disable -Werror for arch/sh/oprofile/. sh: Provide ftrace_make_call()/ftrace_make_nop(). sh: Consolidate rsk7203/7201 in to a new mach-rsk. sh: Enable leds-gpio in rsk7203 defconfig. sh: Update rsk701_defconfig to reflect mach-rsk changes. sh: Fix an off-by-1 check in __mutex_fastpath_unlock(). sh: Drop the special qemu defconfig. sh: mach-migor: Kill off unused Migo-R machvec. sh: Kill off sh64's unused alloc/free_task_struct() definitions. sh: Convert sh64 /proc/asids to debugfs and generic sh. sh: Fix up the cpu_asid() return value on nommu. sh: Fix up syscall_get_nr() comment in syscall_32.h. sh: Handle cases where setup{_rt,}_frame() fail on SH-5 signal delivery. sh: Provide asm/syscall.h for SH-5. sh: Provide linux/regset.h interface for SH-5. sh: Enable HAVE_ARCH_TRACEHOOK for all SH, now that SH-5 supports it too. sh: Generic kgdb stub support. serial: sh-sci: Implement CONSOLE_POLL support and kill off old kgdb console. sh: Kill off remaining CONFIG_SH_KGDB bits. sh: Add SH-5 optimized memcpy()/memset()/strcpy()/strlen(). fb: SH-5 uses __raw I/O accessors now also, drop the special casing. sh: Provide sdivsi3/udivsi3/udivdi3 for sh64, kill off libgcc linking. sh: oprofile: Refactor common setup code for multiple driver support. sh: oprofile: Convert op_model_sh7750 to new common interface. serial: sh-sci: Fix up the cpufreq notifier to use the proper port clock. serial: sh-sci: pr_debug() -> dev_dbg() conversion. serial: sh-sci: Tidy up fifo overrun error handling. serial: sh-sci: Generalize port pin initialization. sh: Run sh_bios through a long overdue Lindent. sh: export sh_bios_get_node_addr() symbol for stnic module. sh: Kill off sh_bios_in_gdb_mode(). sh: Kill off the cayman and microdev special heartbeat code. sh: Kill off mv_heartbeat() from the machvec. sh: Simplify kernel_thread_helper() for sh32. sh: Kill off dead mv_init_pci() from machvec. sh: board-shmin: Convert shmin to use __set_io_port_base(). sh: mach-sh03: Move off of cf_enabler to pata_platform, as per landisk. sh: mach-sh03: Use __set_io_port_base(), kill off special ioport_map(). sh: mach-microdev: Split out the fdc37c93xapm initialization code. sh: mach-edosk7705: Fix up edosk7705 so it all builds again. sh: Add a simple edosk7705_defconfig for build testing. sh: Kill off cf-enabler with extreme prejudice. serial: sh-sci: sci_poll_get_char() is only used by CONFIG_CONSOLE_POLL. sh: mrshpc_setup_windows() needs to be inline. doc: Update sh cpufreq documentation. sh: Enable skipping of bss on debug platforms for sh32 also. sh: Kill off the unused SH_ALPHANUMERIC debug option. sh: Conditionalize the code dumper on CONFIG_DUMP_CODE. sh: dma: Kill off ISA DMA wrapper. sh: mach-sh03: Fix up pata_platform build breakage. sh: mach-rsk: Use uImage generation by default for rsk7201/7203. serial: sh-sci: Fix up port pinmux for SH7366. sh: oprofile: Fix up the module build. NOMMU: Make mmap allocation page trimming behaviour configurable. NOMMU: Teach kobjsize() about VMA regions. Paul Walmsley (8): i2c-omap: Close suspected race between omap_i2c_idle() and omap_i2c_isr() i2c-omap: Mark init-only functions as __init i2c-omap: Don't compile in OMAP15xx I2C ISR for non-OMAP15xx builds i2c-omap: fix I2C timeouts due to recursive omap_i2c_{un,}idle() i2c-omap: convert 'rev1' flag to generic 'rev' u8 i2c-omap: reprogram OCP_SYSCONFIG register after reset ARM: OMAP2: drop redundant pending write check for gptimer ARM: OMAP2: skip unnecessary TLDR write during non-autoreload for gptimer Paulius Zaleckas (5): phylib: rename mdio-ofgpio to mdio-gpio phylib: make mdio-gpio work without OF (v4) patch-mxc-add-ARCH_MX1 patch-mx1-UART-support patch-mxc-fiq Paulo Afonso Graner Fessel (1): USB: storage: recognizing and enabling Nokia 5200 cell phoes Pavel Machek (5): aperture_64.c: clarify that too small aperture is valid reason for this code Document handling of bad memory Staging: w35und: fix Kconfig strict_strto* is not strict enough backlight: Catch invalid input in sysfs attributes Pavel Roskin (3): p54: don't report known but unhandled EEPROM codes as unknown orinoco: fix last beacon reporting on 64-bit systems airport: remove useless return in a function returning void Pekka Enberg (50): slab: remove GFP_THISNODE clearing from alloc_slabmgmt() Merge branches 'topic/fixes', 'topic/cleanups' and 'topic/documentation' into for-linus Merge branch 'topic/failslab' into for-linus fs: introduce bgl_lock_ptr() Staging: w35und: make wb35_probe() and wb35_disconnect() funtions static Staging: w35und: remove unused wb35_open() and wb35_close() functions Staging: w35und: use msleep() and udelay() Staging: w35und: remove the no-op pa_stall_execution macro Staging: w35und: purb typedef removal Staging: w35und: reg queue struct typedef removal Staging: w35und: wb35reg struct typedef removal Staging: w35und: padapter struct typedef removal Staging: w35und: merge wblinux struct to adapter Staging: w35und: wb35_probe() cleanup w35und: remove dead code from wbusb_f.h Staging: w35und: remove true/false boolean macros Staging: w35und: OS_MEMORY_ALLOC wrapper removal Staging: w35und: usb_put_dev() is missing from wb35_disconnect() Staging: w35und: remove macro magic from MLME_GetNextPacket() Staging: w35und: plug memory leak in wbsoft_tx() Staging: w35und: move supported band initialization out of wb35_probe() Staging: w35und: remove timer wrappers Staging: w35und: remove atomic op wrappers Staging: w35und: remove memcpy/memcmp wrappers Staging: w35und: remove abs() and BIT() macros Staging: w35und: remove unused macros from common.h Staging: w35und: remove unused link status code Staging: w35und: #include cleanup Staging: w35und: remove some dead code Staging: w35und: move source files to one directory Staging: w35und: move struct wbsoft_priv to core.h and use it Staging: w35und: remove ->adapter from struct _HW_DATA_T Staging: w35und: clean up adapter.h a bit Staging: w35und: merge struct wb35_adapter to struct wbsoft_priv Staging: w35und: remove global struct ieee80211_hw Staging: w35und: inline DRIVER_AUTHOR and DRIVER_DESC macros Staging: w35und: clean up wblinux.c a bit Staging: w35und: remove unused ->ShutDowned member from struct LOCAL_PARA Staging: w35und: move global wbsoft_enabled to struct wbsoft_priv Staging: w35und: move packet_came() to wb35rx.c Staging: w35und: remove ->skb_array from struct wbsoft_priv Staging: w35und: remove ->shutdown from struct wbsoft_priv Staging: w35und: make functions local to mds.c static Staging: w35und: make functions local to mlmetxrx.c static Staging: w35und: remove dead code from mto.c Staging: w35und: make functions local to wb35rx.c static Staging: w35und: make functions local to wb35tx.c static Staging: w35und: remove dead code from wbhal.c Staging: w35und: remove rxisr.c as dead code ext3: allocate ->s_blockgroup_lock separately Pekka J Enberg (2): ftrace: introduce tracing_reset_online_cpus() helper ext2: allocate ->s_blockgroup_lock separately Pekka Paalanen (1): trace: add the MMIO-tracer to the tracer menu, cleanup Pete Eberlein (2): Staging: go7007: saa7134 updates Staging: go7007: add sensoray 2250/2251 support Pete Zaitcev (1): USB: Allow usbmon as a module even if usbcore is builtin Peter (1): Btrfs: Correct usage of IS_ERR() in extent_io.c Peter Griffin (2): sh: Add support for SH7201 CPU subtype. sh: RSK+ 7201 board support. Peter Gruber (1): ALSA: Reduce stall detection timeout in riptide.c Peter Hutterer (1): Input: synaptics - report multi-taps only if supported by the device Peter Korsgaard (2): setlocalversion: print correct subversion revision setlocalversion: add git-svn support Peter Leckie (2): [XFS] Clean up dquot pincount code. [XFS] Fix build brakage from patch "Clean up dquot pincount code" Peter Oberparleiter (2): [S390] cio: update sac values [S390] cio: fix ccwgroup online vs. ungroup race condition Peter P Waskiewicz Jr (4): ixgbe: Implement PCIe AER support net: Init NAPI dev_list on napi_del ixgbe: Fix NAPI enable/disable path when using DCB ixgbe: Fix set_ringparam in ixgbe to use the same memory pools. Peter Popovec (1): Input: add joystick driver for Walkera WK-0701 RC transmitter Peter Schlaile (2): mISDN: Fix HDLC DSP transmit mISDN: Make debug output a little bit more verbose Peter Staubach (1): optimize attribute timeouts for "noac" and "actimeo=0" Peter Tiedemann (1): [S390] convert ctcm printks to dev_xxx and pr_xxx macros. Peter Ujfalusi (26): Input: omap-keypad - interrupt disable fix Input: omap-keypad - allow more than 6 rows ASoC: Fix for master playback/capture volume range for TWL4030 codec ASoC: TWL4030: Disable soft-volume ASoC: TWL4030: Change the Master volume control to TLV ASoC: TWL4030: Add CGAIN volume control ASoC: TWL4030: Add helper function for output gain controls ASoC: TWL4030: Change the capture volume control to TLV ASoC: TWL4030: Change the common playback volume controls ASoC: TWL4030: Add volume controls for outputs ASoC: TWL4030: Correct DAPM_DAC with power control ASoC: TWL4030: Add Analog PGA control switch to DAPM ASoC: TWL4030: Add DAPM event handler for output MUX selection ASoC: TWL4030: DAPM mapping of the Earpiece output ASoC: TWL4030: DAPM mapping of the PreDriv outputs ASoC: TWL4030: DAPM mapping of the Headset outputs ASoC: TWL4030: DAPM mapping of the Carkit outputs ASoC: TWL4030: DAPM mapping of the Handsfree outputs ASoC: TWL4030: Do not alter the Headset output volume on power-up/down ASoC: TWL4030: Add missing Carkit output ASoC: TWL4030: Small cleanup ASoC: TWL4030: Change the name for the DACs ASoC: TWL4030: Make the enum filter generic for twl4030 ASoC: TWL4030: DAPM based capture implementation ASoC: New enum type: value_enum ASoC: TWL4030: Convert the bitfield enums to VALUE_ENUM type Peter Zijlstra (23): lockstat: documentation update lockdep: add might_lock() / might_lock_read() lockstat: fixup signed division futex: rely on get_user_pages() for shared futexes futex: reduce mmap_sem usage futex: use fast_gup() futex: cleanup fshared futex: fixup get_futex_key() for private futexes lockstat: contend with points sched, ftrace: trace sched.c ftrace: ftrace_dump_on_oops=[tracer] ftrace: sysrq-z to dump the buffers ftrace: sysctl typo hrtimer: removing all ur callback modes lockdep: change a held lock's class hrtimer: removing all ur callback modes, fix hotplug hrtimer: removing all ur callback modes, fix sched: fix tracepoints in scheduler sched: optimize update_curr() sched, trace: update trace_sched_wakeup() locking, percpu counters: introduce separate lock classes hrtimer: fix recursion deadlock by re-introducing the softirq sched: fix possible recursive rq->lock Petr Tesarik (1): tcp: remove an unnecessary field in struct tcp_skb_cb Pham Thanh Nam (2): V4L/DVB (10156): saa7134: Add support for Avermedia AVer TV GO 007 FM Plus V4L/DVB (10161): saa7134: fix autodetection for AVer TV GO 007 FM Plus Phil Endecott (1): USB: Remove restrictions on signal numbers in devio.c Philip Langdale (1): Input: refactor evdev 32bit compat to be shareable with uinput Philip Rakity (1): [MTD] [NAND] add cmdline parsing (mtdparts=) support to cafe_nand Philipp Kohlbecher (1): x86: documentation fix regarding boot protocol Philipp Zabel (3): [ARM] pxa: cpufreq-pxa2xx: sdram_rows detection support USB: otg: gpio_vbus transceiver stub USB: otg: add otg_put_transceiver() Phillip Lougher (17): Squashfs: inode operations Squashfs: directory lookup operations Squashfs: directory readdir operations Squashfs: regular file operations Squashfs: symlink operations Squashfs: super block operations Squashfs: export operations Squashfs: fragment block operations Squashfs: uid/gid lookup operations Squashfs: cache operations Squashfs: block operations Squashfs: header files Squashfs: Makefiles Squashfs: Kconfig entry Squashfs: initrd support Squashfs: documentation MAINTAINERS: squashfs entry Pierre Ossman (2): sdhci: handle built-in sdhci with modular leds class Merge branch 'master' of ../mmc Prarit Bhargava (1): x86: warn of incorrect cpu_khz on AMD systems Qinghuang Feng (14): net: remove redundant argument comments ASoC: Clean up kernel-doc for snd_soc_dai_set_fmt ALSA: sound/pci/hda/hda_codec.c: cleanup kernel-doc [libata] Update kernel-doc comments to match source code block/blk-tag.c: cleanup kernel-doc Staging: usbip: cleanup kerneldoc samples: mark {static|__init|__exit} for {init|exit} functions fs/binfmt_misc.c: add terminating newline to /proc/sys/fs/binfmt_misc/status fs/ncpfs/getopt.c: cleanup keneldoc fs/ecryptfs/inode.c: cleanup kerneldoc USB: gadget: pxa27x_udc.c: cleanup kernel-doc USB: serial: ipw.c: mark {__init|__exit} for usb_ipw_{init|exit} drivers/xen/xenbus/xenbus_client.c: cleanup kerneldoc ext2: fix ext2_splice_branch() comments Rafael J. Wysocki (32): skge: adapt skge to use reworked PCI PM e100: adapt to the reworked PCI PM Sound: hda - Restore PCI configuration space with interrupts off x86: change static allocation of trampoline area ACPI hibernate: Add a mechanism to save/restore ACPI NVS memory x86 hibernate: Mark ACPI NVS memory region at startup ACPI hibernate: Introduce new kernel parameter acpi_sleep=s4_nonvs Hibernate: Do not oops on resume if image data are incorrect Hibernate: Take overlapping zones into account (rev. 2) Hibernate: Replace unnecessary evaluation of pfn_to_page() ACPI: Do not modify SCI_EN directly PM: Simplify the new suspend/hibernation framework for devices PCI: Rework default handling of suspend and resume PCI: Suspend and resume PCI Express ports with interrupts disabled PCI: handle PCI state saving with interrupts disabled PCI PM: Fix pci_update_current_state PCI PM: Split PCI Express port suspend-resume x86/PCI: Do not use interrupt links for devices using MSI-X PCI: PCIe portdrv: Add kerneldoc comments to some core functions PCI: PCIe portdrv: Fix suspend and resume of PCI Express port services PCI: PCIe portdrv: Rearrange code so that related things are together PCI: PCIe portdrv: Add kerneldoc comments to remining core funtions PCI PM: Fix poweroff and restore callbacks PCI PM: Add suspend counterpart of pci_reenable_device PCI PM: Power-manage devices without drivers during suspend-resume PCI PM: Move pci_has_legacy_pm_support PCI PM: Avoid touching devices behind bridges in unknown state PCI PM: Rearrange code in pci-driver.c PCI PM: Call pci_fixup_device from legacy routines PCI PM: Register power state of devices during initialization PCI PM: Run default PM callbacks for all devices using new framework PCI PM: Put PM callbacks in the order of execution Rafi Rubin (1): HID: add n-trig digitizer support Rakib Mullick (1): init: properly placing noinline keyword Ralph Campbell (3): IB/ipath: Improve UD loopback performance by allocating temp array only once IB/ipath: Fix PSN of send WQEs after an RDMA read resend IB/ipath: Check return value of dma_map_single() Ramax Lo (1): [ARM] 5358/1: AT2440EVB: Use new include path of mci.h Rami Rosen (13): mac80211: remove unused declaration of struct sta_attribute. mac80211: use HWSIM_STA_MAGIC in hwsim_check_sta_magic() and hwsim_set_sta_magic(). mac80211: check return value of dev_alloc_skb() in ieee80211_sta_join_ibss(). mac80211: remove unnecessary include. wireless: missing include in lib80211.h mac80211: tx module cleanup. iwlwifi: cleanup (remove pm_state) iwlwifi: fix build error (iwl-rx.c). mac80211: misc cleanups iwlwifi: fix build warning (iwl-rx.c) iwlwifi: remove a parameter (dest) from *_fill_beacon_frame() methods. mac80211: fix a typo in ieee80211_send_assoc() method. iwlwifi: iwl-tx.c cleanup (remove unused parameter and unused local variable). Randy Dunlap (30): sched, documentation: update scheduler header file paths coda: fix creds reference nfsctl: add headers for credentials mac80211: remove more excess kernel-doc sctp: fix missing label when PROC_FS=n [MTD] [NAND] remove excess kernel-doc notation kernel-doc: check for extra kernel-doc notations doc: fix kernel-parameters.txt formatting [SCSI] scsi ioctl: fix kernel-doc warning [SCSI] fusion: remove excess kernel-doc notation virtio_blk: fix type warning kbuild: make *config usage docs spi.h uses/needs device.h [MTD] [NAND] fix nandsim sched.h references fs: use menuconfig to control the Misc. filesystems menu fs/inode: fix kernel-doc notation sysrq: more explicit, less terse help messages fs: fix function param name in kernel-doc dmi: fix kernel-doc notation i2o: remove extraneous kernel-doc kmod: fix varargs kernel-doc docs: document how to write @varargs in kernel-doc rapidio: remove excess kernel-doc notation documentation: update header file paths documentation: update s390 header file paths documentation: how to use DOC: section blocks docs: add more early params to kernel-parameters.txt doc: reformat some long lines in kernel-parameters.txt jbd: remove excess kernel-doc notation regulator: fix kernel-doc warnings Ravikiran G Thirumalai (1): x86: fix incorrect __read_mostly on _boot_cpu_pda Reinette Chatre (2): iwlwifi: rely on API version read from firmware mac80211: remove WARN_ON() from ieee80211_hw_config Reinhard Nissl (8): V4L/DVB (9445): Bug: Bandwidth calculation at upper and lower boundaries V4L/DVB (9446): Bug Fix an overflow in bandwidth calculation V4L/DVB (9447): stb6100: improve rounding V4L/DVB (9448): Bug: fix array size V4L/DVB (9449): Code Simplification: use do_div() instead V4L/DVB (9467): Fix runtime verbosity V4L/DVB (9468): Miscellaneous fixes [SCSI] mvsas: increase port type detection delay to suit Seagate's 10k6 drive ST3450856SS 0003 RenĂ© BĂ¼rgel (1): powerpc/mpc5200: Make PSC UART driver update serial errors counters Richard A. Holden III (3): x86: fix arch/x86/kernel/genx2apic_uv_x.c build warning when !CONFIG_HOTPLUG_CPU x86: fix arch/x86/kernel/setup.c build warning when !CONFIG_X86_RESERVE_LOW_64K coda: fix fs/coda/sysctl.c build warnings when !CONFIG_SYSCTL Richard Kennedy (10): irq.h: remove padding from irq_desc on 64bits block: reorder struct bio to remove padding on 64bit fs: reorder struct inotify_device on 64bits to remove padding Staging: wlan-ng: p80211netdev.c fix netdev alloc to prevent oops on device start Staging: wlan-ng: prism2_usb.c always enable the card in probe_usb Staging: wlan-ng: hfa384x_usb.c use newest version of 384x_drvr_start Staging: wlan-ng: p80211wext.c add latest changes & remove extra nulls from wext_handlers Staging: wlan-ng: p80211wext don't set default key id twice Staging: wlan-ng: hfa384x_usbin_callback: check for hardware removed Staging: wlan-ng: p80211conv.c copy code from wlan-ng-devel branch to not drop packets Richard Purdie (3): backlight: Add suspend/resume support to the backlight core leds: Add suspend/resume to the core class backlight: Rename the corgi backlight driver to generic Rik van Riel (1): vmscan: bail out of direct reclaim after swap_cluster_max pages Rikard Ljungstrand (1): Input: atkbd - add keyboard quirk for HP Pavilion ZV6100 laptop Riku Voipio (1): leds: leds-pcs9532 - Move i2c work to a workqueque Risto Suominen (1): ALSA: snd-powermac: enable mic on iMac G4 Robert Hancock (1): sata_sil: add Large Block Transfer support Robert Jarzmik (12): [ARM] pxa: add muxed gpio wakeup sources on pxa2xx architectures [ARM] pxa: add resources for incoming rtc-pxa driver [ARM] pxa/MioA701: remove KConfig leds driver requirement [ARM] pxa/MioA701: add camera support for Mio A701 board. [ARM] pxa/MioA701: change reset function to preserve RTC. [ARM] pxa/MioA701: discovered new gpio definitions. [ARM] pxa/MioA701: improve power supply sources V4L/DVB (9530): Add new pixel format VYUY 16 bits wide. V4L/DVB (9791): pxa-camera: pixel format negotiation V4L/DVB (10065): mt9m111: add all yuv format combinations. V4L/DVB (10073): mt9m111: Add automatic white balance control rtc: driver for pxa27x and pxa3xx SoC Robert Jennings (1): powerpc: Correct page-in counter for CMM with 64k pages Robert Love (4): [SCSI] FC protocol definition header files [SCSI] libfc: A modular Fibre Channel library [SCSI] fcoe: Fibre Channel over Ethernet Staging: android: add logging driver Robert Millan (1): make firmware/dsp56k/bootstrap.asm buildable on a56 Robert Olsson (2): niu: Naming interrupt vectors. ixgbe: Naming interrupt vectors Robert P. J. Day (1): kbuild: remove TAR_IGNORE Robert Reif (3): sparc: Use sparc64 version of prom/printf.c sparc: use sparc64 version of scatterlist.h sparc: fix array overrun check in of_device_64.c Robert Richter (50): oprofile: comment cleanup oprofile: update comment for oprofile_add_sample() oprofile: whitspace changes only oprofile: fix typo x86/oprofile: reordering IBS code in op_model_amd.c x86/oprofile: cleanup IBS init/exit functions in op_model_amd.c oprofile: implement switch/case in buffer_sync.c oprofile: set values to default when creating oprofilefs ring_buffer: update description for ring_buffer_alloc() ftrace: remove unused function arg in trace_iterator_increment() oprofile: adding cpu buffer r/w access functions oprofile: adding cpu_buffer_write_commit() oprofile: adding cpu_buffer_entries() oprofile: moving cpu_buffer_reset() to cpu_buffer.h ring_buffer: add remaining cpu functions to ring_buffer.h oprofile: port to the new ring_buffer oprofile: remove nr_available_slots() oprofile: fix lost sample counter ring_buffer: adding EXPORT_SYMBOLs oprofile: rename kernel-wide identifiers oprofile: rename cpu buffer functions oprofile: remove ring buffer inline functions in cpu_buffer.h x86/oprofile: fix pci_dev use count for AMD northbridge devices oprofile: reordering some code in cpu_buffer.c oprofile: add inline function __oprofile_add_ext_sample() oprofile: simplify add_sample() oprofile: simplify sync_buffer() oprofile: simplify oprofile_begin_trace() oprofile: simplify add_sample() in cpu_buffer.c oprofile: simplify add_ibs_begin() oprofile: remove unused components in struct oprofile_cpu_buffer oprofile: remove unused ibs macro oprofile: remove backtrace code for ibs oprofile: making add_sample_entry() inline oprofile: rename variable ibs_allowed to has_ibs in op_model_amd.c oprofile: rename add_sample() in cpu_buffer.c oprofile: rename variables in add_ibs_begin() oprofile: add op_cpu_buffer_write_reserve() oprofile: modify op_cpu_buffer_read_entry() oprofile: rework implementation of cpu buffer events oprofile: add op_cpu_buffer_add_data() oprofile: add op_cpu_buffer_get_data() oprofile: use new data sample format for ibs ring_buffer: fix ring_buffer_event_length() oprofile: remove #ifdef CONFIG_OPROFILE_IBS in non-ibs code oprofile: make new cpu buffer functions part of the api Merge branch 'oprofile/ring_buffer' into oprofile/oprofile-for-tip powerpc/oprofile: fix cell/pr_util.h powerpc/oprofile: fix whitespaces in op_model_cell.c Merge branch 'oprofile/cell' into oprofile/oprofile-for-tip Robin Getz (6): Blackfin arch: Add basic irq stack checking for Blackfin Blackfin arch: Update some inline assembly, tweak some register constraints Blackfin arch: panic when running on a chip rev below what we are compiled for Blackfin arch: fix bug - kernel detects BF532 incorrectly Blackfin arch: fix bug - BF527 0.2 silicon has different CPUID (DSPID) value USB: musb: Make sure we program the correct values in only when necessary. Rodolfo Giometti (2): usb host: Oxford OXU210HP HCD driver. leds: ledtrig-timer - on deactivation hardware blinking should be disabled Roel Kluin (19): ext4: Use simple_strtol() instead of simple_strtoul() in ext4_ui_proc_open ALSA: sound: Make static net: Make static Input: make some variables and functions static ALSA: ASoC: fix a typo in omp-pcm.c qlge: ql_adapter_down() typo block: make blk_softirq_init() static EtherExpress16: fix printing timed out status V4L/DVB (9994): gspca: t613: Bad loop in om6802 reset. ACPI: ec.c, pci_link.c, video_detec.c: static mmc: balanc pci_iomap with pci_iounmap [SCSI] libsas: fix test for negative unsigned and typos isdn: capi: &&/|| typos DCB: fix kfree(skb) parisc: set_time() catch errors Staging: wlan-ng: skb_p80211_to_ether() - payload_length is unsigned, check before subtraction hugetlb: unsigned ret cannot be negative USB: serial: usb_debug: Make static Make various things static Roland Dreier (7): cxgb3: Fix sparse warning and micro-optimize is_pure_response() mlx4_core: Delete incorrect comment Merge branches 'cma', 'ehca', 'ipath', 'iser', 'mlx4' and 'nes' into for-next RDMA/addr: Fix build breakage when IPv6 is disabled IB/mlx4: Fix reading SL field out of cqe->sl_vid Merge branches 'cma' and 'mlx4' into for-linus swiotlb: add missing __init annotations Romain Beauxis (1): V4L/DVB (9864): gspca - ov519: Change copyright information. Ron Lee (1): trivial: add missing printk loglevel in start_kernel Ron Mercer (10): qlge: bugfix: Add missing pci_mapping_err checking. qlge: bugfix: Add missing pci_unmap_page call in receive path. qlge: bugfix: Fix shadow register endian issue. qlge: bugfix: Fix ring length setting for rx ring, large/small qlge: bugfix: Fix register access error checking. qlge: Fix sparse warnings for byte swapping in qlge_ethool.c qlge: Fix sparse endian warning for inbound packet control block flags. qlge: Fix sparse endian warning in ql_hw_csum_setup(). qlge: Fix sparse warning regarding rx buffer queues. qlge: Fix sparse warnings for tx ring indexes. Ronen Shitrit (3): [ARM] Orion: add the option to support different ehci phy initialization [ARM] Kirkwood: allow instantiating the second ethernet port [ARM] Kirkwood: properly handle the WAN port on newer RD88F6281 boards Rui Sousa (2): lockdep: fix compilation when CONFIG_TRACE_IRQFLAGS_SUPPORT is not set lockdep, UML: fix compilation when CONFIG_TRACE_IRQFLAGS_SUPPORT is not set Russ Anderson (5): x86, uv: use consistent names for region size and conherence id on x86 and ia64 x86: uv: Add UV watchlist bios call x86: uv: Add UV memory protection bios call x86: uv: Add UV reserved page bios call sgi-xp: xpc needs to pass the physical address, not virtual Russell King (97): [ARM] remove memzero() [ARM] Arrange for platforms to select appropriate CPU support [ARM] clps7500: remove support [ARM] clkdev: add generic clkdev infrastructure [ARM] realview: convert to clkdev and lookup clocks by device name [ARM] integrator: convert to clkdev and lookup clocks by device name [ARM] versatile: convert to clkdev and lookup clocks by device name [ARM] pxa: convert to clkdev and match clocks by struct device where possible [ARM] pxa: don't pass a consumer clock name for devices with unique clocks [ARM] sa1100: match clock by dev_name(dev) Merge branches 'core' and 'clks' into devel Merge branch 'clps7500' into devel Merge branch 'for-rmk' of git://linux-arm.org/linux-2.6 into devel [ARM] copypage: convert assembly files to C [ARM] copypage: provide our own copy_user_highpage() [ARM] clearpage: provide our own clear_user_highpage() Merge branch 'highmem' into devel [ARM] versatile: remove IRQ mask definitions [ARM] rpc: remove obsolete IO accessors [ARM] pxa: avoid polluting the kernel's namespace [ARM] imx: avoid polluting the kernel's namespace [ARM] h720x: avoid polluting the kernel's namespace [ARM] l7200: avoid polluting the kernel's namespace [ARM] lh7a40x: avoid polluting the kernel's namespace [ARM] aaec2000: avoid polluting the kernel's namespace [ARM] footbridge: avoid polluting the kernel's namespace [ARM] footbridge: mach/hardware.h doesn't require mach/memory.h [ARM] clps711x: avoid polluting the kernel's namespace [ARM] shark: remove old unused "translated" IO macros [ARM] shark: avoid polluting the kernel's namespace [ARM] iop3xx: avoid polluting the kernel's namespace [ARM] iop13xx: avoid polluting the kernel's namespace [ARM] ixp23xx: mach/io.h doesn't need BUG() anymore [ARM] ixp4xx: clean up includes [ARM] ns9xxx: mach/hardware.h doesn't need asm/memory.h [ARM] asm/system.h does not require asm/memory.h [ARM] Remove unnecessary mach/hardware.h includes in arch/arm/mm [ARM] move MAX_DMA_ADDRESS to mach/memory.h [ARM] fix constant values of MAX_DMA_ADDRESS [ARM] Hide ISA DMA API when ISA_DMA_API is unset [ARM] Rename ISA mach/dma.h header to mach/isa-dma.h [ARM] Remove linux/sched.h from asm/cacheflush.h and asm/uaccess.h [ARM] give RiscPC a NR_IRQS definition and remove default Merge branch 's3c-moves2' of git://aeryn.fluff.org.uk/bjdooks/linux into devel [ARM] pnx4008: fix definition of PHYS_OFFSET [ARM] integrator: parenthesize __virt_to_bus/__bus_to_virt argument [ARM] Add a common typesafe __io implementation [ARM] Ensure that both MAX_DMA_ADDRESS and ISA_DMA_THRESHOLD are defined [ARM] amba-clcd: don't use SZ_ constants in drivers [ARM] davinci: asm/memory.h is not required for mach/vmalloc.h [ARM] Update mach-types [ARM] ep93xx: convert to clkdev and match clocks by struct device where possible [ARM] netx: fix simple clk API [ARM] aaec2000: convert to simple clk API [ARM] lh7a40x: clocks - cleanup [ARM] lh7a40x: convert to simple clk API [ARM] amba drivers: don't pass a consumer clock name for devices with unique clocks Merge branch 'clks' into devel [ARM] use asm/sections.h Merge branch 'for-rmk-realview' of git://linux-arm.org/linux-2.6 into devel [ARM] fix missing includes for iop33x and sa1100_ir Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel [ARM] netwinder: clean up GPIO naming [ARM] dma: correct dma_supported() implementation [ARM] fix xm_x2xx_defconfig build errors Merge git://git.marvell.com/orion into devel [ARM] move asm/xip.h's mach/hardware.h include to mach/xip.h Merge branch 'for_rmk' of git://git.mnementh.co.uk/linux-2.6-im into devel Merge branch 'omap3-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 into devel Merge branch 'hsmmc-init' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 into devel Merge branch 'mxc-pu-imxfb' of git://pasiphae.extern.pengutronix.de/git/imx/linux-2.6 into devel Merge branch 'rmk-devel-mxc-pu-v2' of git://pasiphae.extern.pengutronix.de/git/imx/linux-2.6 into devel Merge branch 'next-merged' of git://aeryn.fluff.org.uk/bjdooks/linux into devel Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel [ARM] s3c: define __io using the typesafe version Merge branch 'for-rmk' of git://git.pengutronix.de/git/ukl/linux-2.6 into devel Merge git://git.marvell.com/orion into devel [ARM] s3c: S3C options should depend on PLAT_S3C Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel Merge branch 'for_rmk' of git://git.mnementh.co.uk/linux-2.6-im into devel Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel [ARM] footbridge: set dc21285 clock rate from command line Merge branch 'for_rmk' of git://git.mnementh.co.uk/linux-2.6-im into devel Convert the oxsemi tornado special cases to use the quirk interface and not And here's a patch (to be applied on top of the last) which prevents remove linux/hardirq.h from asm-generic/local.h [ARM] Fix realview build [ARM] fix AT91, davinci, h720x, ks8695, msm, mx2, mx3, netx, omap1, omap2, pxa, s3c [ARM] clps711x: fix warning in fortunet [ARM] clps711x: fix warning in edb7211-mm.c [ARM] remove missed CLPS7500 defconfig [ARM] fix pxa [ARM] fix pnx4008 [ARM] fix netx [ARM] fix pxa930_trkball build errors Merge branch 'next-footbridge' of git://aeryn.fluff.org.uk/bjdooks/linux Merge branch 'devel' Rusty Russell (117): sched: convert sched.c from for_each_cpu_mask to for_each_cpu. sched: get rid of boutique sched.c allocations, use cpumask_var_t. sched: remove any_online_cpu() sched: wrap sched_group and sched_domain cpumask accesses. sched: convert struct sched_group/sched_domain cpumask_ts to variable bitmaps sched: convert nohz_cpu_mask to cpumask_var_t. sched: convert struct root_domain to cpumask_var_t. sched: convert nohz struct to cpumask_var_t. sched: convert idle_balance() to cpumask_var_t. sched: convert rebalance_domains() to cpumask_var_t. sched: convert sys_sched_getaffinity() to cpumask_var_t. sched: avoid stack var in move_task_off_dead_cpu sched: convert struct (sys_)sched_setaffinity() to cpumask_var_t. sched: convert sched_domain_debug to cpumask_var_t. sched: convert cpu_isolated_map to cpumask_var_t. sched: convert falback_doms to cpumask_var_t. sched: convert struct cpupri_vec cpumask_var_t. sched: convert check_preempt_equal_prio to cpumask_var_t. sched: convert local_cpu_mask to cpumask_var_t. sched: convert remaining old-style cpumask operators sched: convert nohz struct to cpumask_var_t, fix sched: convert local_cpu_mask to cpumask_var_t, fix sched: avoid stack var in move_task_off_dead_cpu, fix [CPUFREQ] clean up speedstep-centrino and reduce cpumask_t usage sparc: replace for_each_cpu_mask_nr with for_each_cpu cpumask: centralize cpu_online_map and cpu_possible_map cpumask: change cpumask_scnprintf, cpumask_parse_user, cpulist_parse, and cpulist_scnprintf to take pointers. cpumask: make irq_set_affinity() take a const struct cpumask cpumask: convert struct clock_event_device to cpumask pointers. cpumask: Add CONFIG_CPUMASK_OFFSTACK cpumask: Introduce cpumask_of_{node,pcibus} to replace {node,pcibus}_to_cpumask cpumask: Use all NR_CPUS bits unless CONFIG_CPUMASK_OFFSTACK Merge ../linux-2.6-x86 x86: remove impossible test in mtrr/main.c cpumask: x86: Introduce cpumask_of_{node,pcibus} to replace {node,pcibus}_to_cpumask cpumask: sparc: Introduce cpumask_of_{node,pcibus} to replace {node,pcibus}_to_cpumask cpumask: sh: Introduce cpumask_of_{node,pcibus} to replace {node,pcibus}_to_cpumask cpumask: powerpc: Introduce cpumask_of_{node,pcibus} to replace {node,pcibus}_to_cpumask cpumask: IA64: Introduce cpumask_of_{node,pcibus} to replace {node,pcibus}_to_cpumask cpumask: Mips: Introduce cpumask_of_{node,pcibus} to replace {node,pcibus}_to_cpumask cpumask: alpha: Introduce cpumask_of_{node,pcibus} to replace {node,pcibus}_to_cpumask cpumask: cpu_coregroup_mask(): x86 cpumask: cpu_coregroup_mask(): sparc cpumask: cpu_coregroup_mask(): s390 cpumask: Replace cpu_coregroup_map with cpu_coregroup_mask Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 cpumask: make CONFIG_NR_CPUS always valid. bitmap: test for constant as well as small size for inline versions bitmap: fix seq_bitmap and seq_cpumask to take const pointer cpumask: switch over to cpu_online/possible/active/present_mask: core cpumask: make cpumask.h eat its own dogfood. cpumask: make set_cpu_*/init_cpu_* out-of-line cpumask: smp_call_function_many() cpumask: arch_send_call_function_ipi_mask: core cpumask: use for_each_online_cpu() in drivers/infiniband/hw/ehca/ehca_irq.c cpumask: use new cpumask API in drivers/infiniband/hw/ehca cpumask: use new cpumask API in drivers/infiniband/hw/ipath cpumask: Use nr_cpu_ids in seq_cpumask virtio: Don't use PAGE_SIZE in virtio_pci.c virtio: rename 'pagesize' arg to vring_init/vring_size virtio: Don't use PAGE_SIZE for vring alignment in virtio_pci. virtio: use LGUEST_VRING_ALIGN instead of relying on pagesize virtio: use KVM_S390_VIRTIO_RING_ALIGN instead of relying on pagesize virtio: hand virtio ring alignment as argument to vring_new_virtqueue virtio: set max_segment_size and max_sectors to infinite. virtio: block: dynamic maximum segments net: make xfrm_statistics_seq_show use generic snmp_fold_field cpumask: prepare for iterators to only go to nr_cpu_ids/nr_cpumask_bits: net Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 KVM: Extract core of kvm_flush_remote_tlbs/kvm_reload_remote_mmus KVM: use modern cpumask primitives, no cpumask_t on stack KVM: use cpumask_var_t for cpus_hardware_enabled cpumask: Remove IA64 definition of total_cpus now it's in core code percpu: fix percpu accessors to potentially !cpu_possible() cpus: pnpbios percpu: fix percpu accessors to potentially !cpu_possible() cpus: m32r cpumask: prepare for iterators to only go to nr_cpu_ids/nr_cpumask_bits.: core cpumask: Use accessors code in core parisc: remove gratuitous cpu_online_map declaration. avr32: define __fls blackfin: define __fls m68k: define __fls m68knommu: define __fls bitmap: find_last_bit() cpumask: Use find_last_bit() cpumask: Introduce topology_core_cpumask()/topology_thread_cpumask(): sparc cpumask: Introduce topology_core_cpumask()/topology_thread_cpumask(): s390 cpumask: Introduce topology_core_cpumask()/topology_thread_cpumask(): powerpc cpumask: Introduce topology_core_cpumask()/topology_thread_cpumask(): ia64 cpumask: convert kernel trace functions cpumask: convert kernel trace functions further cpumask: remove any_online_cpu() users: kernel/ cpumask: remove any_online_cpu() users: mm/ cpumask: convert kernel/compat.c cpumask: convert kernel/workqueue.c cpumask: convert kernel time functions cpumask: convert kernel/irq cpumask: convert RCU implementations cpumask: convert kernel/profile.c cpumask: convert kernel/cpu.c cpumask: convert rest of files in kernel/ cpumask: convert mm/ cpumask: replace for_each_cpu_mask_nr with for_each_cpu in kernel/time/ cpumask: zero extra bits in alloc_cpumask_var_node cpumask: CONFIG_DISABLE_OBSOLETE_CPUMASK_FUNCTIONS cris: define __fls frv: define __fls h8300: define __fls m32r: define __fls mn10300: define __fls xtensa: define __fls x86: use cpumask_var_t in acpi/boot.c cpumask: convert shared_cpu_map in acpi_processor* structs to cpumask_var_t cpumask: replace CPUMASK_ALLOC etc with cpumask_var_t cpumask: convert struct cpufreq_policy to cpumask_var_t kobject: Make Documentation/kobject.txt a little more coherent. USB: Don't use __module_param_call; use core_param. PCI: work_on_cpu: use in drivers/pci/pci-driver.c RĂ©mi Denis-Courmont (8): Phonet: use net_device built-in stats for GPRS Phonet: basic net namespace support Phonet: improve GPRS variable names Phonet: allocate a non-Ethernet ARP type Phonet: allocate separate ARP type for GPRS over a Phonet pipe Phonet: use atomic for packet TX window Phonet: get rid of deferred work on the transmission path Phonet: USB CDC Phonet function for gadget framework Saeed Bishara (1): rtc: driver for Marvell's SoCs 88F6281 and 88F6192 Sage Weil (8): Btrfs: Clone file data ioctl Btrfs: transaction ioctls Btrfs: fix ioctl-initiated transactions vs wait_current_trans() Btrfs: Fix makefile for builing btrfs static Btrfs: allow clone of an arbitrary file range Btrfs: remove unneeded total_trans Btrfs: remove unneeded btrfs_start_delalloc_inodes call Btrfs: mnt_drop_write in ioctl_trans_end Sakari Ailus (2): tlan: Remove broken support for big buffers V4L/DVB (9815): omap2: add OMAP2 camera driver. Sally, Gene (1): kbuild: gen_init_cpio expands shell variables in file names Sam Ravnborg (100): kbuild: fix -I option expansion with O=... builds kbuild: expand -I in KBUILD_CPPFLAGS kbuild: teach mkmakfile to be silent kconfig: fix options to check-lxdialog.sh tags and cscope support really belongs in a shell script sparc: unify Kconfig.debug sparc: refactor Kconfig a little sparc64: added more config options to the menus sparc: drop UNIX98_PTYS from arch Kconfig sparc: use Kconfig.hz sparc: add menu "Executable file formats" sparc: add "Bus options" to Kconfig sparc,sparc64: unify Kconfig files sparc,sparc64: add BITS to arch Makefile sparc: cleanup math-emu sparc: prepare math-emu for unification sparc64: unify math-emu sparc64: unify arch/sparc64/oprofile/ sparc: prepare mm/ for unification sparc,sparc64: unify mm/ sparc,sparc64: prepare vmlinux.lds.S for unification sparc64: use vmlinux.lds.S from sparc sparc,sparc64: unify asm-offsets.c sparc: refactor Makefile sparc: clean boot/ sparc: gitignore a few files sparc,sparc64: unify Makefile sparc: prepare prom/ for unification sparc,sparc64: unify prom/ sparc: prepare lib/ for unification sparc,sparc64: unify lib/ sparc: prepare kernel/ for unification sparc,sparc64: unify kernel/ sparc,sparc64: unify boot/ sparc: drop CONFIG_SUN_AUXIO sparc: unify kernel/init_task sparc: beautify kernel/cpu_32.c sparc: report "Unknown CPU/FPU" for unknown cpu/fpu sparc: fix sparse warnings in cpu_*.c sparc: expand cpu table sparc: unify kernel/cpu sparc: idprom_32.c cleanup sparc: unify kernel/idprom.c sparc: fix sparse warning in kernel/pmc.c sparc: fix trivial style issues in kernel/pmc.c sparc: fix sparse warnings in traps_32.c sparc: add include guards to kernel.h sparc: fix sparse warnings in irq_32.c sparc64: do not export pus_fs_struct kbuild: fix make incompatibility kbuild: simplify use of genksyms sparc: fix hardirq.h removal fallout sparc: introduce CONFIG_BITS sparc: unify module.h sparc64: use bit neutral Elf symbols sparc64: prepare module_64.c for unification sparc: unify module.c sparc: use .data.init_task section for init_thread_union sparc: unify sections.h sparc: drop SUN_IO sparc: move select of ARCH_SUPPORTS_MSI m68k: fix recursive dependency in Kconfig kconfig: explain symbol value defaults kconfig: add comments to symbol flags kconfig: struct property commented kconfig: improve error messages for bad source statements kbuild: check for leaked CONFIG_ symbols to userspace kbuild: document environment variables kbuild: drop debugging leftover in tags.sh kbuild: add checks for include of linux/types in userspace headers kbuild: ignore a few files in headers_check sparc: delete unused config symbols sparc: unify posix_types.h sparc32: drop __old_kernel_stat sparc32: use proper types in struct stat sparc: unify stat.h sparc64: prepare signal_64 for unification sparc: unify signal.h sparc: add '32' suffix to reg_window, sigcontext, __siginfo_t sparc: unify sigcontext.h sparc: unify ptrace.h sparc: unify siginfo.h sparc: remove ebus definitions from openprom*.h sparc: remove linux_prom_pci_assigned_addresses from openprom_32.h sparc: prepare openprom for unification sparc64: delete unused linux_prom64_ranges from openprom_64.h sparc: unify openprom.h sparc: fix warning in userspace header jsflash.h sparc: fix warnings in userspace header byteorder.h sparc: fix warning in userspace header traps.h sparc: drop get_tbr() in traps.h sparc: remove NO_PROC_ID - it is no longer used sparc: unify ipcbuf.h MAINTAINERS: update sparc maintainer sparc64: refactor code in viohs.c sparc64: refactor code in init_64.c sparc: refactor code in fault_32.c sparc64: Use unsigned long long for u64. sparc64: Fix unsigned long long warnings in drivers. fix modules_install via NFS Samuel Ortiz (3): iwl3945: Select correct sta ID from find_station() mfd: Fix twl4030-core.c build error mfd: Use irq_to_desc in twl4030 code San Mehat (1): Staging: android: add lowmemorykiller driver Sandeep Patil (3): [ARM] S3C24A0: arch/arm/mach-s3c24a0/include/mach header files [ARM] S3C24A0: Correct S3C2410_PA_GPIO in S3C24XX_VA_GPIO [ARM] S3C24A0: Serial port definitions and driver support. SangSu Park (1): USB: Fix goku_udc usb speed handling Sangtae Ha (1): [TCP] CUBIC v2.3 Santosh Shilimkar (1): ARM: OMAP3: DMA: Fix for sDMA Errata 1.113 Sascha Hauer (31): [ARM] MX2: Add W1 device/resources [ARM] MX31: add w1 platform_device and resources [ARM] MX2 pcm038: add 1-wire master support [ARM] pcm037: add 1wire support [ARM] MX2: DMA updates MX27: Fix EMMA Base addresses [ARM] MX2: Add IRQ_GPIOE definition [ARM] MX27ads: remove unused define MX27: Add USB pin function defines [ARM] MX1/MX2: simplify mxc_gpio_setup_multiple_pins [ARM] MX3 iomux: add more pin definitions pcm038: add driver for static ram [ARM] pcm037: Add support for SRAM device [ARM] MX27: Add NAND resources [ARM] pcm038: Add NAND support [ARM] MX3: add NAND support [ARM] pcm037: add NAND support MAINTAINERS: Add myself as i.MX Framebuffer driver maintainer i.MX Framebuffer: remove gpio setup function i.MX Framebuffer: fix margins i.MX Framebuffer: remove header file i.MX Framebuffer: Cleanup Coding style i.MX Framebuffer: rename imxfb_mach_info to imx_fb_platform_data i.MX Framebuffer: add TFT support [ARM] MX1: Add missing selection of ARM920T [ARM] MX27ads: fix function name [ARM] MX1/MX2 DMA: add missing local_irq_restore() [ARM] MXC: remove dependency to other include files from irqs.h [ARM] MXC: do not include mach/hardware.h from mach/timex.h [ARM] MXC: do not include mach/hardware.h from mach/memory.h w1: add 1-wire master driver for i.MX27 / i.MX31 Sascha Sommer (1): sdricoh_cs: Add support for Bay Controller devices Sathya Perla (5): Staging: benet: patch to remove subdirectories Staging: benet: fix build errors when CONFIG_NETPOLL is off Staging: benet: patch to use offsetof() instead of AMAP_BYTE_OFFSET() Staging: benet: fix problems reported by checkpatch Staging: benet: cleanup a check while posting rx buffers Scott Feldman (5): enic: enable ethtool LRO support enic: driver/firmware API updates enic: mask off some reserved bits in CQ descriptor for future use enic: move wmb closer to where needed: before writing posted_index to hw enic: misc cleanup items: Scott Waye (1): ALSA: hda - Add MCP67 HDMI support Scott Wood (1): powerpc/bootwrapper: Use the child-bus #address-cells to decide which range entry to use Sean MacLennan (1): [MTD] [NAND] ndfc driver Sebastian Andrzej Siewior (1): USB: isp1760: use a specific PLX bridge instead of any bdridge Sebastian Ott (5): [S390] cio: move irritating comment. [S390] cio: introduce cio_update_schib [S390] cio: introduce cio_commit_config [S390] cio: commit all pmcw changes. [S390] cio: use pim to check for multipath. Sebastian Siewior (1): powerpc/boot: Allocate more memory for dtb Sebastien Dugue (3): powerpc/pseries: Fix getting the server number size powerpc/ibmebus: Get rid of the IRQ mapping in ibmebus_free_irq() powerpc/pseries: Fix cpu hotplug Sedji Gaouaou (2): ASoC: Merge AT91 and AVR32 support into a single atmel architecture ASoC: Add audio support for the Atmel AT91SAM9G20ek board(uing wolfson 8731). Senthil Balasubramanian (12): ath9k: INI update for atheros chipets. ath9k: incorrect noise floor threshold values. ath9k: Build RFKILL feature even when RFKILL subsystem is a MODULE ath9k: IRQ should be disabled before calling free_irq() ath9k: Race condition in accessing TX and RX buffers. wireless: Incorrect LEAP authentication algorithm identifier. ath9k: Adding AR9285 chipset register information. ath9k: Adding initvalues for Atheros AR9285 chipset. ath9k: Adding support for Atheros AR9285 chipset. ath9k: Incorrect band enum causes invalid antenna configuration. ath9k: avoid rx frames with corrupted descriptor. ath9k: BH shouldn't be enabled when hardirqs are disabled. Serge E. Hallyn (5): file capabilities: add no_file_caps switch (v4) user namespaces: let user_ns be cloned with fairsched user namespaces: require cap_set{ug}id for CLONE_NEWUSER user namespaces: document CFS behavior devices cgroup: allow mkfifo Serge Hallyn (2): User namespaces: set of cleanups (v2) User namespaces: use the current_user_ns() macro Sergei Shtylyov (4): ide: don't set hwif->dma_ops in init_dma() method ide: move read_sff_dma_status() method to 'struct ide_dma_ops' ide-dma-sff: factor out ide_dma_sff_write_status() scc_pata: make use of scc_dma_sff_read_status() Sergey Ovcharenko (1): USB: storage: unusual_devs.h additions for Macpower MasterBox Sergio Luis (2): smackfs: check for allocation failures in smk_set_access() x86: mark get_cpu_leaves() with __cpuinit annotation Shane Huang (2): [libata] ahci: Add SATA GEN3 related messages [libata] ahci: Withdraw IGN_SERR_INTERNAL for SB800 SATA Shane McDonald (1): Resurrect IT8172 IDE controller driver Shaohua Li (1): PCI: keep ASPM link state consistent throughout PCIe hierarchy Shen Feng (2): Btrfs: fix a memory leak in btrfs_get_sb Btrfs: do not call kfree if kmalloc failed in btrfs_sysfs_add_super Sheng Yang (24): x86: Rename mtrr_state struct and macro names x86: Export some definition of MTRR KVM: Improve MTRR structure KVM: VMX: Add PAT support for EPT KVM: Add local get_mtrr_type() to support MTRR KVM: Enable MTRR for EPT KVM: Clean up kvm_x86_emulate.h KVM: MMU: Extend kvm_mmu_page->slot_bitmap size KVM: VMX: Move private memory slot position KVM: IRQ ACK notifier should be used with in-kernel irqchip KVM: Enable Function Level Reset for assigned device KVM: Fix kernel allocated memory slot KVM: Move ack notifier register and IRQ sourcd ID request KVM: Separate update irq to a single function KVM: Replace irq_requested with more generic irq_requested_type KVM: Clean up assigned_device_update_irq KVM: Add fields for MSI device assignment KVM: Export ioapic_get_delivery_bitmask KVM: Add assigned_device_msi_dispatch() KVM: Enable MSI for device assignment KVM: MSI to INTx translate PCI: Refactor pci_reset_function() PCI: add PCI Advanced Feature Capability defines PCI: Extend pci_reset_function() to support PCI Advanced Features Simon Arlott (1): netfilter: nf_nat: remove warn_if_extra_mangle Simon Holm Thøgersen (1): net/rfkill/rfkill.c: fix unused rfkill_led_trigger() warning Simon Horman (1): IPVS: Make "no destination available" message more consistent between schedulers Sitsofe Wheeler (1): x86: change OPTIMIZE_INLINING help to say enabling makes smaller kernels Solofo.Ramangalahy@bull.net (1): ext4: When resizing set the EXT4_BG_INODE_ZEROED flag for new block groups Solomon Peachy (20): Staging: wlan-ng: Remove PCI/PLX/PCMCIA files. Staging: wlan-ng: Update Help text to mention prism3 devices. Staging: wlan-ng: Delete PCI/PLX/PCMCIA-specific code. Staging: wlan-ng: Make wlan-ng use WEXT mode by default. Staging: wlan-ng: Eliminate more <2.6 kernel support. Staging: wlan-ng: Eliminate all backwards-compatibility for <2.6.13 kernels. Staging: wlan-ng: Eliminate a boatload of tertiaryAP-only code. Staging: wlan-ng: Remove AP-only code from MLME functions. Staging: wlan-ng: Get rid of the MTU tests in the rx conversion path. Staging: wlan-ng: Eliminate one more rx mtu test. Staging: wlan-ng: Eliminate local 'version.h' Staging: wlan-ng: Eliminate usage of procfs. Staging: wlan-ng: Use standard kernel integer (u32/s32/etc) types. Staging: wlan-ng: Eliminate all backwards-compatible kernel code. Staging: wlan-ng: Wireless Extension support is mandatory. Staging: wlan-ng: use WIRELESS_EXT, not CONFIG_WIRELESS_EXT Staging: wlan-ng: Delete a large pile of now-unused code. Staging: wlan-ng: Delete a pile of unused mibs. And fix WEXT SET_TXPOWER. Staging: wlan-ng: Consolidate wlan-ng into a single module. Staging: wlan-ng: Purge all MIBs not used internally. Sonic Zhang (14): Blackfin arch: Fix bug - hardware breakpoint doesn't always work in kgdb Blackfin Serial Driver: updates kgdb over Blackfin serial driver with kgdb framework Blackfin Serial Driver: Clean serial console and early prink code. Blackfin Serial Driver: Fix bug - BF527-EZKIT unable to receive large files over UART in DMA mode Blackfin Serial Driver: Remove BI status for known_good_char Blackfin arch: Use reads/writes instead of ins/outs directly Blackfin arch: disable pthread stack check for SMP at runtime Blackfin arch: Make bfin_mac built for bf51x Blackfin arch: fix bug - kernel stops at initial console Blackfin arch: enable reprogram cclk and sclk for bf518f-ezbrd Blackfin arch: Set PB4 as the default irq for bf548 board v1.4+. Blackfin arch: update board default configs netdev: bfin_mac: enable bfin_mac net dev driver for BF51x pata_platform: __pata_platform_remove() shouldn't be in discard section Sonny Rao (1): powerpc/BSR: Support multiple OF-node description of BSR Sripathi Kodi (1): sched, lockdep: inline double_unlock_balance() Stanley.Miao (2): ARM: OMAP3: LDP: Add Ethernet device support to make ldp boot succeess ASoC: TWL4030: hands-free start-up sequence. Stefan Assmann (5): x86, pci: introduce pci=noioapicquirk kernel cmdline option x86, pci: introduce pci=ioapicreroute kernel cmdline option pci: add quirk to disable boot interrupt generation on intel 6300ESB pci, acpi: reroute PCI interrupt to legacy boot interrupt equivalent x86, pci: introduce config option for pci reroute quirks (was: [PATCH 0/3] Boot IRQ quirks for Broadcom and AMD/ATI) Stefan Haberland (3): [S390] dasd: improve dasd statistics proc interface [S390] dasd: correct sense byte condition for SIM [S390] dasd: call cleanup_cqr with request_queue_lock Stefan Richter (10): ieee1394: replace a GFP_ATOMIC by GFP_KERNEL allocation ieee1394: mark all hpsb_address_ops instances as const ieee1394: ohci1394: pass error codes from request_irq through ieee1394: ohci1394: flush MMIO writes before delay in initialization ieee1394: ignore nonzero Bus_Info_Block.max_rom, fetch config ROM in quadlets firewire: fw-sbp2: remove unnecessary locking firewire: fix small memory leak at module removal firewire: fix resetting of bus manager retry counter firewire: reorder struct fw_card for better cache efficiency firewire: core: fix sleep in atomic context due to driver core change Stefan Roese (2): UBI: return -ENOMEM upon failing vmalloc powerpc/4xx: Add L2 cache node to AMCC Canyonlands dts file Stefan Roscher (1): IB/ehca: Replace modulus operations in flush error completion path Stefan Schmidt (4): [ARM] pxa/ezx: Remove two memory banks fixup [ARM] pxa/ezx: GPIO configuration [ARM] pxa/ezx: Keypad configuration [ARM] pxa/ezx: I2C configuration Stefan Weinhuber (1): [S390] dasd: send change uevents for dasd block devices Stefano Panella (5): uwb: infrastructure for handling Relinquish Request IEs uwb: add commands to add/remove IEs to the debug interface uwb: per-radio controller event thread and beacon cache uwb: improved MAS allocator and reservation conflict handling uwb: remove beacon cache entry after calling uwb_notify() Stelian Pop (2): Input: appletouch - driver refactoring [ARM] 5319/1: AT91: support AT91CAP9 revC CPUs Stephen Hemminger (149): vlan: propogate ethtool speed values macvlan: add support for ethtool get settings atlx: use embedded net_device_stats atlx: timer cleanup net: increase receive packet quantum netem: eliminate unneeded return values tracing/fastboot: fix perlcritic warning tracing/fastboot: put error message on stderr netdev: network device operations infrastructure netdev: introduce dev_get_stats() netdev: expose ethernet address primitives netdev: convert loopback to net_device_ops ifb: convert to net_device_ops bridge: convert to net_device_ops veth: convert to net_device_ops macvlan: convert to net_device_ops ip: convert to net_device_ops for ioctl vlan: convert to net_device_ops bonding: convert to net_device_ops e1000e: convert to net_device_ops sky2: convert to net_device_ops skge: convert to net_device_ops 8139: convert to net_device_ops tun: convert to net_device_ops atl1e: convert to net_device_ops atlx: convert to net_device_ops cxgb3: convert to net_device_ops cxgb2: convert to net_device_ops e1000: convert to net_device_ops via-velocity: convert to net_device_ops igb: convert to net_device_ops e100: convert to net_device_ops ppp: convert to net_device_ops enic: convert to net_device_ops ixgb: convert to net_device_ops tg3: convert to net_device_ops forcedeth: convert to net_device_ops niu: convert to net_device_ops acenic: convert to net_device_ops netdev: add more functions to netdevice ops dummy: convert to net_device_ops ipmr: convert ipmr virtual interface to net_device_ops fddi: convert to new network device ops defxx: convert driver to net_device_ops hippi: convert driver to net_device_ops ipip: convert to net_device_ops ipv6: convert tunnels to net_device_ops ipgre: convert to netdevice_ops jme: convert driver to net_device_ops s2io: convert to net_device_ops qlge: convert to net_device_ops qlge: fix sparse warnings via-rhine: convert to net_device_ops myri10ge: convert to net_device_ops mlx4: convert to net_device_ops bnx2: convert to net_device_ops dl2k: convert to net_device_ops netxen: convert to net_device_ops sfc: convert to net_device_ops tehuti: convert to net_device_ops sis900: convert to net_device_ops r6040: convert to net_device_ops yellowfin: convert to net_device_ops ns83820: convert to net_device_ops bnx2x: convert to net_device_ops hamachi: convert to net_device_ops qla3xxx: convert to net_device_ops sc92031: convert to net_device_ops eql: convert to net_device_ops ne2k: convert to net_device_ops 8139too: use err.h macros netdev: add HAVE_NET_DEVICE_OPS 8390: add common net_device ops wd: use net_device_ops hp-plus: convert to net_device_ops smc: convert to net_device_ops ne3210: convert to net_device_ops es3210: convert to net_device_ops e2100: convert to net_device_ops lne390: convert to net_device_ops hp: convert to net_device_ops ne2: convert to net_device_ops apne: convert to net_device_ops stnic: convert to net_device_ops 3c503: convert to net_device_ops ne2000: convert to net_device_ops tc: propogate errors from tcf_hash_create tc: check for errors in gen_rate_estimator creation tc: policing requires a rate estimator etherh: build fix for net-next mac8390: update to net_device_ops zorro8390: convert to net_device_ops hydra: convert to net_device_ops ne-h8300: convert to net_device_ops irda: convert to internal stats bonding: use net_device_ops wireless: convert wireless ioctl to net_device_ops virtio: convert to net_device_ops xen-netfront: convert to net_device_ops sch_teql: convert to net_device_ops dsa: convert to net_device_ops (v2) ieee1394: convert to net_device_ops ieee1394: remove unneeded last_rx ieee1394: use internal network device stats PCI: handle long delays in VPD access PCI: revise VPD access interface PCI: add interface to set visible size of VPD appletalk: convert aarp to net_device_ops appletalk: convert ipddp to net_device_ops bluetooth: driver API update phonet: update to net_device_ops cassini: update to net_device_ops ipg: update to net_device_ops plip: update to net_device_ops tlan: update to net_device_ops epic100: update to net_device_ops sunhme: update to net_device_ops sungem: update to net_device_ops pcnet32: update to net_device_ops typhoon: update to net_device_ops enc28j60: update to net_device_ops de600: update to net_device_ops sis190: update to net_device_ops ns83820: fix net_device_ops support sb1000: update to net_device_ops natsemi: update to net_device_ops fealnx: update to net_device_ops starfire: update to net_device_ops sundance: update to net_device_ops tulip: convert devices to new API de2104x: convert to net_device_ops de4x5: convert to net_device_ops xircom: convert devices to new API dmfe: convert to new API uli526x: convert devices to new API windbond: convert devices to new API dvb: update network device to current API hysdn: convert to net_device_ops and other updates I4l: convert to net_device_ops fusion: convert devices to new API xpnet: convert devices to new API gadget: convert devices to new API uwb: convert devices to net_device_ops slip: convert to net_device_ops amd8111e: convert to net_device_ops atp: convert to net_device_ops b44: convert to net_device_ops hp100: update to net_device_ops pcnet32: round off carrier watch timer Stephen M. Cameron (1): cciss: simplify parameters to deregister_disk function Stephen Rothwell (17): ALSA: ASoC - restore removed variable declaration fs: xfs needs inode_wait to be exported powerpc/44x: update ppc44x_defconfig sparc: combine unistd_{32,64}.h tracing/fastboot: fix len of func buffer powerpc/iseries: viodasd needs to depend on CONFIG_BLOCK cifs: update for new IP4/6 address printing net: ehea NAPI interface cleanup fix V4L/DVB (9490): linux-next: v4l-dvb tree build failure net/ehea: bitops work on unsigned longs uio: make uio_info's name and version const net/ehea: use consistant type ibmveth: use consistent types powerpc/cell: Bitops work on unsigned longs powerpc/cell: local_irq_save takes an unsigned long powerpc: Remove unnecessary casts powerpc/cell: Fix the prototype of create_vma_map() Stephen Smalley (1): SELinux: correctly detect proc filesystems of the form "proc/foo" Stephen Ware (1): ASoC: Fix pxa2xx-pcm checks for invalid DMA channels Steve Dickson (1): NFSD: FIDs need to take precedence over UUIDs Steve French (8): [CIFS] add mount option to send mandatory rather than advisory locks [CIFS] remove sparse warning [CIFS] fix typo [CIFS] various minor cleanups pointed out by checkpatch script [CIFS] Can not mount with prefixpath if root directory of share is inaccessible [CIFS] Cleanup: Move the check for too large R/W requests [CIFS] Streamline SendReceive[2] by using "goto out:" in an error condition [CIFS] make sure that DFS pathnames are properly formed Steve Glendinning (18): SMSC LAN911x and LAN921x vendor driver smsc95xx: add tx checksum offload support smsc911x: add dynamic bus configuration smsc9420: SMSC LAN9420 10/100 PCI ethernet adapter smsc911x: make smsc911x_poll_controller static smsc9420: add netpoll support smsc9420: add ethtool eeprom support smsc9420: add ethtool register dump support net: Move flow control definitions to mii.h net: Refactor full duplex flow control resolution sh: Add platform-specific constants for SH7709 sh: fix DMAOR register access on SH7709 sh: add SH DMAC burst mode constant smsc911x: fix BUG if module is removed while interface is up smsc911x: convert driver to use net_device_ops smsc911x: make smsc911x_ethtool_ops constant smsc911x: don't clobber driver_data smsc911x: fix platform resource call during module unload Steve Hodgson (2): sfc: Make reset_workqueue driver-global rather than per-NIC sfc: Treat probe as unsuccessful if it scheduled a reset Steve Sakoman (3): ASoC: Add support for TWL4030 audio codec ASoC: Add support for Gumstix Overo ASoC: Add support for Beagleboard Steven Noonan (1): USB: EHCI pci-quirks.c: don't wait so long for BIOS handoff Steven Rostedt (98): ftrace: ftrace dump on oops control ftrace: nmi safe code modification ftrace: nmi update statistics ftrace, kbuild: condense recordmcount.pl parameter code ftrace: nmi safe code clean ups ftrace: fix hardirq header for non ftrace archs ftrace: introduce ftrace_preempt_disable()/enable() ftrace: insert in the ftrace_preempt_disable()/enable() functions ftrace: function tracer with irqs disabled ftrace: add quick function trace stop ftrace: soft tracing stop and start ftrace: restructure tracing start/stop infrastructure ring-buffer: convert to raw spinlocks ftrace: split out hardirq ftrace code into own header ftrace: fix set_ftrace_filter ftrace: fix boot trace sched startup ftrace: fix sched_switch API ftrace: irqsoff tracer incorrect reset ftrace: enable trace_printk by default ftrace: remove ctrl_update method ftrace: remove trace array ctrl ftrace: force pass of preemptoff selftest ftrace: display start of CPU buffer in trace output ftrace: prevent ftrace_special from recursion ring-buffer: replace most bug ons with warn on and disable buffer ring-buffer: add reader lock ring-buffer: clean up warn ons ring-buffer: fix deadlock from reader_lock in read_start tracing: profile likely and unlikely annotations tracing: likely/unlikely branch annotation tracer trace: rename unlikely profiler to branch profiler ftrace: rename unlikely iter_ctrl to branch ftrace: add tracer called branch ftrace: rename trace_unlikely.c file ftrace: rename trace_entries to buffer_size_kb ftrace: show buffer size in kilobytes ftrace: rename iter_ctrl to trace_options ftrace: CPU buffer start annotation clean ups ftrace: remove condition from ftrace_record_ip ftrace: disable ftrace on anomalies in trace start and stop ftrace: do not process freed records ftrace: replace raw_local_irq_save with local_irq_save ftrace: pass module struct to arch dynamic ftrace functions ftrace: allow NULL pointers in mcount_loc ftrace: fix dyn ftrace filter ftrace: make filtered functions effective on setting powerpc: ftrace, do not latency trace idle powerpc: ftrace, convert to new dynamic ftrace arch API powerpc: ftrace, use probe_kernel API to modify code powerpc/ppc64: ftrace, handle module trampolines for dyn ftrace powerpc/ppc32: ftrace, dynamic ftrace to handle modules ftrace: add support for powerpc to recordmcount.pl script ftrace: create default variables for archs in recordmcount.pl trace: remove extra assign in branch check trace: consolidate unlikely and likely profiler trace: branch profiling should not print percent without data trace: profile all if conditionals ring-buffer: add tracing_off_permanent ftrace: add ftrace_off_permanent trace: fix compiler warning in branch profiler ftrace: add function tracing to single thread ftrace: use code patching for ftrace graph tracer ftrace: let function tracing and function return run together ftrace: add thread comm to function graph tracer ftrace: add cpu annotation for function graph tracer powerpc: ftrace, do nothing in mcount call for dyn ftrace powerpc: ftrace, fix cast aliasing and add code verification powerpc: ftrace, added missing icache flush powerpc: ftrace, use create_branch powerpc/ppc32: static ftrace fixes for PPC32 ftrace: replace raw_local_irq_save with local_irq_save ring-buffer: move some metadata into buffer page ring-buffer: read page interface ftrace: clean up function graph asm ftrace: have function graph use mcount caller address ftrace: add ftrace_graph_stop() ring-buffer: change "page" variable names to "bpage" ftrace: print real return in dumpstack for function graph ftrace: function graph return for function entry ftrace: add checks on ret stack in function graph trace: fix output of stack trace ftrace: fix race in function graph during fork ftrace: graph of a single function ftrace: use task struct trace flag to filter on pid ftrace: trace single pid for function graph tracer pid: fix the do_each_pid_task() macro ftrace: use struct pid ftrace: add ability to only trace swapper tasks ftrace: use init_struct_pid as swapper pid trace: add a way to enable or disable the stack tracer trace: better use of stack_trace_enabled for boot up code ftrace: add not to regex on filtering functions ring-buffer: fix dangling commit race ring-buffer: prevent false positive warning V4L/DVB (10129): dvb: remove deprecated use of RW_LOCK_UNLOCKED in frontends make INIT_FS use the __RW_LOCK_UNLOCKED initialization sparc: make proces_ver_nack a bit more readable powerpc: enable dynamic ftrace Steven Whitehouse (30): dlm: fix up memory allocation flags dlm: remove kmap/kunmap dlm: replace schedule with cond_resched GFS2: Support for FIEMAP ioctl GFS2: Rationalise header files GFS2: Fix up jdata writepage/delete_inode GFS2: Move generation number into "proper" part of inode GFS2: Move "entries" into "proper" inode GFS2: Move di_eattr into "proper" inode GFS2: Move i_size from gfs2_dinode_host and rename it to i_disksize GFS2: Banish struct gfs2_dinode_host GFS2: Move rg_igeneration into struct gfs2_rgrpd GFS2: Move rg_free from gfs2_rgrpd_host to gfs2_rgrpd GFS2: Banish struct gfs2_rgrpd_host GFS2: Add more detail to debugfs glock dumps GFS2: Clean up & move gfs2_quotad GFS2: Fix "truncate in progress" hang GFS2: Move gfs2_recoverd into recovery.c GFS2: Kill two daemons with one patch GFS2: Send some sensible sysfs stuff GFS2: Fix bug in gfs2_lock_fs_check_clean() GFS2: Move four functions from super.c GFS2: Remove ancient, unused code GFS2: Fix use-after-free bug on umount GFS2: Send useful information with uevent messages GFS2: Streamline alloc calculations for writes Revert "GFS2: Fix use-after-free bug on umount" GFS2: Fix use-after-free bug on umount (try #2) GFS2: Set GFP_NOFS when allocating page on write GFS2: LSF and LBD are now one and the same Stoyan Gaydarov (1): Staging: et131x: Cleanup et131x_debug.h defines Stuart Hopkins (1): Input: atkbd - Samsung NC10 key repeat fix Subbu Seetharaman (1): Staging: Add ServerEngines benet 10Gb ethernet driver Sujith (57): mac80211: Change WARN_ON to WARN_ON_ONCE ath9k: Check if the STA supports HT when initializing rate control mac80211: Re-enable aggregation ath9k: Node cleanup ath9k: Simplify node attach/detach routines ath9k: Revamp transmit control block ath9k: Remove SM Power Save as it is not supported now ath9k: Ensure ath_node is not NULL when updating tx chainmask ath9k: Use bitfields to store tid's state in a single variable ath9k: Revamp VAP management ath9k: Refactor hw.c ath9k: Remove unused function ath_get_currentCountry() ath9k: Streamline attach/detach ath9k: Remove unnecessary TSF reset ath9k: Enable interrupts at the proper place ath9k: Remove ath_tx_aggr_resp() ath9k: Clear HT info on starting the driver ath9k: Remove internal RX A-MPDU processing mac80211: Add a new event in ieee80211_ampdu_mlme_action ath9k: Fix compilation failure when RFKILL is enabled mac80211: Use the HT capabilities from the IE instead of the station's caps. ath9k: Merge struct ath_tx_ratectrl with ath_rate_node ath9k: Simplify RC alloc/free functions ath9k: Remove ath_setup_rates ath9k: Remove ath_rate_newassoc() ath9k: Remove half/quarter rate tables ath9k: Nuke fixed rate handling in driver ath9k: Revamp RX handling ath9k: We don't support non-HT devices, so remove superfluous code. ath9k: Remove rate control reference in VAP ath9k: Remove ath_rate_softc ath9k: Use rate_driver_data ath9k: Remove ath9k_rate_table ath9k: General code scrub ath9k: Use helpers ath9k: Move TX completion routine to xmit.c ath9k: Fix bug in deciphering channel flags ath9k: Update TX trigger level on a FIFO underrun. ath9k: Use straightforward PCI routines to setup the TX buffer. ath9k: Code scrub ath9k: Use proper TX channel width for setting channels ath9k: Handle channel initialization for AP mode ath9k: Use cleaner debug masks ath9k: Add ATH9K_DEBUG configuration option ath9k: Remove includes that are not needed ath9k: Add initial layout for an ath9k specific debugfs mechanism ath9k: Add a debugfs file for dumping DMA status ath9k: Choose correct ANI calibration period ath9k: Fix bug in rate table management ath9k: Maintain rate table choice after association ath9k: Add a debugfs file to show interrupt statistics ath9k: Remove remaining occurrences of CONFIG_SLOW_ANT_DIV ath9k: Merge structures ath_atx, ath_node_aggr with ath_node ath9k: Refactor struct ath_softc mac80211: Fix HT channel selection ath9k: Do not use association state to update rate table ath9k: Protect config() callback with a mutex Sukadev Bhattiprolu (12): Remove devpts_root global Per-mount allocated_ptys Per-mount 'config' object Extract option parsing to new function Add DEVPTS_MULTIPLE_INSTANCES config token Define mknod_ptmx() Define get_init_pts_sb() Enable multiple instances of devpts Document usage of multiple-instances of devpts SEND_SIG_NOINFO: masquerade si_pid when crossing pid-ns boundary SEND_SIG_NOINFO: set si_pid to tgid instead of pid mqueue: fix si_pid value in mqueue do_notify() Sunil Mushran (5): ocfs2/dlm: Fix a race between migrate request and exit domain ocfs2/dlm: Clean up errors in dlm_proxy_ast_handler() ocfs2/dlm: Hold off sending lockres drop ref message while lockres is migrating ocfs2/dlm: Fix race in adding/removing lockres' to/from the tracking list ocfs2/dlm: Fix race during lockres mastery Suresh Siddha (2): x86: fix intel x86_64 llc_shared_map/cpu_llc_id anomolies x86: use logical apicid in x2apic_cluster's x2apic_cpu_mask_to_apicid_and() Sven Wegener (7): Btrfs: Invalidate dcache entry after creating snapshot and Btrfs: Add compatibility for kernels >= 2.6.27-rc1 leds: eds-pca9532: mark pca9532_event() static leds: Fixup kdoc comment to match parameter names leds: Fix sparse warning in leds-ams-delta leds: Fix wrong loop direction on removal in leds-ams-delta leds: leds-pca9532 - fix memory leak and properly handle errors Swen Schillig (1): [SCSI] zfcp: register with SCSI layer on ccw registration Syed Mohammed Khasim (1): i2c-omap: Add high-speed support to omap-i2c Takahiro Yasui (2): dm log: fix dm_io_client leak on error paths dm log: avoid reinitialising io_req on every operation Takanari Hayama (1): sh: add UIO support for JPU on SH7722. Takashi Iwai (189): ALSA: hda - Add infrastructure for dynamic stream allocation ALSA: hda - Add generic arrays ALSA: hda - Use generic array helpers ALSA: hda - Allocate name string of each codec ALSA: hda - Manage kcontrol lists ALSA: hda - Add codec reconfiguration feature ALSA: hda - Add sysfs entries to hwdep devices ALSA: hda - Add init_verbs entries ALSA: hda - Add hints for reconfig ALSA: Print function symbol in the error messages Merge branch 'topic/hda-reconfig' into topic/hda-next ALSA: hda - Release jack instance for dynamic reconfigure ALSA: pcsp - Fix locking messes in snd-pcsp ALSA: Enable SPDIF output on ALC655 ALSA: ice1724 - Fix TX IRQ lockup ALSA: Add hrtimer backend for ALSA timer interface Merge branch 'topic/hda-next' into topic/hda Merge branch 'topic/asoc-next' into topic/asoc Merge branch 'topic/misc-next' into topic/misc Merge branch 'topic/fix/asoc' into topic/asoc ALSA: hda - Remove old codec-probe limitation Merge branch 'topic/fix/hda' into topic/hda ALSA: hda - Fix indentation in hda_local.h Merge branch 'topic/fix/hda' into topic/hda ALSA: Fix a typo in Kconfig ALSA: ASoC - Fix a typo in Kconfig Merge branch 'topic/fix/asoc' into topic/asoc Merge commit 'v2.6.28-rc2' into topic/asoc Merge branch 'topic/fix/hda' into topic/hda ALSA: hda - Use macros to check array overflow ALSA: hda - Unify capture callbacks in realtek codes ALSA: hda - Unify capture mixer creation in realtek codes ALSA: hda - Re-add input-source control for Realtek ALSA: ice1724 - Fix IRQ register initialization ALSA: hda - Add ALC299 fujitsu preset model ALSA: hda - Fix missing ADC list in ALC260 auto-probe mode ALSA: hda - Fix possible NULL dereference ALSA: hda - Don't create empty PCM streams ALSA: ASoC - Remove unnecessary inclusion of linux/version.h ALSA: hda - Fix unused function in patch_intelhdmi.c ALSA: hda - Add ASUS V1Sn support ALSA: hda - Split ALC268 acer model ALSA: ice1724 - Re-fix IRQ mask initialization ALSA: hda - simplify hda_bus ops callbacks ALSA: hda - Make codec-probing more robust ALSA: hda - Add missing NULL check in amp hash allocation ALSA: hda - Add max allocation check in array allocator ALSA: hda - Fix broken hash chain allocation Merge branch 'topic/fix/misc' into topic/misc Merge branch 'topic/fix/hda' into topic/hda ALSA: Evaluate condition in snd_BUG_ON() in non-debugging case ALSA: Document debug macros ALSA: hda - Fix ALC260 hp3013 master switch ALSA: hda - Fix probe errors on Dell Studio Desktop ALSA: hda - Fix another cache list management Merge branch 'topic/fix/hda' into topic/hda ALSA: powermac - Rename mic-analog loopback mixer element Merge branch 'topic/fix/hda' into topic/hda ALSA: pcsp - Use HRTIMER_CB_IRQSAFE_UNLOCKED ALSA: hda - Support Headphone and Speaker volumes control on VAIO Merge branch 'topic/fix/hda' into topic/hda ALSA: hda - Create jack detection elements in build_controls ALSA: hda - Use init callback in stac92xx_resume() ALSA: hda - Fix restore of pin configs at resume for STAC/IDT codecs Merge branch 'topic/fix/hda' into topic/hda ALSA: hda - Allow multiple imux for matrix-type mixers of ALC codecs ALSA: hda - Show missing GPIO unsol bits ALSA: hda - make laptop-eapd model back for AD1986A Merge branch 'topic/fix/hda' into topic/hda ALSA: hda - Add missing static for snd_hda_eld_proc_new() inline funciton ALSA: hda - Fix double free of jack instances ALSA: hda - Release ELD proc file ALSA: hda - Make CONFIG_SND_HDA_RECONFIG for codec reconfiguration ALSA: hda - Move HD-audio Kconfig items to sound/pci/hda/Kconfig ALSA: hda - mark Dell studio 1535 quirk Merge branch 'topic/fix/hda' into topic/hda ALSA: hda - Fix build without CONFIG_PROC_FS ALSA: hda - No 'Headphone as Line-out' swich without line-outs ALSA: hda - Add probe_mask quirk for Medion MD96630 ALSA: hda - Fix proc pcm rate bits Merge branch 'topic/fix/hda' into topic/hda ALSA: hda - Assign unsol tags dynamically in patch_sigmatel.c ALSA: hda - Add quirk for MSI 7260 mobo Merge branch 'topic/fix/hda' into topic/hda ALSA: hda - Really fix bits value in proc output Merge branch 'topic/misc' into topic/pcsp-fix ALSA: pcsp - Fix starting the stream with HRTIMER_CB_IRQSAFE_UNLOCK ALSA: hda - make some functions static ALSA: hda - Move power_save option to hda_intel.c ALSA: hda - Fix PCM reconfigure ALSA: hda - Fix creation of automatic capture mixers ALSA: hda - Modularize HD-audio driver ALSA: hda - Fix build error with CONFIG_SND_HDA_POWER_SAVE ALSA: hda - Add codec-specific proc hook ALSA: hda - Remove unused proc entry in hda_bus struct ALSA: hda - Add IDT/STAC-specific proc output ALSA: hda - Clear codec->proc_widget_hook at reset ALSA: hda - Add quirk for Sony VAIO VGN-SR19XN ALSA: hda - Check MODULE instead of CONFIG_SND_HDA_INTEL_MODULE ALSA: hda - Don't export symbols when built-in kernel ALSA: hda - Remove EXPERIMENTAL from CONFIG_SND_HDA_POWER_SAVE ALSA: ac97 - Remove EXPERIMENTAL from CONFIG_SND_AC97_POWER_SAVE ALSA: hda - Use amp cache for SPDIF mute controls in patch_sigmatel.c ALSA: hda - Remove unnecessary caches for power states in patch_sigmatel.c ALSA: Fix a compile warning in cs46xx_lib.c ALSA: soc - Fix compile warnings in wm8903.c ALSA: soc - Remove obsoleted sound/driver.h inclusion Merge branch 'upstream' into topic/asoc ALSA: ASoC: Remove superfluous dependency on SND_SOC Revert "ALSA: soc - Fix compile warnings in wm8903.c" ALSA: ASoC: Fix compile warnings on corgi.c ALSA: ASoC: Fix old-style trigger callback in s3c2443-ac97.c ALSA: emu10k1 - Add capture boost mixer switch for Audigy Merge branch 'topic/hda-modularize' into topic/hda ALSA: Add more documentation about HD-audio driver ALSA: hda - Add forgotten module alias for Nvidia MCP67 HDMI ALSA: hda - Add reference to HD-Audio.txt in ALSA-Configuration.txt ALSA: ca0106 - Add power-management support ALSA: hda - Fix pin-detection in patch_sigmatel.c ALSA: hda - Proper power-map toggling for input pins ALSA: timer - Add comments and use ns_to_ktime() ALSA: hrtimer - Use hard-irq callback ALSA: Updates about bug-reporting in ALSA-Configuration.txt ALSA: ASoC - Fix module init entry for twl4030.c ALSA: ASoC - Fix wrong section types ALSA: ASoC - Fix symbol conflicts in omac-mcbsp.c ALSA: ca0106 - Check return value of pci_enable_device() in resume ALSA: hda - Update documentation ALSA: hda - Add quirk for HP6730B laptop ALSA: cs5535 - Make OLPC-stuff depending on MGEODE_LX ALSA: hda - Update HD-Audio.txt ALSA: ASoC - Fix DAI registration in s3c2443-ac97.c ALSA: hda - Fix a compile warning when CONFIG_PM=n ALSA: sb8 - Fix a return code in the error path ALSA: hda - Fix another typo in HD-Audio.txt ALSA: hda - Add development tree URLs in HD-audio.txt ALSA: hda - Add Nvidia vendor id string ALSA: hda - Add Intel vendor id string ALSA: hda - Remove duplicated strings from codec name ALSA: hda - Convert from takslet_hi_schedule() to tasklet_schedule() Merge branch 'fix/hda' into topic/hda Merge branch 'topic/hda-doc' into topic/hda ALSA: split HD-audio model list to HD-Audio-Models.txt ALSA: hda - Add missing initializations of amp and verb caches ALSA: hda - Use snd_hda_ctl_add() in patch_sigmatel.c ALSA: ca0106 - Don't override the values at resume ALSA: ca0106 - Add IEC958 PCM Stream controls ALSA: hda - Fix HD-Audio.txt reference of model list ALSA: ca0106 - Fix typo in resume code Merge branch 'fix/hda' into topic/hda ALSA: hda - Rework on STAC/IDT auto-configuration code ALSA: hda - Use more distinct name for a unique volume in STAC/IDT ALSA: hda - Add probe_only option Merge branch 'fix/asoc' into topic/asoc Merge branch 'topic/hda-stac-fix' into topic/hda ALSA: hda - Fix unused variable warnings in patch_sigmatel.c ALSA: hda - Power up always when no jack detection is available ALSA: ca0106 - Check ac97 availability at PM ALSA: ca0106 - Add missing card->private_data initialization ALSA: ca0106 - disable 44.1kHz capture ALSA: ASoC - Add missing __devexit annotation to wm8350.c ALSA: hda - Add quirk for another HP dv7 Merge branch 'topic/pcsp-fix' into topic/misc Merge branch 'topic/hda-resume-fix' into topic/hda Merge branch 'topic/ca0106-capture-no-44khz' into topic/ca0106 Merge branch 'topic/ca0106-resume' into topic/ca0106 Merge branch 'topic/ca0106-spdif-stream' into topic/ca0106 Merge branch 'fix/hda' into topic/hda Merge branch 'topic/aoa' into to-push Merge branch 'topic/asoc' into to-push Merge branch 'topic/audigy-capture-boost' into to-push Merge branch 'topic/ca0106' into to-push Merge branch 'topic/convert-tasklet' into to-push Merge branch 'topic/cs5535audio' into to-push Merge branch 'topic/hda' into to-push Merge branch 'topic/jack-mechanical' into to-push Merge branch 'topic/oxygen' into to-push Merge branch 'topic/pcxhr-update' into to-push Merge branch 'topic/snd-hrtimer' into to-push Merge branch 'topic/sound-core-fix' into to-push Merge branch 'topic/udev-id-rename' into to-push Merge branch 'topic/asoc' into for-linus Merge branch 'topic/hda' into for-linus Merge branch 'topic/usbaudio' into for-linus Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 into topic/asoc Merge branch 'topic/asoc' into for-linus Merge branch 'topic/misc' into for-linus Merge branch 'topic/asoc' into for-linus Merge branch 'topic/asoc' into for-linus Takashi Sato (3): filesystem freeze: add error handling of write_super_lockfs/unlockfs filesystem freeze: implement generic freeze feature filesystem freeze: remove XFS specific ioctl interfaces for freeze feature Takashi YOSHII (1): sh: Add plain udivsi3 (not _i4*) for gcc-4.1 and lower. Taku Izumi (3): PCI: revert additional _OSC evaluation PCI/ACPI: Remove unnecessary _OSC evaluation for control request pci-acpi: Cleanup _OSC evaluation code Tao Ma (17): ocfs2/xattr: Remove additional bucket allocation in bucket defragment. ocfs2/xattr: Only set buffer update if it doesn't exist in cache. ocfs2/xattr: Only extend xattr bucket in need. ocfs2: Add clusters free in dealloc_ctxt. ocfs2/xattr: Move clusters free into dealloc. ocfs2/xattr: Reserve meta/data at the beginning of ocfs2_xattr_set. ocfs2/xattr: Merge xattr set transaction. ocfs2/xattr: Fix a bug in xattr allocation estimation ocfs2/xattr: Restore not_found in xis ocfs2: fix indendation in ocfs2_dquot_drop_slow ocfs2/quota: sparse fixes for quota ocfs2: Narrow the transaction for deleting xattrs from a bucket. ocfs2/quota: Add QUOTA in mlog_attribute. ocfs2/xattr: Remove extend_trans call and add its credits from the beginning ocfs2/xattr: Always updating ctime during xattr set. ocfs2/xattr: fix credits calculation during index create ocfs2: Access the right buffer_head in ocfs2_merge_rec_left. Tej (1): xen: whitespace/checkpatch cleanup Tejun Heo (23): fuse: move FUSE_MINOR to miscdevice.h fuse: don't let fuse_req->end() put the base reference fuse: implement ioctl support fuse: add file kernel handle fuse: implement unsolicited notification fuse: implement poll support fuse: add fuse_ prefix to several functions fuse: separate out fuse_conn_init() from new_conn() fuse: add fuse_conn->release() libata: beef up iterators libata: when restoring SControl during detach do the PMP links first libata: perform port detach in EH block: reorganize QUEUE_ORDERED_* constants block: remove duplicate or unused barrier/discard error paths block: make every barrier action optional block: make barrier completion more robust block: simplify empty barrier implementation block: fix empty barrier on write-through w/ ordered tag uevent: don't pass envp_ext[] as format string in kobject_uevent_env() poll: allow f_op->poll to sleep ata_piix: save, use saved and restore IOCFG pata_hpt366: reimplement mode programming libata: use WARN_ON_ONCE on hot paths Tetsuo Handa (1): do_coredump(): check return from argv_split() Theodore Ts'o (26): ext3: Add support for non-native signed/unsigned htree hash algorithms ext4: Add support for non-native signed/unsigned htree hash algorithms ext3/4: Fix loop index in do_split() so it is signed Update Documentation/filesystems/ext4.txt ext4: remove ext4_new_blocks() and call ext4_mb_new_blocks() directly ext4: remove ext4_new_meta_block() ext4: remove do_blk_alloc() ext4: tone down ext4_da_writepages warnings jbd2: Add barrier not supported test to journal_wait_on_commit_record ext4: remove extraneous newlines from calls to ext4_error() and ext4_warning() ext4: display average commit time ext4: add fsync batch tuning knobs ext4: Remove i_ext_generation from ext4_inode_info structure ext4: Make ext4_group_t be an unsigned int ext4: Change unsigned long to unsigned int jbd2: Remove a large array of bh's from the stack of the checkpoint routine add releasepage hooks to block devices which can be used by file systems ext4: Remove code to create the journal inode ext4: Add markers for better debuggability jbd2: Add pid and journal device name to the "kjournald2 starting" message jbd2: Submit writes to the journal using WRITE_SYNC ext4: Add mount option to set kjournald's I/O priority ext4: Add sanity checks for the superblock before mounting the filesystem ext4: Make printk's consistently prefixed with "EXT4-fs: " block: Add Kconfig help which notes that ext4 needs CONFIG_LBD ext4: Remove "extents" mount option Thomas Gleixner (9): x86: apic reset counter on shutdown Merge branch 'linus' into core/futexes futex: make clock selectable for FUTEX_WAIT_BITSET trace: fix task state printout sched_clock: prevent scd->clock from moving backwards, take #2 hrtimer: splitout peek ahead functionality hrtimer: fix HOTPLUG_CPU=n compile warning hrtimer: simplify hotplug migration hrtimer: fixup comments Thomas Graf (1): pkt_sched: Control group classifier Thomas Hommel (1): USB: isp1760: don't auto disable Port1 on ISP1761 Thomas Pfaff (1): tty: N_TTY SIGIO only works for read Thomas Reitmayr (1): V4L/DVB (9981): [PATCH] usb-urb.c: Fix initialization of URB list. Tiger Yang (13): ocfs2: move new inode allocation out of the transaction ocfs2: add ocfs2_xattr_set_handle ocfs2: add security xattr API ocfs2: add ocfs2_init_security in during file create ocfs2: add ocfs2_xattr_get_nolock ocfs2: add POSIX ACL API ocfs2: add ocfs2_check_acl ocfs2: add ocfs2_acl_chmod ocfs2: add ocfs2_init_acl in mknod ocfs2: add mount option and Kconfig option for acl ocfs2: calculate and reserve credits for xattr value in mknod ocfs2: alloc xattr bucket in ocfs2_xattr_set_handle ocfs2: Add xattr support checking in init_security Tilman Schmidt (4): gigaset: remove unnecessary poll method gigaset: get rid of info() and warn() macros gigaset: use pr_err() and pr_info() gigaset: ifdef cleanup Tim Abbott (1): kernel/module.c: compare symbol values when marking symbols as exported in /proc/kallsyms. Tim Gardner (1): ipw2x00: change default policy for auto-associate Tim Shimmin (2): [XFS] remove restricted chown parameter from xfs linux [XFS] remove restricted chown parameter from xfs linux Tim Yamin (2): powerpc/mpc5200: Bestcomm fixes to ATA support powerpc/mpc5200: Add MDMA/UDMA support to MPC5200 ATA driver Timur Tabi (1): ASoC: Disable automatic volume control in the CS4270 sound driver Tom Tucker (2): svc: Move kfree of deferral record to common code svc: Clean up deferred requests on transport destruction Tomas Winkler (34): iwlwifi: make initial calibration set configurable iwlwifi: take a valid antenna upon rate scale init iwlwifi: refactor rxon time command iwlwifi: remove host commands structures from iwl_cmd iwlwifi: add iwl_cmd_queue_free for readability iwlwifi: unify tx antenna toggling iwlwifi: fix TX cmd dma unmapping iwlwifi: tx command must run on same tfd as packet iwlwifi: protect headers from double inclusion iwlwifi: refactor TX response flow iwlwifi: don't update TFD free counter for invalid station iwlwifi: parametrize eeprom versions iwlwifi: calibration command namespace renaming iwlwifi: refactor tx byte count table usage iwlwifi: run through spell checker mac80211: fix basic rates setting from association response iwlwifi: revamp tx scheduler byte count tables handling iwlwifi: move spectrum measurement code to iwl-spectrum.c file mac80211: rc80211_pid eliminate sparse warnings iwlwifi: consolidate station management code iwlwifi: rs: remove fc variable and other cleanups iwlwifi: iwl-fh.h cleanup iwlwifi: enable base band calibration in 5000 HW Bluetooth: Fix TX error path in btsdio driver mac80211: disassociate prior to unlinking AP/station iwlwifi: properly initialize calibration command header iwlwifi: 5150 add support for 5150 iwlwifi: 5150 enable DC calibration iwlwifi: 5150 compute ct kill threshold iwlwifi: 5150 parametrize eeprom versions iwlwifi: remove unused clip_groups priv member iwlwifi: remove includes of iwl-helpers.h where not needed iwlwifi: remove 4965 from common uCode API structures iwlwifi: add contact email to MODULE_AUTHOR Tony Breeds (2): powerpc: Protect against NULL pointer deref in phyp-dump code powerpc: Pass a valid token to rtas_call() in phyp-dump code Tony Lindgren (8): i2c-omap: Clean-up i2c-omap ARM: OMAP2: Prepare cpu detection for further improvements ARM: OMAP2: Fix cpu detection ARM: OMAP3: Warn about spurious interrupts omap mmc: Remove broken MMC init code omap mmc: Add better MMC low-level init omap mmc: Add low-level initialization for hsmmc controller USB: otg: sharable otg transceiver ops Tony Vroon (3): ALSA: hda - Add lifebook model for Realtek ALC269 fujitsu-laptop: Add BL power, LED control and radio state information fujitsu-laptop: Simplify SBLL/SBL2 backlight handling Toshiyuki Okajima (2): ext3: provide function to release metadata pages under memory pressure ext4: provide function to release metadata pages under memory pressure Trent Piepho (2): powerpc: Better setup of boot page TLB entry PCI: Make settable sysfs attributes more consistent Trond Myklebust (37): SUNRPC: Remove the last remnant of the BKL... SUNRPC: Convert the xdr helpers and rpc_pipefs to EXPORT_SYMBOL_GPL SUNRPC: rpcsec_gss modules should not be used by out-of-tree code SUNRPC: nfsacl_encode/nfsacl_decode should be exported as GPL-only LOCKD: Make lockd_up() and lockd_down() exported GPL-only NFSv4: Fix up another delegation related race NFSv4: Fix up the dereferencing of delegation->inode NFS: Use atomic bitops when changing struct nfs_delegation->flags NFSv4: Clean up for the state loss reclaimer NFSv4: Callers to nfs4_get_renew_cred() need to hold nfs_client->cl_lock NFSv4: Fix state recovery when the client runs over the grace period NFSv4: Remove redundant RENEW calls if we know the lease has expired NFSv4: Don't tell server we rebooted when not necessary NFSv4: Add a recovery marking scheme for state owners NFSv4: Ensure that nfs4_reclaim_open_state() doesn't depend on cl_sem NFS: Remove the unnecessary argument to nfs4_wait_clnt_recover() NFSv4: Ensure that file unlock requests don't conflict with state recovery NFSv4: Remove nfs_client->cl_sem NFSv4: Add recovery for individual stateids NFSv4: Clean up the support for returning multiple delegations NFSv4: Clean up NFS4ERR_CB_PATH_DOWN error management... NFSv4: Rename the state reclaimer thread NFSv4: Don't exit the state management if there are still tasks to do NFSv4: Fix a BAD_SEQUENCEID condition. NFSv4: Clean up nfs_expire_all_delegations() NFSv4: Clean up the asynchronous delegation return NFSv4: Return unreferenced delegations more promptly NFSv4: Fix up delegation callbacks NFSv4: Convert delegation->type field to fmode_t NFSv4: Clean up is_atomic_open() NFSv4: Ensure that we set the verifier when revalidating delegated dentries NFS: Use delegations to optimise ACCESS calls NFSv4: Convert the open and close ops to use fmode NFSv4: Fix an infinite loop in the NFS state recovery code Merge branch 'devel' into next SUNRPC: Ensure the server closes sockets in a timely fashion SUNRPC: The sunrpc server code should not be used by out-of-tree modules Troy Kisky (11): ASoC: Allow setting codec register with debugfs filesystem ALSA: SOC: Fix setting codec register with debugfs filesystem merge error ASoC: TLV320AIC23B Support more sample rates ALSA: ASoC: DaVinci: davinvi-evm, make requests explicit ALSA: ASoC: DaVinci: davinci-i2s add comments to explain polarity ALSA: ASoC: DaVinci: davinci-i2s clean up ALSA: ASoC: DaVinci: davinci-i2s clean up ALSA: ASoC: DaVinci: document I2S limitations ALSA: ASoC: tlv320aic3x add dsp_a ALSA: ASoC: DaVinci: i2s, evm, pass same value to codec and cpu_dai ALSA: ASoc: DaVinci: davinci-evm use dsp_b mode Török Edwin (10): tracing: add support for userspace stacktraces in tracing/iter_ctrl vfs, seqfile: make mangle_path() global tracing: identify which executable object the userspace address belongs to tracing/stack-tracer: fix style issues tracing/stack-tracer: fix locking and refcounts tracing/stack-tracer: introduce CONFIG_USER_STACKTRACE_SUPPORT tracing/stack-tracer: avoid races accessing file vfs, seqfile: fix comment style on mangle_path mutex: __used is needed for function referenced only from inline asm tracing, alpha: fix build: add missing #ifdef CONFIG_STACKTRACE Udo Steinberg (1): V4L/DVB (10173): Missing v4l2_prio_close in radio_release Ulrich Dangel (2): ALSA: hda - add basic jack reporting functions to patch_conexant.c ALSA: hda - cxt5051 report jack state Uri Shkolnik (1): V4L/DVB (9740): sms1xxx: add USB suspend and hibernation support Uros Bizjak (1): x86: Implement change_bit with immediate operand as "lock xorb" Ursula Braun (4): [S390] convert iucv printks to dev_xxx and pr_xxx macros. qeth: exploit source MAC address for inbound layer3 packets qeth: avoid crash in case of layer mismatch for VSWITCH af_iucv: avoid left over IUCV connections from failing connects Uwe Bugla (1): V4L/DVB (9888): Patch: fix a typo in cx24113.c Uwe Kleine-Koenig (1): Merge branch 'for-rmk-misc' into for-rmk Uwe Kleine-König (10): mach-netx/time.c: codingstyle cleanup netx: Use a cpp symbol for the clocksource timer number netx: enable GENERIC_TIME netx: add support for clockevents netx/xc: add a few "const"s to fix compiler warnings netx: define register MEMCR small doc fix: ftrace_dyn_arch_init is called by ftrace_init Fix configure warnings in defconfigs for netX and Picotux 200 remove a superfluous kconfig type definition at91: warn if irqs are enabled in set_next_event Vaibhav Hiremath (2): V4L/DVB (9816): v4l2-int-if: add three new ioctls for std handling and routing V4L/DVB (9817): v4l: add new tvp514x I2C video decoder driver Vaidyanathan Srinivasan (8): sched: idle_balance() does not call load_balance_newidle() sched: convert BALANCE_FOR_xx_POWER to inline functions sched: favour lower logical cpu number for sched_mc balance sched: nominate preferred wakeup cpu sched: bias task wakeups to preferred semi-idle packages sched: activate active load balancing in new idle cpus sched: add SD_BALANCE_NEWIDLE at MC and CPU level for sched_mc>0 sched: nominate preferred wakeup cpu, fix Valentin Longchamp (4): MX31: definitions for UART2 pins MX31: UART5 pins definition [ARM] MX31: basic support for mx31moboard platform [ARM] MX31: defconfig for mx31moboard platform Vasanthakumar Thiagarajan (5): ath9k: Configure AR_PHY_SWITCH_COM with apropriate antenna control ath9k: Fix panic while unregistering rfkill ath9k: Dont update rate control for every AMPDU ath9k: Synchronize DMA transfer with CPU at right place ath9k: Move rate control alg register/unregister to appropriate place Vedran Miletic (3): ALSA: emu10k1: fix device names for Live!/Audigy1/2/4/E-mu ALSA: emu10k1: fix faulty commit 18c71092 ALSA: emu10k1: fix coding style for emu10k1_main.c Vegard Nossum (6): sched: update comment for move_task_off_dead_cpu Bluetooth: Fix leak of uninitialized data to userspace kbuild: add headerdep used to detect inclusion cycles in header files x86: revert CONFIG_RELOCATABLE=y defconfig change netlink: fix (theoretical) overrun in message iteration drm: fix leak of uninitialized data to userspace Venki Pallipadi (1): x86: support always running TSC on Intel CPUs Vernon Sauder (1): pxamci: fix dma_unmap_sg length Vijay Kumar (8): Staging: poch: Block size bug fix Staging: poch: Update TODO list Staging: poch: Correct pages from bytes. Staging: poch: minor fixes Staging: poch: Fix build warnings Staging: poch: Rx control register init Staging: poch: Fix user space protocol syncing Staging: poch: Fine grained locking Vikram Pandita (1): USB: Avoid 20ms delay in EHCI resume Viktor Rosendahl (1): oops handling: ensure that any oops is flushed to the mtdoops console Vincent Pelletier (1): V4L/DVB (9536): WinFast DTV2000 H: add support for missing analog inputs Vincent Petry (2): ALSA: hda: Added Realtek ALC888 model entry for Acer Aspire 4930G laptop ALSA: hda: Added an ALC888 model entry for Fujitsu-Siemens Amilo Xa3530 Vishnu Suresh (1): crypto: talitos - Preempt overflow interrupts off-by-one fix Vitaly Bordug (1): USB: powerpc: Workaround for the PPC440EPX USBH_23 errata [take 3] Vivek Natarajan (1): mac80211: Look out for some other AP when disassoc is received. Vladislav Bolkhovitin (1): [SCSI] scsi_error: TASK ABORTED status handling improvement Volker Lendecke (8): [CIFS] In SendReceive, move consistency check out of the mutexed region Simplify allocate_mid() slightly: Remove some unnecessary "else" branches [CIFS] Slightly simplify wait_for_free_request(), remove an unnecessary "else" branch Check the return value of cifs_sign_smb[2] Slightly streamline SendReceive[2] Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition Remove an already-checked error condition in SendReceiveBlockingLock WANG Cong (4): fs/nfs/nfs4proc.c: make nfs4_map_errors() static proc: remove write-only variable in proc_pident_lookup() fs/exec.c: make do_coredump() void ipc: clean up ipc/shm.c Wang Chen (37): airo: Kill directly reference of netdev->priv netdevice libertas: Fix directly reference of netdev->priv netdevice: safe convert to netdev_priv() #part-1 netdevice: safe convert to netdev_priv() #part-2 netdevice: safe convert to netdev_priv() #part-3 netdevice: safe convert to netdev_priv() #part-4 netdevice chelsio: Convert directly reference of netdev->priv netdevice: 82596: Convert netdev->priv to netdev_priv netdevice hamradio: Convert directly reference of netdev->priv netdevice lance: Convert directly reference of netdev->priv netdevice ppp: Convert directly reference of netdev->priv netdevice ni65: Convert directly reference of netdev->priv netdevice wanrouter: Convert directly reference of netdev->priv ixgbe: convert directly reference of netdev->priv netdevice hdlc: Convert directly reference of netdev->priv netdevice pc300: Convert directly reference of netdev->priv netdevice pc300: Add the reason about PC300 BROKEN in Kconfig netdevice sbni: Convert directly reference of netdev->priv infiniband: Kill directly reference of netdev->priv hysdn: Kill directly reference of netdev->priv isdn: Kill directly reference of netdev->priv dvb: Kill directly reference of netdev->priv mptlan: Kill directly reference of netdev->priv bond: Kill directly reference of netdev->priv ixgbe: function comment typo e1000: e1000_adapter->polling_netdev is useless if_usb: Kill directly reference of netdev->priv simeth: Kill directly reference of netdev->priv xtensa: Kill directly reference of netdev->priv um: Kill directly reference of netdev->priv sgi-xp: Kill directly reference of netdev->priv s390_net: Kill directly reference of netdev->priv staging-p80211: Kill directly reference of netdev->priv staging-slicoss: Kill directly reference of netdev->priv staging-winbond: Kill directly reference of netdev->priv netdevice: Kill netdev->priv netdevice zd1201: Use after free Wei Yongjun (6): xfrm: Cleanup for unlink SPD entry sctp: Bring SCTP_MAXSEG socket option into ietf API extension compliance sctp: Fix a typo in socket.c sctp: Implement socket option SCTP_GET_ASSOC_NUMBER sctp: Avoid memory overflow while FWD-TSN chunk is received with bad stream ID sctp: Add validity check for SCTP_PARTIAL_DELIVERY_POINT socket option Weidong Han (17): Initialize domain flags to 0 change P2P domain flags Add global iommu list Get iommu from g_iommus for deferred flush iommu bitmap instead of iommu pointer in dmar_domain calculate agaw for each iommu iommu coherency Add domain flag DOMAIN_FLAG_VIRTUAL_MACHINE Add/remove domain device info for virtual machine domain Add domain_flush_cache Allocation and free functions of virtual machine domain Change domain_context_mapping_one for virtual machine domain Change intel iommu APIs of virtual machine domain Check agaw is sufficient for mapped memory KVM: use the new intel iommu APIs KVM: support device deassignment Deassign device in kvm_free_assgined_device Werner Almesberger (1): remove bashisms from scripts/extract-ikconfig Will Newton (1): init/main.c: use ktime accessor function in initcall_debug code Willy Tarreau (4): Staging: add lcd-panel driver Staging: panel: major checkpatch cleanup Staging: panel: remove ifdefs and code for pre-2.6 kernels Staging: panel: remove support for smartcards Wim Van Sebroeck (4): nvram - CodingStyle nvram - convert PRINT_PROC to seq_file [WATCHDOG] ib700wdt - add timeout parameter [WATCHDOG] Add SMSC SCH311x Watchdog Timer. Winkler, Tomas (21): iwlwifi: reorganize flow handler bitology iwlwifi: trivial removal of some 4965 remaining from iwl-agn-rs.h iwlwifi: iwl-agn-rs: initialize rs with valid antenna iwlwifi: trivial fix in includes iwlwifi: don't fail power set when calibration is not done yet iwlwifi: move rx queue read pointer into rxq iwlwifi: move iwl_print_hex_dump to iwl-debug.h iwlwifi: get some more information about command failure iwlwifi: move iwl_clear_stations_table to iwl-sta.c iwlwifi: 4965 define firmware file name once iwlwifi: TX setup fix confusion between TX queue and TX DMA channel iwlwifi: TX update chicken bits iwlwifi: 5150 enable LO, TXIQ and BB calibrations iwlwifi: move host command check function into separate file iwlwifi: move disable/enable interrupts to iwl-core.c iwlwifi: move channels sysfs to debugfs iwlwifi: change email contact information iwlifi: remove twice defined SINGLE_FRAME RX FH MASK iwlwifi: 3945 remove qos module parameter iwlwifi: remove qos module parameter iwlwifi: cleanup iwl-dev.h Wolfgang Grandegger (1): [MTD] CFI: remove major/minor version check for command set 0x0002 Wolfram Sang (6): powerpc/mpc5200: Remove obsolete code from mpc5200 MDIO driver powerpc/mpc5200: add rts/cts handling in PSC UART driver powerpc/mpc5200: fix error paths in PSC UART probe function checkpatch: Add warning for p0-patches kbuild: fix typos (s/bin_shipped/bin.o_shipped/) in Documentation leds: Make header variable naming consistent Woodruff, Richard (1): nohz: suppress needless timer reprogramming Wu Fengguang (50): ext4: fix build warning ALSA: handle SiI1392 HDMI codec in patch_intelhdmi.c ALSA: hda: alc883 model for ASUS P5Q-EM boards ALSA: hda-intel: reorder HDMI audio enabling sequence ALSA: hda: remove redundant get_amp_nid() ALSA: introduce snd_print_pcm_rates() ALSA: create hda_eld.c for ELD routines and proc interface ALSA: ELD proc interface for HDMI sinks ALSA: hda: make standalone hdmi_fill_audio_infoframe() ALSA: hda: make global snd_print_channel_allocation() ALSA: hda: HDMI channel allocations for audio infoframe ALSA: hda: HDMI channel mapping cleanups ALSA: hda: minor code cleanups ALSA: hda: rename sink_eld to hdmi_eld ALSA: hda: minor output message cleanups ALSA: hda: make global snd_print_pcm_bits() ALSA: hda: compact ELD output messages ALSA: azx_probe() cleanup ALSA: hda - properly print ELD sample bits ALSA: hda: modify monitor name to be consistent with other ELD proc items ALSA: hda - support writing to the ELD proc file ALSA: hda - minor HDMI code cleanups ALSA: hda - report selected CA index for Audio InfoFrame ALSA: hda - make HDMI messages more user friendly ALSA: hda - ELD proc interface write updates ALSA: hda - document the ELD proc interface ALSA: hda - fix DisplayPort naming ALSA: hda - fix build warning when CONFIG_PROC_FS=n markers: comment marker_synchronize_unregister() on data dependency generic swap(): ath9k: rename swap() to swap_array() iwlwifi: remove useless goto nfs: remove redundant tests on reading new pages block: don't take lock on changing ra_pages KVM: Prevent trace call into unloaded module text ALSA: hda - fix name for ALC1200 trivial: radix-tree: document wrap-around issue of radix_tree_next_hole() dynamic_printk: reduce one level of indentation dm9601: handle corrupt mac address dm9601: bring datasheet URL up to date USB: make printk messages more searchable generic swap(): sparc: rename swap() to swap_ulong() generic swap(): iphase: rename swap() to swap_byte_order() generic swap(): lib/sort.c: rename swap to swap_func generic swap(): introduce global macro swap(a, b) generic swap(): ext3: remove local swap() macro generic swap(): ext4: remove local swap() macro generic swap(): sched: remove local swap() macro generic swap(): dcache: use swap() instead of private do_switch() dm9601: tell HW about random generated mac address dm9601: warn on invalid mac address Wu, Fengguang (5): ALSA: hda - Intel HDMI audio support iwlwifi: add line feed to printk iwlwifi: update comments on the debug interface iwlwifi: use type uint for module param debug iwlwifi: use meaningful vars in _iwl_poll_bit() Wyatt Banks (1): Btrfs: Return value checking in module init Xiantao Zhang (8): KVM: ia64: Re-organize data sturure of guests' data area KVM: ia64: Remove lock held by halted vcpu KVM: ia64: Remove some macro definitions in asm-offsets.c. KVM: ia64: Define printk function for kvm-intel module KVM: ia64: Add some debug points to provide crash infomation KVM: ia64: Add handler for crashed vmm KVM: ia64: Clean up vmm_ivt.S using tab to indent every line MAINTAINERS: Maintainership changes for kvm/ia64 Xiaochuan-Xu (2): UBI: prepare for protection tree improvements UBI: simplify PEB protection code Yan (53): fix block readahead in btrfs_next_leaf Btrfs: ctree.c cleanups Btrfs: Fix mknod to properly send rdev info back to disk Btrfs: Add mount into directory support Btrfs: Fix oopsen in extent_tree.c during enospc Btrfs: Fix off by one error in dirty_and_release_pages Btrfs: Fix cache_block_group to catch holes at the start of the group fix found_type decrement in btrfs_truncate_in_trans create btrfs_path slab with the correct size Btrfs: truncate: don't update inode->i_blocks when extent is a hole Btrfs: Fix double free and off by one in inode.c Btrfs: Off by one fixes in extent_map.c Btrfs: Fix for insert_inline_extent to handle offset != 0 btrfs_inode_by_name return random value. Fix ENOTEMPTY check in btrfs_rmdir Btrfs: Fix extent_map leak in extent_bmap Fix inline extent handling in btrfs_get_extent Minor fix for btrfs_csum_file_block. Btrfs: Fix typo and memory leak in extent-tree.c Btrfs: small fixes for find_lock_delalloc_range. Btrfs: Properly update free space cache in __free_extent Btrfs: Fix u32 overflow in dirty_and_release_pages. Fix EXTENT_MAP_INLINE off by one in btrfs_drop_extents Properly delete csum item in btrfs_truncate_in_trans. Btrfs: Add block group pinned accounting back Btrfs: Add full_scan parameter to find_search_start Btrfs: Off by one fixes for extent-tree.c Btrfs: Properly update right_nritems in push_leaf_left Btrfs: Fix buffer get/release issue in create_snapshot Off by one fix for btrfs_drop_extents Btrfs: Add a helper that finds previous extent item Btrfs: Properly handle overlapping extent in shrink_extent_tree Btrfs: Add inode flags support Btrfs: Implement ACLs setting and getting Btrfs: Add readonly inode flag Btrfs: Fix compile on kernel without ACLs enabled Btrfs: Fix compile on 2.6.22 kernel Fix for btrfs_find_free_objectid Btrfs: Fix for test_range_bit Btrfs: Add basic lockfs calls Btrfs: Align extent length to sectorsize in btrfs_drop_extent fixe for inline items > 8K Call btrfs_cow_block while lowering tree level. Btrfs: Fix typo in extent_io.c Btrfs: Fix hole creation in file_write btrfs_drop_extents: handle BTRFS_INODE_REF_KEY types Btrfs: Fix "no csum found for inode" issue. Fix btrfs_fill_super to return -EINVAL when no FS found Btrfs: Dislable acl xattr handlers Btrfs: Properly release lock in pin_down_bytes Btrfs: Fix .. lookup corner case Fix path slots selection in btrfs_search_forward Btrfs: implement memory reclaim for leaf reference cache Yan Zheng (37): Btrfs: Properly setup root key while reading the root Btrfs: Fix looping on readdir of the subvol roots Btrfs: Add a leaf reference cache Btrfs: Update and fix mount -o nodatacow Btrfs: Various small fixes. Btrfs: Update clone file ioctl Btrfs: Fix nodatacow for the new data=ordered mode Btrfs: Count space allocated to file in bytes Btrfs: Remove offset field from struct btrfs_extent_ref Btrfs: Fix leaf reference cache miss Btrfs: Improve space balancing code Btrfs: Add root tree pointer transaction ids Btrfs: update hole handling v2 Btrfs: Fix bookend extent race v2 Btrfs: update nodatacow code v2 Btrfs: Add fallocate support v2 Btrfs: Fix csum error for compressed data Btrfs: Fix starting search offset inside btrfs_drop_extents Btrfs: mount ro and remount support Btrfs: Seed device support Btrfs: Fix race in btrfs_mark_extent_written Btrfs: Drop dirty roots created by log replay immediately when Btrfs: superblock duplication Btrfs: Add checking of csum tree in balancing code Btrfs: fix leaking block group on balance Btrfs: shared seed device Btrfs: fix nodatasum handling in balancing code Btrfs: properly check free space for tree balancing Btrfs: Add missing mnt_drop_write in ioctl.c Btrfs: properly update block accounting for metadata Btrfs: set EXTENT_BOUNDARY bit before marking extent delalloc. Btrfs: update directory's size when creating subvol/snapshot Btrfs: avoid potential super block corruption Btrfs: avoid orphan inode caused by log replay Btrfs: Use btrfs_join_transaction to avoid deadlocks during snapshot creation Btrfs: don't change file extent's ram_bytes in btrfs_drop_extents Btrfs: tree logging checksum fixes Yang Hongyang (3): ipv6: Add IPV6_PKTINFO sticky option support to setsockopt() ipv6: fix the return interface index when get it while no message is received ipv6: fix the outgoing interface selection order in udpv6_sendmsg() Yang, Libin (1): ALSA: hda - support detecting HD Audio devices with PCI class code Yasunori Goto (1): ext4: Widen type of ext4_sb_info.s_mb_maxs[] Yehuda Sadeh Weinraub (2): Btrfs: fix return value from btrfs_listxattr when buffer size is too small Btrfs: fix return value from btrfs_listxattr when buffer size is too small Yevgeny Petrilin (11): mlx4_core: Add support for multiple completion event vectors mlx4_en: Memory leak on completion queue free mlx4_en: Removed TX locking when polling TX cq mlx4_en: Removed redundant cq->armed flag mlx4_en: Removed Interrupt moderation module parameters mlx4_en: Remove pauses module parameters. mlx4_en: Verify number of RX rings doesn't exceed MAX_RX_RINGS mlx4_en: Always allocate RX ring for each interrupt vector mlx4_en: Added "set_ringparam" Ethtool interface implementation mlx4_en: Consider inline packets on completion mlx4_en: Returning real Max in get_ringparam Yi Li (4): Blackfin arch: workaround bug: spi_mmc driver working in dma mode may hang the system Blackfin arch: add mmc_spi support to BF537-STAMP Blackfin arch: Retire old spi_mmc driver Blackfin arch: merge adeos blackfin part to arch/blackfin/ Ying Han (1): mm: make get_user_pages() interruptible Yinghai Lu (25): x86: break up mtrr_cleanup() into several small functions. x86: fix wakeup_cpu with numaq/es7000, v2 x86: fix wakeup_cpu with numaq/es7000, v2, fix x86: use update_genapic to get rid of ES7000_CLUSTERED_APIC v2 x86: fix wakeup_cpu with numaq/es7000 v2 - call ->update_genapic() sparse irq_desc[] array: core kernel and x86 changes x86: use NR_IRQS_LEGACY x86: MSI start irq numbering from nr_irqs_gsi x86, MSI: pass irq_cfg and irq_desc x86: clean up get_smp_config() sparseirq: fix Alpha build failure sparseirq: fix !SMP && !PCI_MSI && !HT_IRQ build x86, sparseirq: move irq_desc according to smp_affinity, v7 sparseirq: fix !SMP building, #2 sparseirq: add kernel-doc notation for new member in irq_desc, -v2 sparseirq: fix numa_migrate_irq_desc dependency and comments x86: fix lguest used_vectors breakage, -v2 sparseirq: remove duplicated arch_early_irq_init() sparseirq: work around compiler optimizing away __weak functions sparseirq: set lock_class for legacy irq when sparse_irq is selected sparseirq: fix hang with !SPARSE_IRQ sparseirq: move __weak symbols into separate compilation unit sparseirq: move set/get_timer_rand_state back to .c x86: k8 numa register active regions later mm: print out memmap number only if it is not zero Yoichi Yuasa (1): leds: fix Cobalt Raq LED dependency Yong Yao (2): Input: add support for trackball on pxa930 and pxa935 Input: add support for enhanced rotary controller on pxa930 and pxa935 Yoshihiro Shimoda (1): sh: pci-sh7780: fix pci memory address mask Yu Zhao (10): VT-d: fix segment number being ignored when searching DRHD PCI: enhance pci_ari_enabled() PCI: remove unnecessary arg of pci_update_resource() PCI: define PCI resource names in an 'enum' PCI: remove unnecessary condition check in pci_restore_bars() PCI: export __pci_read_base() PCI: allow pci_alloc_child_bus() to handle a NULL bridge PCI: add a new function to map BAR offsets PCI: cleanup pci_bus_add_devices() PCI: factor pci_bus_add_child() from pci_bus_add_devices() Zach Brown (1): Btrfs: trivial include fixups Zachary Amsden (1): x86: clean up dead code in vmi_32.c Zhang Rui (4): ACPI: video: Fix reversed brightness behavior on ThinkPad SL series Hibernate: Call platform_begin before swsusp_shrink_memory video: always update the brightness when poking "brightness" bd->props.brightness doesn't reflect the actual backlight level. Zhao Yakui (2): ACPI: Avoid array address overflow when _CST MWAIT hint bits are set ACPI : Use RSDT instead of XSDT by adding boot option of "acpi=rsdt" Zhaolei (6): markers: break the redundant loop in kernel/marker.c x86: avoid duplicate running of pud_offset and pmd_offset in one_md_table_init() Fix debugfs_create_bool's error checking method for wireless/iwlwifi/ Fix debugfs_create_*'s error checking method for wireless/rt2x00/ correct wrong function name of d_put in kernel document and source comment fork.c: cleanup for copy_sighand() Zheng Yan (7): Btrfs: Update find free objectid function for orphan cleanup code Btrfs: properly set blocksize when adding new device. Btrfs: Full back reference support Btrfs: allocator fixes for space balancing update Btrfs: Add shared reference cache Btrfs: extent_map and data=ordered fixes for space balancing Btrfs: update space balancing code ZhenwenXu (1): mm/mmap.c: fix coding style Zhenyu Wang (1): agp/intel: add support for G41 chipset Zhu Yi (4): mac80211: print reason code for deauth/dissoc frames iwlwifi: fix printk size format error iwlwifi: fix DMA channel number in iwl_txq_ctx_stop iwlwifi: use GFP_KERNEL to allocate Rx SKB memory Zhu, Yi (9): iwlwifi: fix priv->iw_mode setting when multiple vif are configured iwlwifi: use Rx single frame mode (one Rx frame per RB) iwlwifi: configure_filter rewrite iwlwifi: some fh document fix and cleanup iwlwifi: fix time interval misuse in iwl_poll_{direct_}bit iwlwifi: fix "MAC in deep sleep" error iwlwifi: iwl_poll_{direct_}bit cleanup iwlwifi: use rmb/wmb to protect indirect mmio operation iwlwifi: use iwl_poll_direct_bit in EEPROM reading Zoltan Devai (1): Input: pcspkr - fix PIT lockup on some chipsets \"J. Bruce Fields\ (9): rpc: remove unnecessary assignment rpc: factor out warning code from gss_pipe_destroy_msg rpc: minor gss_alloc_msg cleanup rpc: add an rpc_pipe_open method rpc: call release_pipe only on last close rpc: track number of users of the gss upcall pipe rpc: use count of pipe openers to wait for first open rpc: store pointer to pipe inode in gss upcall message rpc: implement new upcall akeemting (1): jme: GHC register control fix for new hardware akpm@linux-foundation.org (1): ipc/ipc_sysctl.c: move the definition of ipc_auto_callback() colin@cozybit.com (1): Add nl80211 commands to get and set o11s mesh networking parameters gorcunov@gmail.com (1): x86: entry_64.S - use X86_EFLAGS_IF instead of hardcoded number herton (1): rtl8187: fix retry count passed in rtl8187_tx jia zhang (2): x86_64: fix the check in stack_overflow_check x86, debug: remove the confusing entry in call trace malahal@us.ibm.com (1): block: optimizations in blk_rq_timed_out_timer() philipl@overt.org (1): ricoh_mmc: Handle newer models of Ricoh controllers robert.moore@intel.com (2): ACPICA: FADT: set acpi_gbl_use_default_register_widths to TRUE by default ACPICA: Update version to 20081204. roel kluin (10): slab: unsigned slabp->inuse cannot be less than 0 powerpc/macintosh: Fix unsigned check in smu_sat_get_sdb_partition() powerpc: Make open count variables signed in hvcs/hvsi/hvc_console [SCSI] u14-34f: fix scsi_dma_map failure case V4L/DVB (10064): mt9m111: mt9m111_get_global_gain() - unsigned >= 0 is always true V4L/DVB (10148): cx23885: unsigned cx23417_mailbox cannot be negative gbefb: unsigned var->pixclock cannot be less than 0 sm501: unsigned ptr cannot be negative USB: clean up redundant tests on unsigned romfs: romfs_iget() - unsigned ino >= 0 is always true 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 venkatesh.pallipadi@intel.com (12): x86: PAT: store vm_pgoff for all linear_over_vma_region mappings - v3 x86: PAT: add follow_pfnmp_pte routine to help tracking pfnmap pages - v3 x86: PAT: hooks in generic vm code to help archs to track pfnmap regions - v3 x86: PAT: implement track/untrack of pfnmap regions for x86 - v3 x86: PAT: change pgprot_noncached to uc_minus instead of strong uc - v3 x86: PAT: add pgprot_writecombine() interface for drivers - v3 x86: PAT: update documentation to cover pgprot and remap_pfn related changes - v3 x86: PAT: clarify is_linear_pfn_mapping() interface x86: PAT: modify follow_phys to return phys_addr prot and return value x86: PAT: remove follow_pfnmap_pte in favor of follow_phys x86: PAT: move track untrack pfnmap stubs to asm-generic x86: PAT: pfnmap documentation update changes walimis (2): ftrace: remove unnecessary if condition of __unregister_ftrace_function ftrace: improve documentation wanzongshun (2): [ARM] 5338/1: Add Nuvoton W90P910 Platform support [ARM] 5352/1: add w90p910-plat config file yanhai zhu (3): Btrfs: Check kthread_should_stop() before schedule() in worker_loop Btrfs: Add a missing return pointer check Btrfs: Fix memset length in btrfs_file_write Éric Piel (1): sdhci: activate led support also when module ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:28 2009 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,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQSXa183514 for ; Thu, 21 May 2009 15:26:28 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQSUG183491; Thu, 21 May 2009 15:26:28 -0500 Date: Thu, 21 May 2009 15:26:28 -0500 Message-Id: <200905212026.n4LKQSUG183491@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.28, created. v2.6.28 X-Git-Refname: refs/tags/v2.6.28 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 8a38e7fd7a30cd44be954f9a3b062e607cec5d41 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 annotated tag, v2.6.28 has been created at 8a38e7fd7a30cd44be954f9a3b062e607cec5d41 (tag) tagging 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 (commit) replaces v2.6.28-rc9 tagged by Linus Torvalds on Wed Dec 24 15:26:58 2008 -0800 - Log ----------------------------------------------------------------- Linux 2.6.28 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAklSxUcACgkQF3YsRnbiHLtgHACfYFKiZBoZ2QVoeYTNOKBLevwq sIkAnA2TiLltms7+p+DPA8+scOL+f92d =3MdI -----END PGP SIGNATURE----- Andi Kleen (1): x86: re-enable MCE on secondary CPUS after suspend/resume Antti Seppälä (1): V4L/DVB (9781): [PATCH] Cablestar 2 I2C retries (fix CableStar2 support) Bjorn Helgaas (2): x86 gart: don't complain if no AMD GART found ACPI: fix 2.6.28 acpi.debug_level regression Brian King (1): [SCSI] ibmvstgt: move crq_queue_create to the end of initialization Chris Elston (1): rtc: rtc-isl1208: reject invalid dates Dave Airlie (2): drm/i915: GEM on PAE has problems - disable it for now. drm/radeon: fix correctness of irq_enabled check for radeon. David Daney (2): MIPS: Fix preprocessor warnings flaged by GCC 4.4 MIPS: MIPS64R2: Fix buggy __arch_swab64 Devin Heitmueller (2): V4L/DVB (9780): dib0700: Stop repeating after user stops pushing button V4L/DVB (9920): em28xx: fix NULL pointer dereference in call to VIDIOC_INT_RESET command Dmitry Adamushko (1): x86: fix resume (S2R) broken by Intel microcode module, on A110L Duane Griffin (1): 9p: Remove potentially bad parameter from function entry debug print. Eric Anholt (1): drm/i915: Don't return busy for buffers left on the flushing list. Evgeniy Polyakov (1): w1: fix slave selection on big-endian systems Hans Verkuil (1): V4L/DVB (9906): v4l2-compat: test for unlocked_ioctl as well. Harry Ciao (1): edac: fix edac core deadlock when removing a device Herton Ronaldo Krzesinski (1): ALSA: hda - Add missing terminators in patch_sigmatel.c Hidetoshi Seto (1): PCI: fix aer resume sanity check Hillier, Gernot (1): [SCSI] aacraid: disable Dell Percraid quirk on Adaptec 2200S and 2120S Ingo Molnar (2): 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 x86: disable X86_PTRACE_BTS James Bottomley (2): [SCSI] scsi_lib: only call scsi_unprep_request() under queue lock [SCSI] mpt fusion: clear list of outstanding commands on host reset James Chapman (1): ppp: fix segfaults introduced by netdev_priv changes Jim Paris (1): V4L/DVB (9875): gspca - main: Fix vidioc_s_jpegcomp locking. Jiri Slaby (1): V4L/DVB (9908a): MAINTAINERS: mark linux-uvc-devel as subscribers only Joerg Roedel (3): AMD IOMMU: allocate rlookup_table with __GFP_ZERO AMD IOMMU: set cmd buffer pointers to zero manually AMD IOMMU: panic if completion wait loop fails Joerg Schirottke (1): ALSA: hda - Add quirk for Dell Studio 17 Julia Lawall (2): fs/9p: change simple_strtol to simple_strtoul drivers/ide/{cs5530.c,sc1200.c}: Move a dereference below a NULL test Justin Chen (1): PCI hotplug: acpiphp wants a 64-bit _SUN Kenji Kaneshige (1): PCI: pciehp: fix unexpected power off with pciehp_force Kyle McMartin (1): parisc: disable UP-optimized flush_tlb_mm Li Zefan (1): cgroups: avoid accessing uninitialized data in failure path Linus Torvalds (17): Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Linux 2.6.28 Mauro Carvalho Chehab (1): V4L/DVB (9885): drivers/media Kconfig's: fix bugzilla #12204 Mike Christie (1): [SCSI] libiscsi REGRESSION: fix passthrough support with older iscsi tools Neil Horman (1): PCI hotplug: ibmphp: Fix module ref count underflow NeilBrown (1): md: Don't read past end of bitmap when reading bitmap. Sharyathi Nagesh (1): cgroups: suppress bogus warning messages Stanley Miao (1): ALSA: Fix a Oops bug in omap soc driver. Stephen M. Cameron (1): cciss: fix problem that deleting multiple logical drives could cause a panic Takashi Iwai (5): ALSA: hda - Fix silent HP output on D975 ALSA: Revert "ALSA: hda: removed unneeded hp_nid references" ALSA: hda - Add no-jd model for IDT 92HD73xx ALSA: hda - Remove non-working headphone control for Dell laptops Merge branch 'fix/asoc' into for-linus Thomas Gleixner (1): Null pointer deref with hrtimer_try_to_cancel() Wei Yongjun (1): net: Fix module refcount leak in kernel_accept() Wu Fengguang (2): ACPI: don't cond_resched() when irqs_disabled() 9p: convert d_iname references to d_name.name ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:29 2009 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, J_CHICKENPOX_21,J_CHICKENPOX_39 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQTe0183547 for ; Thu, 21 May 2009 15:26:29 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQSOk183519; Thu, 21 May 2009 15:26:28 -0500 Date: Thu, 21 May 2009 15:26:28 -0500 Message-Id: <200905212026.n4LKQSOk183519@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.28-rc4, created. v2.6.28-rc4 X-Git-Refname: refs/tags/v2.6.28-rc4 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: b65a80a5ee7923355cbca669cead08e067fc7ada 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 annotated tag, v2.6.28-rc4 has been created at b65a80a5ee7923355cbca669cead08e067fc7ada (tag) tagging f7160c7573615ec82c691e294cf80d920b5d588d (commit) replaces v2.6.28-rc3 tagged by Linus Torvalds on Sun Nov 9 16:36:31 2008 -0800 - Log ----------------------------------------------------------------- Linux 2.6.28-rc4 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkkXghMACgkQF3YsRnbiHLs6rgCgnoaEp7pi1M/FQYF4KId701DP gl0An0GVTbGzNkR4CxkeVkecJ/G4ErUr =l/gf -----END PGP SIGNATURE----- Al Viro (1): tracing, alpha: undefined reference to `save_stack_trace' Alan Cox (2): trivial: dmi_scan typo trivial: MPT fusion - remove long dead code Alan Stern (2): Add round_jiffies_up and related routines Block: use round_jiffies_up() Alex Deucher (1): drm/radeon: fixup further bus mastering confusion. Alexey Dobriyan (6): proc: revert /proc/uptime to ->read_proc hook fs_enet: fix polling xfrm: Fix xfrm_policy_gc_lock handling. powerpc/ps3: Fix compile error in ps3-lpm.c powerpc/cell: Fix compile error in ras.c netfilter: netns ct: walk netns list under RTNL Alok Kataria (1): x86: don't use tsc_khz to calculate lpj if notsc is passed Anatolij Gustschin (1): fbdev: add new framebuffer driver for Fujitsu MB862xx GDCs Andi Kleen (1): oprofile: Fix p6 counter overflow check Andre Noll (1): md: linear: Fix a division by zero bug for very small arrays. Andreas Steffen (1): xfrm: Have af-specific init_tempsel() initialize family field of temporary selector Andrew Morton (1): MAINTAINERS: make IOAT easier to find Andrew Victor (3): [WATCHDOG] SAM9 watchdog - update for moved headers [WATCHDOG] SAM9 watchdog - supported on all SAM9 and CAP9 processors SAM9 watchdog: update for moved headers Andrey Borzenkov (1): cpqarry: fix return value of cpqarray_init() Andy Whitcroft (2): hugetlbfs: handle pages higher order than MAX_ORDER hugetlb: pull gigantic page initialisation out of the default path Aneesh Kumar K.V (3): ext4: fix missing ext4_unlock_group in error path ext4: Convert to host order before using the values. ext4: Mark the buffer_heads as dirty and uptodate after prepare_write Arjan van de Ven (1): regression: disable timer peek-ahead for 2.6.28 Arnaud Ebalard (1): XFRM: copy_to_user_kmaddress() reports local address twice Arthur Jones (1): ext3: wait on all pending commits in ext3_sync_fs Bart Trojanowski (1): fat: document additional vfat mount options Ben Hutchings (1): x86: don't allow nr_irqs > NR_IRQS Benjamin Thery (1): ipv6: fix run pending DAD when interface becomes ready Bjorn Helgaas (2): x86: mention ACPI in top-level Kconfig menu [IA64] reorder Kconfig options to match x86 Bob Copeland (1): ath5k: correct handling of rx status fields Carl Love (2): Cell OProfile: Incorrect local array size in activate spu profiling function Cell OProfile: Incorrect local array size in activate spu profiling function Christoph Lameter (1): mm: move migrate_prep out from under mmap_sem Dan Williams (1): [ARM] xsc3: fix xsc3_l2_inv_range Daniel Drake (1): zd1211rw: Add 2 device IDs Darren Jenkins (1): fat: cleanup fat_parse_long() error handling David Brownell (1): atmel_serial: keep clock off when it's not needed David Howells (1): Fix accidental implicit cast in HR-timer conversion David Miller (1): net: Fix recursive descent in __scm_destroy(). David Rientjes (2): oom: do not dump task state for non thread group leaders vmemmap: warn about page_structs with remote distance David S. Miller (5): SMC91x: Fix compilation on some platforms. niu: Use pci_ioremap_bar(). tcp: Fix recvmsg MSG_PEEK influence of blocking behavior. net: Fix recursive descent in __scm_destroy(). Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 David Woodhouse (1): [JFFS2] Fix lack of locking in thread_should_wake() Doug Chapman (1): [IA64] fix boot panic caused by offline CPUs Doug Nazar (1): Fix nfsd truncation of readdir results Ed Swierk (1): PCI: fix range check on mmapped sysfs resource files Eduardo Habkost (1): Revert "x86: default to reboot via ACPI" Eilon Greenstein (4): bnx2x: Removing the PMF indication when unloading bnx2x: PCI configuration bug on big-endian bnx2x: Calling netif_carrier_off at the end of the probe bnx2x: Version Update Elias Oltmanns (1): libata: Fix a potential race condition in ata_scsi_park_show() Eric Anholt (1): i915: Add GEM ioctl to get available aperture size. Eric W. Biederman (1): [MTD] [NOR] Fix cfi_send_gen_cmd handling of x16 devices in x8 mode (v4) FUJITA Tomonori (2): [IA64] remove dead BIO_VMERGE_BOUNDARY definition block: remove unused ll_new_mergeable() Frans Pop (1): rtc-cmos: fix boot log message Frederic Bohe (1): ext4: add checksum calculation when clearing UNINIT flag in ext4_new_inode Geert Uytterhoeven (2): [JFFS2] fix race condition in jffs2_lzo_compress() fbdev: fix fb_compat_ioctl() deadlocks Gerald Schaefer (1): memory hotplug: fix page_zone() calculation in test_pages_isolated() Greg Kroah-Hartman (2): Staging: only build the tree if we really want to Staging: make usbip depend on CONFIG_NET Harvey Harrison (1): PCI: annotate return value of pci_ioremap_bar with __iomem Henrik Rydberg (4): hwmon: applesmc: add support for iMac 5 hwmon: applesmc: add support for Macbook 5 hwmon: applesmc: add support for Macbook Pro 5 hwmon: applesmc: add support for iMac 8 Huang Weiyi (3): [MTD] [NAND] OMAP2: remove duplicated #include [IA64] remove duplicated #include from pci-dma.c 9p: rdma: remove duplicated #include Hugh Dickins (1): x86: align DirectMap in /proc/meminfo Ian Kent (2): autofs4: correct offset mount expire check autofs4: collect version check return Ingo Molnar (6): sched: re-tune balancing 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 sched: fine-tune SD_SIBLING_INIT Merge branch 'oprofile-for-tip' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into x86/urgent sched: improve sched_clock() performance sched: optimize sched_clock() a bit James Bottomley (1): x86, voyager: fix smp_intr_init() compile breakage Jay Lan (1): [IA64] Reserve elfcorehdr memory in CONFIG_CRASH_DUMP Jeff Kirsher (1): net: kconfig cleanup Jeff Layton (1): cifs: fix renaming one hardlink on top of another Jeremy Fitzhardinge (4): bio: define __BIOVEC_PHYS_MERGEABLE x86, xen: fix use of pgd_page now that it really does return a page vmap: cope with vm_unmap_aliases before vmalloc_init() xen: make sure stray alias mappings are gone before pinning Jesper Dangaard Brouer (1): Change UTF8 chars in Kconfig help text about Oprofile AMD barcelona Jianjun Kong (1): drivers: remove duplicated #include Joerg Roedel (3): AMD IOMMU: fix detection of NP capable IOMMUs [IA64] use common header for software IO/TLB AMD IOMMU: fix lazy IO/TLB flushing in unmap path John W. Linville (2): Revert "ath5k: honor FIF_BCN_PRBRESP_PROMISC in STA mode" iwlagn: avoid sleep in softirq context Jonathan McDowell (2): Fix logic error in rfkill_check_duplicity kbuild: Fixup deb-pkg target to generate separate firmware deb Kay Sievers (4): firewire: struct device - replace bus_id with dev_name(), dev_set_name() ieee1394: struct device - replace bus_id with dev_name(), dev_set_name() sound: struct device - replace bus_id with dev_name(), dev_set_name() mmc: struct device - replace bus_id with dev_name(), dev_set_name() Keith Packard (5): x86: add iomap_atomic*()/iounmap_atomic() on 32-bit using fixmaps resources: add io-mapping functions to dynamically map large device apertures i915: use io-mapping interfaces instead of a variety of mapping kludges io mapping: improve documentation io mapping: clean up #ifdefs Ken'ichi Ohmichi (1): [IA64] fix the difference between node_mem_map and node_start_pfn Len Brown (1): build fix: CONFIG_DRM_I915=y && CONFIG_ACPI=n Lennert Buytenhek (1): mv643xx_eth: fix SMI bus access timeouts Li Zefan (4): cgroups: fix invalid cgrp->dentry before cgroup has been completely removed Documentation/kernel-parameters.txt: update 'isolcpus' kernel option sched: fix a bug in sched domain degenerate sched: fix memory leak in a failure path Linus Torvalds (34): Merge branch 'drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'proc-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'io-mappings-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.infradead.org/mtd-2.6 Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc Merge branch 'for-linus' of git://neil.brown.name/md Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge branch 'oprofile-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc Merge branch 'cpus4096' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-2.6.28' of git://linux-nfs.org/~bfields/linux Don't ask twice about not including staging drivers Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes Linux 2.6.28-rc4 Marcin Slusarz (1): sata_via: restore vt*_prepare_host error handling Mark Brown (1): rtc: fix handling of missing tm_year data when reading alarms Mark McLoughlin (1): x86/docs: remove noirqbalance param docs Matthew Ranostay (1): ALSA: hda: make a STAC_DELL_EQ option Mikael Pettersson (1): sata_promise: add ATA engine reset to reset ops Mike Anderson (1): blk: move blk_delete_timer call in end_that_request_last Mike Galbraith (1): sched: fine-tune SD_MC_INIT Mike Miller (3): cciss: new hardware support cciss: fix sysfs broken symlink regression cciss: fix regression firmware not displayed in procfs Miklos Szeredi (1): net: unix: fix inflight counting bug in garbage collector Mohamed Abbas (2): iwlwifi: clear scanning bits upon failure iwl3945: clear scanning bits upon failure NeilBrown (2): md: revert the recent addition of a call to the BLKRRPART ioctl. md: fix bug in raid10 recovery. Nick Piggin (1): oprofile: fix memory ordering Nicolas Pitre (1): clarify usage expectations for cnt32_to_63() OGAWA Hirofumi (19): fat: move fs/vfat/* and fs/msdos/* to fs/fat fat: split include/msdos_fs.h fat: Fix and cleanup timestamp conversion fat: use generic_file_llseek() for directory fat: improve fat_hash() fat: Fix fat_ent_update_ptr() for FAT12 fat: use fat_detach() in fat_clear_inode() vfat: Fix vfat_find() error path in vfat_lookup() fat: Fix/Cleanup dcache handling for vfat fat: Kill d_invalidate() in vfat_lookup() fat: Cleanup msdos_lookup() fat: Cleanup FAT attribute stuff fat: Fix ATTR_RO in the case of (~umask & S_WUGO) == 0 fat: Fix ATTR_RO for directory fat: Fix _fat_bmap() race fat: Add printf attribute to fat_fs_panic() fat: mmu_private race fix fat: ->i_pos race fix fat: i_blocks warning fix Patrick McHardy (1): net: fix packet socket delivery in rx irq handler Peter Zijlstra (4): sched: cleanup fair task selection sched: fix fair preempt check sched: backward looking buddy sched: fix buddies for group scheduling Pierre Ossman (1): mmc: increase SD write timeout for crappy cards Qinghuang Feng (1): mm/oom_kill.c: fix badness() kerneldoc Rafael J. Wysocki (1): Fix __pfn_to_page(pfn) for CONFIG_DISCONTIGMEM=y Randy Dunlap (3): PCI: remove excess kernel-doc notation net/9p: fix printk format warnings net/9p: fix printk format warnings Reinette Chatre (1): iwl3945: do not send scan command if channel count zero Robert Richter (1): Revert "Cell OProfile: Incorrect local array size in activate spu profiling function" Roel Kluin (1): unsigned fid->fid cannot be negative Russ Anderson (3): [IA64] Simplify SGI uv vs. sn2 driver issues [IA64] Add UV watchlist support. [IA64] Add error_recovery_info field to SAL section header Russell King (5): [ARM] fix VFP+softfloat binaries [ARM] fix naming of MODULE_START / MODULE_END [ARM] mm: fix page table initialization Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/xscaleiop Merge branch 'omap-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Rusty Russell (3): cpumask: introduce new API, without changing anything cpumask: new API, v2 cpumask: introduce new API, without changing anything, v3 Sami Liedes (1): jbd2: deregister proc on failure in jbd2_journal_init_inode Sanjeev Premi (1): ARM: OMAP: Fix compiler warnings in gpmc.c Stefan Richter (2): ieee1394: raw1394: fix possible deadlock in multithreaded clients ieee1394: dv1394: fix possible deadlock in multithreaded clients Stephen Rothwell (1): powerpc: Fix "unused variable" warning in pci_dlpar.c Steve French (2): [CIFS] Reduce number of socket retries in large write path [CIFS] fix error in smb_send2 Steve Glendinning (1): [JFFS2] Fix build failure with !CONFIG_JFFS2_FS_WRITEBUFFER Steven Rostedt (2): ftrace: use kretprobe trampoline name to test in output tracing, ring-buffer: add paranoid checks for loops Suresh Siddha (2): generic-ipi: fix the smp_mb() placement x86: add smp_mb() before sending INVALIDATE_TLB_VECTOR Takashi Iwai (8): ALSA: hda - Disable broken mic auto-muting in Realtek codes ALSA: hda - Add digital-mic for ALC269 auto-probe mode ALSA: rawmidi - Add open check in rawmidi callbacks ALSA: remove direct access of dev->bus_id in sound/isa/* ALSA: hda - Add a quirk for another Acer Aspire (1025:0090) ALSA: emu10k1 - Add more invert_shared_spdif flag to Audigy models Merge branches 'topic/fix/misc' and 'topic/fix/hda' into for-linus regulator: Use menuconfig in Kconfig Tejun Heo (5): sata_nv: fix generic, nf2/3 detection regression libata: implement ATA_HORKAGE_ATAPI_MOD16_DMA and apply it libata: mask off DET when restoring SControl for detach block: add timer on blkdev_dequeue_request() not elv_next_request() block: fix __blkdev_get() for removable devices Theodore Ts'o (4): jbd: don't give up looking for space so easily in __log_wait_for_space jbd2: don't give up looking for space so easily in __jbd2_log_wait_for_space ext4: wait on all pending commits in ext4_sync_fs() ext4: calculate journal credits correctly Tim Hockin (1): Documentation/email-clients.txt: add some info about gmail Tom Tucker (4): 9p: rdma: Set trans prior to requesting async connection ops 9p: Make all client spin locks IRQ safe 9p: Remove unneeded free of fcall for Flush p9: Fix leak of waitqueue in request allocation path Tony Lindgren (2): ARM: OMAP: Fix get_irqnr_and_base to clear spurious interrupt bits ARM: OMAP: Fix define for twl4030 irqs Tony Luck (1): [IA64] Build VT-D iommu support into generic kernel Wei Yongjun (2): udp: Fix the SNMP counter of UDP_MIB_INDATAGRAMS udp: Fix the SNMP counter of UDP_MIB_INERRORS Will Newton (1): drivers/net/smc911x.c: Fix lockdep warning on xmit. Wolfgang Kroworsch (1): vt: incomplete initialization of vc_tab_stop Yinghai Lu (2): x86: size NR_IRQS on 32-bit systems the same way as 64-bit x86: remove VISWS and PARAVIRT around NR_IRQS puzzle Yu Zhao (1): PCI: fix VPD limit quirk for Broadcom 5708S Zhaolei (1): ARM: OMAP: Fix debugfs_create_*'s error checking method for arm/plat-omap Zhu, Yi (1): iwl3945: fix deadlock on suspend Zoltan Devai (1): ALSA: Fix PIT lockup on some chipsets when using the PC-Speaker dann frazier (1): cciss: add P700m to list of supported controllers ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:30 2009 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_22,J_CHICKENPOX_32,J_CHICKENPOX_52,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQUux183580 for ; Thu, 21 May 2009 15:26:30 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQTIT183552; Thu, 21 May 2009 15:26:29 -0500 Date: Thu, 21 May 2009 15:26:29 -0500 Message-Id: <200905212026.n4LKQTIT183552@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.28-rc5, created. v2.6.28-rc5 X-Git-Refname: refs/tags/v2.6.28-rc5 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 68185b00cf91c1c4dcc761a2f3a1631562ed52f3 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 annotated tag, v2.6.28-rc5 has been created at 68185b00cf91c1c4dcc761a2f3a1631562ed52f3 (tag) tagging 9bf1a2445f3c569098b8de7097ca324e65abecc2 (commit) replaces v2.6.28-rc4 tagged by Linus Torvalds on Sat Nov 15 13:43:10 2008 -0800 - Log ----------------------------------------------------------------- Linux 2.6.28-rc5 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkkfQnMACgkQF3YsRnbiHLtYawCdHBHHXvoN5MZTyhnrntYFznNM 8MsAn2m9TOMkF4FhHCsplaqguBlL0TCC =pB2y -----END PGP SIGNATURE----- Adam Litke (1): hugetlb: make unmap_ref_private multi-size-aware Ajay Kumar Gupta (3): usb: musb: Fix for isochronous IN transfer usb: musb: Removes compilation warning in gadget mode usb: musb: fix BULK request on different available endpoints Akinobu Mita (1): V4L/DVB (9494): anysee: initialize anysee_usb_mutex statically Al Viro (2): el3_common_init() should be __devinit, not __init Fix inotify watch removal/umount races Alan Cox (2): tty: trivial - fix up email addresses in tty related stuff telephony: trivial: fix up email address Alan Jenkins (1): ACPI: EC: make kernel messages more useful when GPE storm is detected Alan Stern (4): USB: don't register endpoints for interfaces that are going away USB: unusual_devs entry for Argosy USB mass-storage interface USB: EHCI: fix handling of dead controllers USB: EHCI: fix divide-by-zero bug Albert Comerma (1): USB: SISUSB2VGA driver: add 0x0711, 0x0903 Alexey Dobriyan (1): af_key: mark policy as dead before destroying Alexey Klimov (2): V4L/DVB (9337a): HID: Don't allow KWorld radio fm700 be handled by usb hid drivers V4L/DVB (9350): radio-si470x: add support for kworld usb radio Alexey Starikovskiy (7): ACPI EC: Fix regression due to use of uninitialized variable ACPI: EC: revert msleep patch ACPI: EC: wait for last write gpe ACPI: EC: restart failed command ACPICA: Use spinlock for acpi_{en|dis}able_gpe ACPI: EC: lower interrupt storm treshold ACPI: EC: Don't do transaction from GPE handler in poll mode. Andreas Schwab (1): powerpc: Fix msr check in compat_sys_swapcontext Andrew Morton (3): alsa: fix snd_BUG_on() and friends remove ratelimt() kernel/kprobes.c: don't pad kretprobe_table_locks[] on uniprocessor builds Andrew Vasquez (2): [SCSI] qla2xxx: Use pci_disable_rom() to manipulate PCI config space. [SCSI] qla2xxx: Update version number to 8.02.01-k9. Andy Walls (5): V4L/DVB (9475): cx18: Disable write retries for registers that always change - part 1. V4L/DVB (9510): cx18: Fix write retries for registers that always change - part 2. V4L/DVB (9511): cx18: Mark CX18_CPU_DE_RELEASE_MDL as a slow API call V4L/DVB (9515): cx18: Use correct Mailbox IRQ Ack values and misc IRQ handling cleanup V4L/DVB (9516): cx18: Move DVB buffer transfer handling from irq handler to work_queue Antoine Jacquet (1): V4L/DVB (9348): dtv5100: add dependency on zl10353 Antti Palosaari (1): V4L/DVB (9527): af9015: fix compile warnings Avi Kivity (2): KVM: Require the PCI subsystem KVM: Fix pit memory leak if unable to allocate irq source id Balbir Singh (1): sched: fix stale value in average load per task Ben Hutchings (1): sfc: Correct address of gPXE boot configuration in EEPROM Benjamin Thery (1): ipv6: fix ip6_mr_init error path Bjorn Helgaas (11): ACPI: remove comments about debug layer/level to use ACPI: SBS: remove useless acpi_cm_sbs_init() initcall ACPI: remove CONFIG_ACPI_POWER ACPI: remove CONFIG_ACPI_EC PNP: add Bjorn Helgaas as PNP co-maintainer ACPI: consolidate ACPI_*_COMPONENT definitions in acpi_drivers.h ACPI: fix conflicting component definitions ACPI: add driver component definitions to sysfs debug_layers ACPI: turn off all debug output by default ACPI: update debug parameter documentation ACPI: pci_link: remove acpi_irq_balance_set() interface Bob Jolliffe (1): rtl8187 : support for Sitecom WL-168 0001 v4 Brandon Philips (1): USB: cdc-acm.c: fix recursive lock in acm_start_wb error path Brice Goglin (1): myri10ge: fix stop/go ordering even more Chandra Seetharaman (3): dm mpath: avoid attempting to activate null path dm mpath: warn if args ignored dm: avoid destroying table in dm_any_congested Chien Tung (2): RDMA/nes: Correct handling of PBL resources RDMA/nes: Mitigate compatibility issue regarding PCIe write credits Christian Borntraeger (1): [S390] kvm_s390: Fix oops in virtio device detection with "mem=" Christof Schmitt (6): [SCSI] zfcp: Dont clear reference from SCSI device to unit [SCSI] zfcp: fix mempool usage for status_read requests [SCSI] zfcp: Fix request list handling in error path [SCSI] zfcp: Fix cast warning [SCSI] zfcp: Wait for port scan to complete when setting adapter online [SCSI] zfcp: Fix hexdump data in s390dbf traces Cornelia Huck (1): [S390] cio: Fix refcount after moving devices. Craig Shelley (1): USB: CP2101 Add device ID for AMB2560 Damir N Abdullin (1): + usb-serial-cp2101-add-enfora-gsm2228.patch added to -mm tree Dan Williams (3): [4/4] dca: fixup initialization dependency iop-adma: add a dummy read to flush next descriptor update iop-adma: use iop_paranoia() for debug BUG_ONs Daniel J Blueman (1): V4L/DVB (9492): unplug oops from dvb_frontend_init... Darrick J. Wong (7): Fix platform drivers that crash on suspend/resume i5000-edac: hold reference to mci kobject adt7470: check input range when sysfs files are written adt7473: check inputs from sysfs writes lm85: support adt7468 chips adt7462: new hwmon driver ics932s401: new clock generator chip driver Darron Broad (1): V4L/DVB (9499): cx88-mpeg: final fix for analogue only compilation + de-alloc fix Dasgupta, Romit (1): [netdrvr] smc911x: fix for driver resume (and compilation warning) Dave Airlie (2): drm/radeon: map registers at load time drm/i915: Filter pci devices based on PCI_CLASS_DISPLAY_VGA Dave Chinner (1): [XFS] handle memory allocation failures during log initialisation David Brownell (1): USB: gadget: cdc-acm deadlock fix David Chinner (2): [XFS] Account for allocated blocks when expanding directories [XFS] XFS: Check for valid transaction headers in recovery David Howells (13): KEYS: Make request key instantiate the per-user keyrings MN10300: Clean up the misalignment handler a little MN10300: Add built-in testing for misalignment handler MN10300: Add further misalignment fixups MN10300: Extract the displacement from an insn correctly in misalignment fixup MN10300: Fix register-postinc addressing misalignment handling MN10300: Allow misalignment fixup in interrupt handling MN10300: Perform misalignment fixups of MOV_Lcc MN10300: Handle misaligned postinc-with-imm addressing mode correctly MN10300: Fix misaligned index-register addressing handling MN10300: Handle misaligned SP-based operands MN10300: Don't handle misaligned loading and storing of SP MN10300: Don't do misalignment handling for userspace David Rientjes (1): cpusets: update mems allowed in page allocator David S. Miller (6): Merge branch 'davem-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 Revert "sparc: correct section of current_pc()" sparc64: Update defconfig. Merge branch 'davem-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 niu: Fix readq implementation when architecture does not provide one. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 David Teigland (1): dlm: fix shutdown cleanup David Woodhouse (1): Revert "x86: blacklist DMAR on Intel G31/G33 chipsets" Denys Vlasenko (1): parisc: fix find_extend_vma() breakage Divy Le Ray (2): cxgb3 - eeprom read fixes cxgb3 - Limit multiqueue setting to msi-x Dmitri Monakhov (1): ocfs2: truncate outstanding block after direct io failure Doug Leith (1): tcp_htcp: last_cong bug fix Eric Anholt (4): ftrace: fix breakage in bin_fmt results i915: Don't whine when pci_enable_msi() fails. i915: Remove racy delayed vblank swap ioctl. drm: Remove infrastructure for supporting i915's vblank swapping. Eric Dumazet (1): net: fix /proc/net/snmp as memory corruptor Eric W. Biederman (1): vfs: fix shrink_submounts FUJITA Tomonori (1): [SCSI] megaraid: fix mega_internal_command oops Felipe Balbi (2): usb: musb: tusb6010: kill compile warning usb: musb: fix debug global variable name Ferenc Wagner (1): vlan: Fix typos in proc output string Francesco VIRLINZI (1): sh: Fixed the TMU0 reload value on resume Frederic CAND (3): V4L/DVB (9495): cx88-blackbird: bugfix: cx88-blackbird-poll-fix V4L/DVB (9496): cx88-blackbird: bugfix: cx88-blackbird-mpeg-users V4L/DVB (9493): kconfig patch Gautham R Shenoy (1): timers: handle HRTIMER_CB_IRQSAFE_UNLOCKED correctly from softirq context Geert Uytterhoeven (2): m68k: Fix off-by-one in m68k_setup_user_interrupt() misc: C2port needs Geoff Levand (1): USB: Fix PS3 USB shutdown problems Gerald Schaefer (1): [S390] Fix range for add_active_range() in setup_memory() Greg Kroah-Hartman (1): USB: vstusb: fix compiler warning on x86-64 Gregor Jasny (1): V4L/DVB (9352): Add some missing compat32 ioctls Hans Verkuil (3): V4L/DVB (9485): ivtv: remove incorrect V4L1 & tvaudio dependency V4L/DVB (9486): ivtv/ivtvfb: no longer experimental V4L/DVB (9506): ivtv/cx18: fix test whether modules should be loaded or not. Harvey Harrison (1): netfilter: payload_len is be16, add size of struct rather than size of pointer Heiko Carstens (6): [SCSI] zfcp: fix req_list_locking. [S390] sclp: emit error message if assign storage fails [S390] lockdep: fix compile bug [S390] ftrace: disable tracing on idle psw [S390] ftrace: fix kernel stack backchain walking [S390] cpu topology: fix locking Heinz Mauelshagen (1): dm stripe: fix init failure Helge Deller (1): fix cpumask build breakage on parisc Henrik Rydberg (1): hwmon: applesmc: add support for Macbook 4 Huang Weiyi (1): LIS3LV02Dx: remove unused #include Ilpo Järvinen (1): RDMA/nes: Reindent mis-indented spinlocks Ingo Molnar (2): Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent sched: fix init_idle()'s use of sched_clock() Ivan Kuten (1): rtl8187: Add Abocom USB ID Jan Kara (3): ocfs2: Fix check of return value of ocfs2_start_trans() ocfs2: Fix checking of return value of new_inode() ocfs2: Let inode be really deleted when ocfs2_mknod_locked() fails Jason Cooper (1): USB: net: asix: add support for Cables-to-Go USB Ethernet adapter Jean Delvare (2): V4L/DVB (9337b): remove tuner-3036 and dpc7146 drivers from feature-removal-schedule.txt V4L/DVB (9372): Minor fixes to the saa7110 driver Jean-Christophe Lallemand (1): atmel_spi: work-around required for new HW bug in AT91SAM9263 Rev.B SPI controller Jean-Francois Moine (3): V4L/DVB (9367a): Add gspca driver and subdrivers to MAINTAINERS V4L/DVB (9556): gspca: Bad init sequence for sensor HV7131B in zc3xx. V4L/DVB (9557): gspca: Small changes for the sensor HV7131B in zc3xx. Jianjun Kong (1): mac80211: fix a buffer overrun in station debug code Joel Becker (5): ocfs2: Check xattr block signatures properly. ocfs2: Don't return -EFAULT from a corrupt xattr entry. ocfs2: Check errors from ocfs2_xattr_update_xattr_search() ocfs2: Specify appropriate journal access for new xattr buckets. ocfs2: Don't repeat ocfs2_xattr_block_find() Johannes Berg (2): mac80211: fix notify_mac function hostap: pad the skb->cb usage in lieu of a proper fix John Linn (1): GPIO: add new Xilinx driver for powerpc Jonathan Corbet (1): V4L/DVB (9355): de-BKL cafe_ccic.c Jonathan McDowell (1): [netdrvr] usb/hso: Cleanup rfkill error handling KAMEZAWA Hiroyuki (1): memcg: bugfix for memory hotplug KOSAKI Motohiro (2): mm: remove lru_add_drain_all() from the munlock path mm: remove unevictable's show_page_path Kay Sievers (2): ACPI: struct device - replace bus_id with dev_name(), dev_set_name() dmaengine: struct device - replace bus_id with dev_name(), dev_set_name() Keith Packard (3): i915: Save/restore MCHBAR_RENDER_STANDBY on GM965/GM45 i915: Clean up sarea pointers on leavevt drm/i915: Move legacy breadcrumb out of the reserved status page area Kenji Kaneshige (1): PCI: ignore bit0 of _OSC return code Krzysztof Helt (1): V4L/DVB (9549): gspca: Fix a typo in one of gspca chips name. Kumar Gala (2): powerpc/fsl-booke: Fix synchronization bug w/local tlb invalidates powerpc: Updated Freescale PPC related defconfigs Lachlan McIlroy (2): [XFS] Fix use-after-free with log and quotas [XFS] Wait for all I/O on truncate to zero file size Lalit Chandivade (1): [SCSI] qla2xxx: Correct Atmel flash-part handling. Len Brown (11): Revert "ACPI: Ingore the RESET_REG_SUP bit when using ACPI reset mechanism" Merge branch 'bugzilla-11312' into release Merge branch 'bugzilla-11539' into release Merge branch 'bugzilla-11917' into release Merge branch 'misc' into release Merge branch 'power' into release Merge branch 'sony' into release Merge branch 'sysfs' into release Merge branch 'video' into release Merge branch 'processor-256' into release Merge branch 'ec' into release Lennert Buytenhek (3): net: fix setting of skb->tail in skb_recycle_check() dsa: fix skb->pkt_type when mac address of slave interface differs dsa: fix master interface allmulti/promisc handling Leslie Watter (1): USB: Add YISO u893 usb modem vendor and product IDs to option driver Li Yang (1): powerpc: Update QE/CPM2 usb_ctlr structures for USB support Li Zefan (2): freezer_cg: remove task_lock from freezer_fork() freezer_cg: disable writing freezer.state of root cgroup Lin Ming (1): Delete an unwanted return statement at evgpe.c Linus Torvalds (35): Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'kvm-updates/2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Move "exit_robust_list" into mm_release() Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs Merge branch 'doc-subdirs' of git://git.kernel.org/pub/scm/linux/kernel/git/rdunlap/linux-docs Merge branch 'sh/for-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Linux 2.6.28-rc5 Maciej Sosnowski (3): [1/4] I/OAT: fix channel resources free for not allocated channels [2/4] I/OAT: fix dma_pin_iovec_pages() error handling [3/4] I/OAT: fix async_tx.callback checking Madhusudhan Chikkature (4): w1: export w1_read_8 function hdq driver for OMAP2430/3430 hdq: bQ27000 HDQ Slave Interface Driver hdq: documentation for OMAP HDQ Magnus Damm (2): i2c: fix i2c-sh_mobile rx underrun sh: early printk port type fix Manu Abraham (1): V4L/DVB (9346): Optimization: Enable gate in a symmetric/disciplined way, Marc Pignat (1): [libata] pata_pcmcia: another memory card support Marcelo Tosatti (1): KVM: MMU: increase per-vcpu rmap cache alloc size Marco Stornelli (1): DOC: update xip method info Mark Brown (1): rtc: rtc-wm8350: add support for WM8350 RTC Mark Fasheh (1): ocfs2: fix printk related build warnings in xattr.c Mark Jackson (1): rtc: add Dallas DS1390/93/94 RTC chips Mark Salter (1): [libata] pata_sch: notice attached slave devices Martin Petermann (1): [SCSI] zfcp: fix erp timeout cleanup for port open requests Martin Schwidefsky (2): [S390] fix s390x_newuname Add 'pr_fmt()' format modifier to pr_xyz macros. Martyn Welch (2): powerpc/86xx: Correct SOC bus-frequency in GE Fanuc SBC610 DTS rtc: basic implementation of Epson RX-8581 I2C Real Time Clock Masami Hiramatsu (1): kprobes: disable preempt for module_text_address() and kernel_text_address() Matt Fleming (3): x86: HPET: convert WARN_ON to WARN_ON_ONCE x86: HPET: read from HPET_Tn_CMP() not HPET_T0_CMP x86: HPET: enter hpet_interrupt_handler with interrupts disabled Matthew Garrett (1): sony-laptop: Ignore missing _DIS method on pic device Matthias Fuchs (1): powerpc: Fix Book-E watchdog timer interval setting Matthias Schwarzott (1): V4L/DVB (9357): cx88-dvb: Fix Oops in case i2c bus failed to register Mauro Carvalho Chehab (12): V4L/DVB (9351): ibmcam: Fix a regression caused by a482f327ff56bc3cf53176a7eb736cea47291a1d V4L/DVB (9613): tvaudio: fix a memory leak V4L/DVB (9615): tvaudio: instead of using a magic number, use ARRAY_SIZE V4L/DVB (9616): tvaudio: cleanup - group all callbacks together V4L/DVB (9617): tvtime: remove generic_checkmode callback V4L/DVB (9618): tvaudio: add additional logic to avoid OOPS V4L/DVB (9619): tvaudio: update initial comments V4L/DVB (9620): tvaudio: use a direct reference for chip description V4L/DVB (9621): Avoid writing outside shadow.bytes[] array V4L/DVB (9622): tvaudio: Improve comments and remove a unneeded prototype V4L/DVB (9623): tvaudio: Improve debug msg by printing something more human V4L/DVB (9624): CVE-2008-5033: fix OOPS on tvaudio when controlling bass/treble Michael Buesch (1): ssb: Fix DMA-API compilation for non-PCI systems Michael Reed (1): [SCSI] qla2xxx: Return a FAILED status when abort mailbox-command fails. Michel Marti (1): ALSA: hda - Add another HP model (6730s) for AD1884A Mike Christie (1): [SCSI] scsi_error regression: Fix idempotent command handling Mike Frysinger (1): SSB: hide empty sub menu Mikulas Patocka (2): dm raid1: flush workqueue before destruction dm: move pending queue wake_up end_io_acct Miquel van Smoorenburg (1): [SCSI] dpt_i2o: fix transferred data length for scsi_set_resid() Myron Stowe (3): ACPI: Disambiguate processor declaration type ACPI: Behave uniquely based on processor declaration definition type ACPI: 80 column adherence and spelling fix (no functional change) Neil Horman (1): bnx2: fix poll_controller to pass proper structures and check all rx queues Nicolas Ferre (1): atmel_lcdfb: change irq_base definition to allow error reporting Nicolas Pitre (1): [ARM] 5329/1: Feroceon: fix feroceon_l2_inv_range Oleg Nesterov (1): fix for account_group_exec_runtime(), make sure ->signal can't be freed under rq->lock Owen Taylor (1): i915: Don't attempt to short-circuit object_wait_rendering by checking domains. Patrick Ohly (1): net: put_cmsg_compat + SO_TIMESTAMP[NS]: use same name for value as caller Paul Bolle (1): USB: storage: adjust comment in Kconfig Paul Mackerras (1): powerpc: Update desktop/server defconfigs Paul Mundt (4): sh: Handle fixmap TLB eviction more coherently. sh: Provide a sane valid_phys_addr_range() to prevent TLB reset with PMB. sh: Don't factor in PAGE_OFFSET for valid_phys_addr_range() check. serial: sh-sci: Reorder the SCxTDR write after the TDxE clear. Paul Ready (1): USB: add Nikon D300 camera to unusual_devs Paulius Zaleckas (1): hso: rfkill type should be WWAN Pavel Machek (1): LIS3LV02Dx Accelerometer driver Pete Zaitcev (1): ub: stub pre_reset and post_reset to fix oops Peter Gruber (1): ACPI: avoid empty file name in sysfs Peter Zijlstra (4): sched: clean up debug info sched: release buddies on yield hrtimer: clean up unused callback modes slab: document SLAB_DESTROY_BY_RCU Qinghuang Feng (1): [libata] pata_cs553*.c: cleanup kernel-doc Rabin Vincent (1): USB: mention URB_FREE_BUFFER in usb_free_urb documentation Rafael Diniz (2): V4L/DVB (9368): VBI fix for cx88 cards V4L/DVB (9369): Documentation update for cx88 Rafael J. Wysocki (1): x86: Make NUMA on 32-bit depend on BROKEN Rakib Mullick (1): x86: KVM guest: fix section mismatch warning in kvmclock.c Ralph Campbell (1): IB/ipath: Fix RDMA write with immediate copy of last packet Randy Dunlap (4): fujitsu-laptop: fix section mismatch warning DOC: add printk-formats.txt Create/use more directory structure in the Documentation/ tree. 9p: restrict RDMA usage Ricky Wong (1): usb: unusual devs patch for Nokia 7610 Supernova Rodolfo Giometti (2): Add c2 port support c2port: add c2port support for Eurotech Duramar 2150 Roland Dreier (4): RDMA/cxgb3: Fix too-big reserved field zeroing in iwch_post_zb_read() mlx4_core: Fix unused variable warning libata: Avoid overflow in ata_tf_read_block() when tf->hba_lbal > 127 Merge branches 'cxgb3', 'ehca', 'ipath', 'ipoib', 'mlx4' and 'nes' into for-next Russell King (7): [ARM] realview: correct MMC clock rate [ARM] versatile: correct MMC clock rate [ARM] iop: iop3xx needs registers mapped uncached+unbuffered [ARM] dma-mapping: fix compiler warning [ARM] integrator,realview,versatile: remove FLASH_* and EPROM_* constants [ARM] cdb89712,clps7500,h720x: avoid namespace clash for FLASH_* constants [ARM] cdb89712: avoid namespace clashes with SRAM_ and BOOTROM_ constants Sebastian Andrzej Siewior (1): USB: remove optional bus bindings in isp1760, fixing runtime warning Sheng Yang (1): KVM: VMX: Set IGMT bit in EPT entry Shyam Sundar (1): [SCSI] qla2xxx: Do not honour max_vports from firmware for 2G ISPs and below. Simon Arlott (1): Kconfig: SLUB is the default slab allocator Stefan Haberland (1): [S390] dasd: log sense for fatal errors Stefan Roscher (1): IB/ehca: Remove reference to special QP in case of port activation failure Steve Wise (2): RDMA/cxgb3: deadlock in iw_cxgb3 can cause hang when configuring interface. RDMA/cxgb3: Fix deadlock in iw_cxgb3 (hang when configuring interface) Steven Rostedt (4): ftrace: update txt document ftrace: ftrace.txt version update ftrace: disable tracing on resize ring-buffer: prevent infinite looping on time stamping Stuart MENEFY (1): sh: __copy_user function can corrupt the stack in case of exception Sunil Mushran (1): ocfs2: Set journal descriptor to NULL after journal shutdown Suresh Siddha (1): V4L/DVB (9356): [PATCH] saa7134: fix resource map sanity check conflict Takashi Iwai (7): ALSA: hda - Limit the number of GPIOs show in proc ALSA: hda - Add a quirk for MEDION MD96630 Merge branches 'topic/fix/misc' and 'topic/fix/hda' into for-linus ALSA: hda - Add missing analog-mux mixer creation for STAC9200 ALSA: hda - Fix input pin initialization for STAC/IDT codecs ALSA: hda - Fix IDT/STAC multiple HP detection Merge branch 'topic/fix/hda' into for-linus Tao Ma (5): ocfs2: Remove unused ocfs2_restore_xattr_block(). ocfs2: Fix some typos in xattr annotations. ocfs2: Fix check of return value of ocfs2_start_trans() in xattr.c. ocfs2: return 0 in page_mkwrite to let VFS retry. ocfs2/xattr: Proper hash collision handle in bucket division Tejun Heo (3): libata: revert convert-to-block-tagging patches libata: fix last_reset timestamp handling libata: improve phantom device detection Theodore Tso (1): ext3: Clean up outdated and incorrect comment for ext3_write_super() Thierry MERLE (1): V4L/DVB (9358): CinergyT2: fix Kconfig typo Thomas Gleixner (2): irq: call __irq_enter() before calling the tick_idle_check nohz: disable tick_nohz_kick_tick() for now Thomas Renninger (10): ACPI: video: Ignore devices that aren't present in hardware ACPI video: if no ACPI backlight support, use vendor drivers Acer-WMI: fingers off backlight if video.ko is serving this functionality asus-acpi: fingers off backlight if video.ko is serving this functionality compal: fingers off backlight if video.ko is serving this functionality eeepc-laptop: fingers off backlight if video.ko is serving this functionality fujitsu-laptop: fingers off backlight if video.ko is serving this functionality msi-laptop: fingers off backlight if video.ko is serving this functionality sony-laptop: fingers off backlight if video.ko is serving this functionality thinkpad_acpi: fingers off backlight if video.ko is serving this functionality Thomas, Sujith (2): intel_menlow: Add comment documenting legal GTHS values intel_menlow: MAINTAINERS Tiger Yang (5): ocfs2: fix license in xattr ocfs2: fix function declaration and definition in xattr ocfs2: remove duplicate definition in xattr ocfs2: add handler_map array bounds checking ocfs2: Check search result in ocfs2_xattr_block_get() Tim Blechmann (2): ALSA: HDSP: check for io box before uploading firmware ALSA: hdsp: check for iobox and upload firmware during ioctl Tobias Lorenz (1): V4L/DVB (9482): Documentation, especially regarding audio and informational links Tony Vroon (1): fujitsu-laptop: Add DMI callback for Lifebook S6420 Travis Place (1): ALSA: hda - Make the HP EliteBook 8530p use AD1884A model laptop Trent Piepho (1): powerpc: Repair device bindings documentation Vadim Makhervaks (1): RDMA/nes: Fix CQ allocation scheme for multicast receive queue apps Venki Pallipadi (1): i7300_idle: Kconfig, show menu only on x86_64 Ville Syrjala (1): ALSA: gusextreme: Fix build errors Vladimir Sokolovsky (1): IB/mlx4: Set umem field to NULL in mlx4_ib_alloc_fast_reg_mr() Xiantao Zhang (2): KVM: ia64: Use guest signal mask when blocking KVM: ia64: fix vmm_spin_{un}lock for !CONFIG_SMP Yevgeny Petrilin (1): mlx4_en: Start port error flow bug fix Yinghai Lu (1): ACPI: use macro to replace hard number Yoshihiro Shimoda (4): serial: sh-sci: fix cannot work SH7723 SCIFA fix sci type for SH7723 usb: r8a66597-hcd: fix wrong data access in SuperH on-chip USB usb: r8a66597-hcd: fix wrong data access in SuperH on-chip USB Yossi Etigin (3): IPoIB: Don't enable NAPI when it's already enabled IPoIB: Fix hang in ipoib_flush_paths() IPoIB: Fix crash in path_rec_completion() Zhang Rui (2): ACPI: bugfix reporting of event handler status intel_menlow: don't set max_state a negative value Zhao Yakui (2): ACPI: fix de-reference bug in power resource driver ACPI: fan: Delete the strict check in power transition roel kluin (1): V4L/DVB (9524): af9013: fix bug in status reading ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:33 2009 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, J_CHICKENPOX_21 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQX2p183747 for ; Thu, 21 May 2009 15:26:33 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQX6W183718; Thu, 21 May 2009 15:26:33 -0500 Date: Thu, 21 May 2009 15:26:33 -0500 Message-Id: <200905212026.n4LKQX6W183718@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.29, created. v2.6.29 X-Git-Refname: refs/tags/v2.6.29 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 5dfd736f95b3d84a18b5bb8e50ac71f245438acf 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 annotated tag, v2.6.29 has been created at 5dfd736f95b3d84a18b5bb8e50ac71f245438acf (tag) tagging 8e0ee43bc2c3e19db56a4adaa9a9b04ce885cd84 (commit) replaces v2.6.29-rc8 tagged by Linus Torvalds on Mon Mar 23 16:12:27 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.29 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAknIF14ACgkQF3YsRnbiHLujhgCfVJwacI7+0BOJ9/g2gh6xVMit cAoAnjAOyIXI0+VdmeWGBCzZ97zWtzbe =Noew -----END PGP SIGNATURE----- Aaro Koskinen (2): ARM: OMAP: sched_clock() corrected ARM: OMAP: Allow I2C bus driver to be compiled as a module Abhijeet Joglekar (2): [SCSI] libfc: Pass lport in exch_mgr_reset [SCSI] libfc: when rport goes away (re-plogi), clean up exchanges to/from rport Achilleas Kotsis (1): USB: Add device id for Option GTM380 to option driver Al Viro (1): net: fix sctp breakage Alan Stern (2): USB: usbfs: keep async URBs until the device file is closed USB: EHCI: expedite unlinks when the root hub is suspended Albert Pauw (1): USB: option.c: add ZTE 622 modem device Alexander Duyck (1): igb: remove ASPM L0s workaround Andrew Vasquez (4): [SCSI] qla2xxx: Correct address range checking for option-rom updates. [SCSI] qla2xxx: Correct truncation in return-code status checking. [SCSI] qla2xxx: Correct overwrite of pre-assigned init-control-block structure size. [SCSI] qla2xxx: Update version number to 8.03.00-k4. Andy Whitcroft (1): suspend: switch the Asus Pundit P1-AH2 to old ACPI sleep ordering Anirban Chakraborty (1): [SCSI] qla2xxx: Correct vport delete bug. Anton Vorontsov (1): ucc_geth: Fix oops when using fixed-link support Antti Palosaari (1): V4L/DVB (10972): zl10353: i2c_gate_ctrl bug fix Axel Wachtler (1): USB: serial: add FTDI USB/Serial converter devices Ben Dooks (7): [ARM] S3C64XX: Set GPIO pin when select IRQ_EINT type [ARM] S3C64XX: Rename IRQ_UHOST to IRQ_USBH [ARM] S3C64XX: Fix name of USB host clock. [ARM] S3C64XX: Fix USB host clock mux list [ARM] S3C64XX: sparse warnings in arch/arm/plat-s3c64xx/s3c6400-clock.c [ARM] S3C64XX: sparse warnings in arch/arm/plat-s3c64xx/irq.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into s3c-fixes Benjamin Herrenschmidt (3): emac: Fix clock control for 405EX and 405EXr chips Merge commit 'gcl/merge' into merge radeonfb: Whack the PCI PM register until it sticks Benny Halevy (1): NFSD: provide encode routine for OP_OPENATTR Bjørn Mork (1): ipv6: fix display of local and remote sit endpoints Borislav Petkov (1): ide-floppy: do not map dataless cmds to an sg Carlos Corbacho (2): acpi-wmi: Unmark as 'experimental' acer-wmi: Unmark as 'experimental' Chris Leech (3): [SCSI] libfc: rport retry on LS_RJT from certain ELS [SCSI] fcoe: fix handling of pending queue, prevent out of order frames (v3) ixgbe: fix multiple unicast address support Chris Mason (2): Btrfs: Fix locking around adding new space_info Btrfs: Clear space_info full when adding new devices Christoph Paasch (2): netfilter: conntrack: fix dropping packet after l4proto->packet() netfilter: conntrack: check for NEXTHDR_NONE before header sanity checking Chuck Lever (2): NLM: Shrink the IPv4-only version of nlm_cmp_addr() NLM: Fix GRANT callback address comparison when IPv6 is enabled Corentin Chary (4): asus-laptop: restore acpi_generate_proc_event() eeepc-laptop: restore acpi_generate_proc_event() asus-laptop: use select instead of depends on platform/x86: depends instead of select for laptop platform drivers Cyrill Gorcunov (1): acpi: check for pxm_to_node_map overflow Daisuke Nishimura (1): vmscan: pgmoved should be cleared after updating recent_rotated Dan Carpenter (1): acer-wmi: double free in acer_rfkill_exit() Dan Williams (1): USB: Option: let cdc-acm handle Sony Ericsson F3507g / Dell 5530 Darius Augulis (1): MX1 fix include Dave Jones (1): via-velocity: Fix DMA mapping length errors on transmit. David Brownell (2): ARM: OMAP: Fix compile error if pm.h is included dm9000: locking bugfix David S. Miller (7): dnet: Fix warnings on 64-bit. xfrm: Fix xfrm_state_find() wrt. wildcard source address. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 sparc64: Reschedule KGDB capture to a software interrupt. Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Davide Libenzi (1): eventfd: remove fput() call from possible IRQ context Dhananjay Phadke (1): netxen: remove old flash check. Dirk Hohndel (1): USB: Add Vendor/Product ID for new CDMA U727 to option driver Eilon Greenstein (3): bnx2x: Adding restriction on sge_buf_size bnx2x: Casting page alignment bnx2x: Using DMAE to initialize the chip Enrik Berkhan (1): nommu: ramfs: pages allocated to an inode's pagecache may get wrongly discarded Eric Sandeen (3): ext4: fix header check in ext4_ext_search_right() for deep extent trees. ext4: fix bogus BUG_ONs in in mballoc code ext4: fix bb_prealloc_list corruption due to wrong group locking FUJITA Tomonori (1): ide: save the returned value of dma_map_sg Geert Uytterhoeven (1): ps3/block: Replace mtd/ps3vram by block/ps3vram Geoff Levand (1): powerpc/ps3: ps3_defconfig updates Gerald Schaefer (1): [S390] Dont check for pfn_valid() in uaccess_pt.c Gertjan van Wingerde (1): Update my email address Grant Grundler (2): parisc: fix wrong assumption about bus->self parisc: update MAINTAINERS Grant Likely (1): Fix Xilinx SystemACE driver to handle empty CF slot Greg Kroah-Hartman (3): USB: usbtmc: fix stupid bug in open() USB: usbtmc: add protocol 1 support Staging: benet: remove driver now that it is merged in drivers/net/ Greg Ungerer (8): m68k: merge the non-MMU and MMU versions of param.h m68k: merge the non-MMU and MMU versions of swab.h m68k: merge the non-MMU and MMU versions of sigcontext.h m68k: use MMU version of setup.h for both MMU and non-MMU m68k: merge the non-MMU and MMU versions of ptrace.h m68k: merge the non-MMU and MMU versions of signal.h m68k: use the MMU version of unistd.h for all m68k platforms m68k: merge the non-MMU and MMU versions of siginfo.h Gregory Lardiere (1): V4L/DVB (10789): m5602-s5k4aa: Split up the initial sensor probe in chunks. Hans Werner (1): V4L/DVB (10977): STB6100 init fix, the call to stb6100_set_bandwidth needs an argument Hartley Sweeten (1): [ARM] 5419/1: ep93xx: fix build warnings about struct i2c_board_info Heiko Carstens (2): [S390] topology: define SD_MC_INIT to fix performance regression [S390] ftrace/mcount: fix kernel stack backchain Helge Deller (7): parisc: BUG_ON() cleanup parisc: fix section mismatch warnings parisc: fix `struct pt_regs' declared inside parameter list warning parisc: remove unused local out_putf label parisc: fix dev_printk() compile warnings for accessing a device struct parisc: add braces around arguments in assembler macros parisc: fix 64bit build Herbert Xu (1): gro: Fix legacy path napi_complete crash Huang Ying (1): dm crypt: fix kcryptd_async_done parameter Ian Dall (1): Bug 11061, NFS mounts dropped Igor M. Liplianin (1): V4L/DVB (10976): Bug fix: For legacy applications stv0899 performs search only first time after insmod. Ilya Yanok (3): dnet: Dave DNET ethernet controller driver (updated) dnet: replace obsolete *netif_rx_* functions with *napi_* dnet: DNET should depend on HAS_IOMEM Ingo Molnar (1): kconfig: improve seed in randconfig J. Bruce Fields (1): nfsd: nfsd should drop CAP_MKNOD for non-root James Bottomley (1): parisc: remove klist iterators Jan Dumon (1): USB: unusual_devs: Add support for GI 0431 SD-Card interface Jay Vosburgh (1): bonding: Fix updating of speed/duplex changes Jeff Moyer (1): aio: lookup_ioctx can return the wrong value when looking up a bogus context Jiri Slaby (8): ACPI: remove doubled status checking USB: atm/cxacru, fix lock imbalance USB: image/mdc800, fix lock imbalance USB: misc/adutux, fix lock imbalance USB: misc/vstusb, fix lock imbalance USB: wusbcore/wa-xfer, fix lock imbalance ALSA: pcm_oss, fix locking typo ALSA: mixart, fix lock imbalance Jody McIntyre (1): trivial: fix orphan dates in ext2 documentation Johannes Weiner (3): HID: fix incorrect free in hiddev HID: fix waitqueue usage in hiddev nommu: ramfs: don't leak pages when adding to page cache fails John Dykstra (1): ipv6: Fix BUG when disabled ipv6 module is unloaded John W. Linville (1): lib80211: silence excessive crypto debugging messages Jorge Boncompte [DTI2] (1): netns: oops in ip[6]_frag_reasm incrementing stats Jouni Malinen (3): mac80211: Fix panic on fragmentation with power saving zd1211rw: Do not panic on device eject when associated nl80211: Check that function pointer != NULL before using it Karsten Wiese (1): USB: EHCI: Fix isochronous URB leak Kay Sievers (1): parisc: dino: struct device - replace bus_id with dev_name(), dev_set_name() Koen Kooi (1): ARM: OMAP: board-omap3beagle: set i2c-3 to 100kHz Krzysztof Helt (1): ALSA: opl3sa2 - Fix NULL dereference when suspending snd_opl3sa2 Kumar Gala (2): powerpc/mm: Respect _PAGE_COHERENT on classic ppc32 SW powerpc/mm: Fix Respect _PAGE_COHERENT on classic ppc32 SW TLB load machines Kyle McMartin (8): parisc: fix use of new cpumask api in irq.c parisc: convert (read|write)bwlq to inlines parisc: convert cpu_check_affinity to new cpumask api parisc: define x->x mmio accessors parisc: update defconfigs parisc: sba_iommu: fix build bug when CONFIG_PARISC_AGP=y tulip: fix crash on iface up with shirq debug Build with -fno-dwarf2-cfi-asm Lalit Chandivade (1): [SCSI] qla2xxx: Use correct value for max vport in LOOP topology. Len Brown (2): Revert "ACPI: make some IO ports off-limits to AML" Merge branches 'misc-up-now' and 'platform-drivers' into release Lennert Buytenhek (1): mv643xx_eth: fix unicast address filter corruption on mtu change Li Zefan (1): block: fix memory leak in bio_clone() Linus Torvalds (35): Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6.29 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Fix potential fast PIT TSC calibration startup glitch Fast TSC calibration: calculate proper frequency error bounds Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm Avoid 64-bit "switch()" statements on 32-bit architectures Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-2.6.29' of git://linux-nfs.org/~bfields/linux Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Add '-fwrapv' to gcc CFLAGS Fix race in create_empty_buffers() vs __set_page_dirty_buffers() Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Move cc-option to below arch-specific setup Merge branch 'fix-includes' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Linux 2.6.29 Luis R. Rodriguez (2): ath9k: implement IO serialization ath9k: AR9280 PCI devices must serialize IO as well Maciej Sosnowski (1): dca: add missing copyright/license headers Manu Abraham (1): V4L/DVB (10975): Bug: Use signed types, Offsets and range can be negative Mark Brown (5): [ARM] S3C64XX: Fix section mismatch for s3c64xx_register_clocks() [ARM] SMDK6410: Correct I2C device name for WM8580 [ARM] SMDK6410: Declare iodesc table static [ARM] S3C64XX: Staticise s3c64xx_init_irq_eint() [ARM] S3C64XX: Do gpiolib configuration earlier Mark Lord (1): sata_mv: fix MSI irq race condition Martin Schwidefsky (3): [S390] __div64_31 broken for CONFIG_MARCH_G5 [S390] make page table walking more robust [S390] make page table upgrade work again Masami Hiramatsu (2): prevent boosting kprobes on exception address module: fix refptr allocation and release order Mathieu Chouquet-Stringer (1): thinkpad-acpi: fix module autoloading for older models Matthew Wilcox (1): [SCSI] sd: Don't try to spin up drives that are connected to an inactive port Matthias Schwarzzot (1): V4L/DVB (10978): Report tuning algorith correctly Mauro Carvalho Chehab (1): V4L/DVB (10834): zoran: auto-select bt866 for AverMedia 6 Eyes Michael Chan (1): bnx2: Fix problem of using wrong IRQ handler. Michael Hennerich (1): USB: serial: ftdi: enable UART detection on gnICE JTAG adaptors blacklist interface0 Mike Travis (1): parisc: update parisc for new irq_desc Miklos Szeredi (1): fix ptrace slowness Mikulas Patocka (3): dm table: rework reference counting fix dm io: respect BIO_MAX_PAGES limit sparc64: Fix crash with /proc/iomem Milan Broz (2): dm ioctl: validate name length when renaming dm crypt: wait for endio to complete before destruction Moritz Muehlenhoff (1): USB: Updated unusual-devs entry for USB mass storage on Nokia 6233 Nobuhiro Iwamatsu (2): sh_eth: Change handling of IRQ sh_eth: Fix mistake of the address of SH7763 Pablo Neira Ayuso (2): netfilter: conntrack: don't deliver events for racy packets netfilter: ctnetlink: fix crash during expectation creation Pantelis Koukousoulas (1): virtio_net: Make virtio_net support carrier detection Piotr Ziecik (1): powerpc/5200: Enable CPU_FTR_NEED_COHERENT for MPC52xx Ralf Baechle (1): MIPS: Mark Eins: Fix configuration. Robert Love (11): [SCSI] libfc: Don't violate transport template for rogue port creation [SCSI] libfc: correct RPORT_TO_PRIV usage [SCSI] libfc: rename rp to rdata in fc_disc_new_target() [SCSI] libfc: check for err when recv and state is incorrect [SCSI] libfc: Cleanup libfc_function_template comments [SCSI] libfc, fcoe: Fix kerneldoc comments [SCSI] libfc, fcoe: Cleanup function formatting and minor typos [SCSI] libfc, fcoe: Remove unnecessary cast by removing inline wrapper [SCSI] fcoe: Use setup_timer() and mod_timer() [SCSI] fcoe: Correct fcoe_transports initialization vs. registration [SCSI] fcoe: Change fcoe receive thread nice value from 19 (lowest priority) to -20 Robert M. Kenney (1): USB: serial: new cp2101 device id Roel Kluin (3): [SCSI] fcoe: fix kfree(skb) acpi-wmi: unsigned cannot be less than 0 net: kfree(napi->skb) => kfree_skb Ron Mercer (4): qlge: bugfix: Increase filter on inbound csum. qlge: bugfix: Tell hw to strip vlan header. qlge: bugfix: Move netif_napi_del() to common call point. qlge: bugfix: Pad outbound frames smaller than 60 bytes. Russell King (6): Merge branch 'for-rmk' of git://git.marvell.com/orion Merge branch 's3c-fixes' of git://aeryn.fluff.org.uk/bjdooks/linux Merge branch 'omap-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 [ARM] update mach-types [ARM] Fix virtual to physical translation macro corner cases Rusty Russell (1): linux.conf.au 2009: Tuz Saeed Bishara (1): [ARM] orion5x: pass dram mbus data to xor driver Sam Ravnborg (1): kconfig: fix randconfig for choice blocks Sathya Perla (3): net: Add be2net driver. be2net: replenish when posting to rx-queue is starved in out of mem conditions be2net: fix to restore vlan ids into BE2 during a IF DOWN->UP cycle Scott James Remnant (1): sbus: Auto-load openprom module when device opened. Sigmund Augdal (1): V4L/DVB (10974): Use Diseqc 3/3 mode to send data Stanislaw Gruszka (1): net: Document /proc/sys/net/core/netdev_budget Stephen Hemminger (1): sungem: missing net_device_ops Stephen Rothwell (1): net: update dnet.c for bus_id removal Steve Glendinning (1): smsc911x: reset last known duplex and carrier on open Steve Ma (1): [SCSI] libfc: exch mgr is freed while lport still retrying sequences Stuart MENEFY (1): libata: Keep shadow last_ctl up to date during resets Suresh Jayaraman (1): NFS: Handle -ESTALE error in access() Takashi Iwai (5): ALSA: hda - Fix DMA mask for ATI controllers ALSA: hda - Workaround for buggy DMA position on ATI controllers ALSA: Fix vunmap and free order in snd_free_sgbuf_pages() Merge branch 'fix/hda' into for-linus Merge branch 'fix/opl3sa2-suspend' into for-linus Tao Ma (2): ocfs2: Fix a bug found by sparse check. ocfs2: Use xs->bucket to set xattr value outside Tejun Heo (1): ata_piix: add workaround for Samsung DB-P70 Theodore Ts'o (1): ext4: Print the find_group_flex() warning only once Thomas Bartosik (1): USB: storage: Unusual USB device Prolific 2507 variation added Tiger Yang (2): ocfs2: reserve xattr block for new directory with inline data ocfs2: tweak to get the maximum inline data size with xattr Tilman Schmidt (1): bas_gigaset: correctly allocate USB interrupt transfer buffer Trond Myklebust (6): SUNRPC: Tighten up the task locking rules in __rpc_execute() NFS: Fix misparsing of nfsv4 fs_locations attribute (take 2) NFSv3: Fix posix ACL code SUNRPC: Fix an Oops due to socket not set up yet... SUNRPC: xprt_connect() don't abort the task if the transport isn't bound NFS: Fix the fix to Bugzilla #11061, when IPv6 isn't defined... Tyler Hicks (3): eCryptfs: don't encrypt file key with filename key eCryptfs: Allocate a variable number of pages for file headers eCryptfs: NULL crypt_stat dereference during lookup Uwe Kleine-König (2): [ARM] 5418/1: restore lr before leaving mcount [ARM] 5421/1: ftrace: fix crash due to tracing of __naked functions Vasu Dev (5): [SCSI] libfc: handle RRQ exch timeout [SCSI] libfc: fixed a soft lockup issue in fc_exch_recv_abts [SCSI] libfc, fcoe: fixed locking issues with lport->lp_mutex around lport->link_status [SCSI] libfc: fixed a read IO data integrity issue when a IO data frame lost [SCSI] fcoe: Out of order tx frames was causing several check condition SCSI status Viral Mehta (1): ALSA: oss-mixer - Fixes recording gain control Vitaly Wool (1): V4L/DVB (10832): tvaudio: Avoid breakage with tda9874a Werner Almesberger (1): [ARM] S3C64XX: Fix s3c64xx_setrate_clksrc Yi Zou (2): [SCSI] libfc: do not change the fh_rx_id of a recevied frame [SCSI] fcoe: ETH_P_8021Q is already in if_ether and fcoe is not using it anyway Zhang Le (2): MIPS: Fix TIF_32BIT undefined problem when seccomp is disabled filp->f_pos not correctly updated in proc_task_readdir Zhang Rui (1): ACPI suspend: Blacklist Toshiba Satellite L300 that requires to set SCI_EN directly on resume françois romieu (2): r8169: use hardware auto-padding. r8169: revert "r8169: read MAC address from EEPROM on init (2nd attempt)" un'ichi Nomura (1): block: Add gfp_mask parameter to bio_integrity_clone() ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:56 2009 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQuec184093 for ; Thu, 21 May 2009 15:26:56 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQqCY184056; Thu, 21 May 2009 15:26:52 -0500 Date: Thu, 21 May 2009 15:26:52 -0500 Message-Id: <200905212026.n4LKQqCY184056@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.30-rc1, created. v2.6.30-rc1 X-Git-Refname: refs/tags/v2.6.30-rc1 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 42ae7400074d449189d41fceb6d6f871490d7842 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 annotated tag, v2.6.30-rc1 has been created at 42ae7400074d449189d41fceb6d6f871490d7842 (tag) tagging 577c9c456f0e1371cbade38eaf91ae8e8a308555 (commit) replaces v2.6.29 tagged by Linus Torvalds on Tue Apr 7 14:25:11 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.30-rc1 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAknbxLsACgkQF3YsRnbiHLvCIwCgqsu5W7lJUNRA8KxGJtzopVXn oR0AoJPnQ9JAKqPW5mvZ5s1fBmFHHqJv =5Vxa -----END PGP SIGNATURE----- ADDI-DATA GmbH (1): Staging: comedi: add addi-data drivers Aaro Koskinen (1): [SCSI] sym53c8xx: Keep transfer negotiations valid Abbas, Mohamed (3): iwlwifi: allow user to set max rate iwlagn: fix agn rate scaling iwl3945: fix deep sleep when removing the driver. Abhijeet Kolekar (27): iwl3945: use iwl_rx_mem_buffer iwl3945: use iwl_rx_queue in iwl3945 iwl3945: use iwl_hw_params in iwl3945_priv iwl3945: rename iwl3945_priv variables iwl3945: replaces iwl3945_priv with iwl_priv iwl3945: use iwl-io.h and delete iwl-3945-io.h iwl3945: use iwl_rx_scan handlers iwl3945: use iwl_mac_hw_scan callback iwl3945: use iwl rx handlers iwl3945: use iwl_rx_reply_error notification iwl3945: remove duplicate interrupt code iwl3945: use iwl_isr iwl3945: use SW rfkill from iwlwifi iwl3945: synchronize timestamp with uCode iwl3945: unify set key flow with iwlwifi iwl3945: add iwl3945_setup_mac iwl3945 : use iwl_activate_qos iwl3945: add test for new association iwl3945: fix sparse error iwl3945: use iwl_led structure iwl3945 : fix rate scaling iwl3945: use iwl_tx_cmd_complete iwl3945: set TFD_QUEUE_MAX to correct value iwl3945: use iwl_cmd_queue_free iwl3945: fix checkpatch.pl errors iwl3945: control rate decrease iwl3945: replace stations with stations_39 Abhijith Das (2): GFS2: Bring back lvb-related stuff to lock_nolock to support quotas GFS2: change gfs2_quota_scan into a shrinker Abylay Ospan (5): V4L/DVB (10796): Add init code for NetUP Dual DVB-S2 CI card V4L/DVB (10797): Add EEPROM code for NetUP Dual DVB-S2 CI card. V4L/DVB (10798): Add CIMax(R) SP2 Common Interface code for NetUP Dual DVB-S2 CI card V4L/DVB (11056): Bug fix in NetUP: restore high address lines in CI V4L/DVB (11057): Fix CiMax stability in Netup Dual DVB-S2 CI Adam Baker (3): V4L/DVB (10639): gspca - sq905: New subdriver. V4L/DVB (10829): Support alternate resolutions for sq905 V4L/DVB (11387): Sensor orientation reporting Adam Buchbinder (1): trivial: Fix misspelling of "Celsius". Adam McDaniel (1): Staging: rt2860: Ported v1.7.1.1 changes into v1.8.0.0, becoming v1.8.1.1 Adam Nielsen (2): netfilter: x_tables: add LED trigger target leds: Prevent multiple LED triggers with the same name Adrian Bunk (6): [SCSI] ses: #if 0 the unused ses_match_host() [SCSI] a3000: make 2 functions static [SCSI] a2091: make 2 functions static FRV: Fix compile breakage net/802/fddi.c: add MODULE_LICENSE tty: Correct inline types for tty_driver_kref_get() Adrian Hunter (16): UBIFS: fix dbg_chk_lpt_sz() UBIFS: fix bug where page is marked uptodate when out of space [MTD] mtdoops: allow MTD selection by name [MTD] mtdoops: fix a bit of spin lock usage [MTD] [OneNAND] omap2: panic_write may be in an interrupt context ARM: OMAP3: mmc-twl4030 fix name buffer length, v2 ARM: OMAP3: mmc-twl4030 add cover switch ARM: OMAP3: mmc-twl4030 allow arbitrary slot names, v3 mmc: Add Extended CSD register to debugfs omap_hsmmc: do not re-power when powering off MMC omap_hsmmc: Fix response type for busy after response omap_hsmmc: Allow cover switch to cause rescan omap_hsmmc: Do not prefix slot name omap_hsmmc: Wait for SDBP regulator: twl4030 VAUX3 supports 3.0V UBIFS: fix recovery bug Adrian McMenamin (2): sh: maple: Support block reads and writes. mtd: flash mapping support for Dreamcast VMU. Adrian-Ken Rueegsegger (1): crypto: Fix dead links Ajay Kumar Gupta (3): USB: otg: adding nop usb transceiver USB: musb: NAK timeout scheme on bulk RX endpoint USB: musb: only turn off vbus in OTG hosts Akinobu Mita (11): x86: unify kmap_atomic_pfn() and iomap_atomic_prot_pfn() x86: debug check for kmap_atomic_pfn and iomap_atomic_prot_pfn() x86, mm: remove unnecessary include file from iomap_32.c slub: use get_track() generic debug pagealloc mm: introduce debug_kmap_atomic mm: use debug_kmap_atomic x86, mm: fix misuse of debug_kmap_atomic generic debug pagealloc: build fix mm: fix misuse of debug_kmap_atomic ALSA: hda - add missing comma in ad1884_slave_vols Al Viro (28): constify dentry_operations: NFS constify dentry_operations: misc filesystems constify dentry_operations: 9p constify dentry_operations: autofs, autofs4 constify dentry_operations: AFS constify dentry_operations: CIFS constify dentry_operations: ecryptfs constify dentry_operations: procfs constify dentry_operations: FUSE constify dentry_operations: FAT constify dentry_operations: GFS2 constify dentry_operations: OCFS2 constify dentry_operations: JFS constify dentry_operations: sysfs constify dentry_operations: configfs constify dentry_operations: rest Kill unsharing fs_struct in __set_personality() Get rid of bumping fs_struct refcount in pivot_root(2) Take fs_struct handling to new file (fs/fs_struct.c) New locking/refcounting for fs_struct check_unsafe_exec() doesn't care about signal handlers sharing New helper - current_umask() Get rid of indirect include of fs_struct.h Don't mess with descriptor table in load_elf_binary() Trim includes in binfmt_elf Don't crap into descriptor table in binfmt_som Trim includes of fdtable.h Cleanup after commit 585d3bc06f4ca57f975a5a1f698f65a45ea66225 Alain Knaff (8): bzip2/lzma: library support for gzip, bzip2 and lzma decompression bzip2/lzma: config and initramfs support for bzip2/lzma decompression bzip2/lzma: x86 kernel compression support bzip2/lzma: fix built-in initramfs vs CONFIG_RD_GZIP bzip2/lzma: fix decompress_inflate.c vs multi-block-with-embedded-filename bzip2/lzma: don't stop search at first unconfigured compression bzip2/lzma: don't leave empty files around on failure bzip2/lzma: make internal initramfs compression configurable Alan Carvalho de Assis (1): i.MX31: Fixing cs89x0 network building to i.MX31ADS Alan Cox (28): [ARM] cumana: Fix a long standing bogon [ARM] fix leak in iop13xx/pci [ARM] twl4030 - leak fix pata_artop: Serializing support pata_sc1200: Activate secondary channel [libata] Drain data on errors [libata] Improve timeout handling [WATCHDOG] wdt.c: remove #ifdef CONFIG_WDT_501 dontdiff: Fix asm exclude appletalk: this warning can go I think af_rose/x25: Sanity check the maximum user frame size sony-laptop: Eliminate BKL in ioctls V4L/DVB (11243): cx88: Missing failure checks V4L/DVB (11244): pluto2: silence spew of card hung up messages [SCSI] config: Make need for SCSI_CDROM clearer [SCSI] mptsas: remove unneeded check LANANA: Change of management and resync ucc: Fix leaky error path isicom: isicom kref leak fix cdc-acm: zydas 1602 identifier needed tty: pl2303 needs identifiers for Siemens S81 as well as EF81 symbol: Remove various bits of left over junk 8250: Fix warning LANANA: Fix dates pata_artop: typo serqt: initial clean up pass for tty side lanana: assign a device name and numbering for MAX3100 parport: Use the PCI IRQ if offered Alan McIvor (1): V4L/DVB (11124): Add support for ProVideo PV-183 to bttv Alan Stern (21): [SCSI] sd: tell the user when a disk's capacity is adjusted [SCSI] fix /proc memory leak in the SCSI core USB: add quirk to avoid config and interface strings USB: usb-storage: increase max_sectors for tape drives USB: EHCI: Make timer_action out-of-line USB: EHCI: add software retry for transaction errors usb-storage: prepare for subdriver separation usb-storage: make sddr09 a separate module usb-storage: make isd200 a separate module usb-storage: make sddr55 a separate module usb-storage: make cypress_atacb a separate module usb-storage: make shuttle_usbat a separate module usb-storage: make freecom a separate module usb-storage: make datafab a separate module usb-storage: make jumpshot a separate module usb-storage: make alauda a separate module usb-storage: make karma a separate module usb-storage: make onetouch a separate module USB: uhci: don't use pseudo negative values USB: don't send Set-Interface after reset USB: usbfs: remove unneeded "inline" annotations Alasdair G Kergon (1): dm table: fix upgrade mode race Alberto Bertogli (1): trivial: Fix typo in bio_split()'s documentation Alessio Igor Bogani (3): sony-laptop: Kill the BKL nvidiafb: remove open_lock mutex sony-laptop: Fix some typos in log messages (Unabe/Unable) Alex Chiang (19): e1000e: normalize usage of serdes_has_link PCI: enhance physical slot debug information PCI: PCIe portdrv: eliminate double kfree in remove path PCIe: portdrv: call pci_disable_device during remove PCI: always scan child buses PCI: do not initialize bridges more than once PCI: do not enable bridges more than once PCI: Introduce pci_rescan_bus() PCI: Introduce /sys/bus/pci/rescan PCI: Introduce /sys/bus/pci/devices/.../remove PCI: Introduce /sys/bus/pci/devices/.../rescan PCI Hotplug: rename legacy_fakephp to fakephp PCI Hotplug: schedule fakephp for feature removal sysfs: sysfs_add_one WARNs with full path to duplicate filename sysfs: only allow one scheduled removal callback per kobj PCI: annotate pci_rescan_bus as __ref, not __devinit PCI: allow PCI core hotplug to remove PCI root bus PCI Hotplug: acpiphp: grab refcount on p2p subordinate bus PCI: pci_slot: grab refcount on slot's bus Alex Deucher (12): drm/radeon: prep for r6xx/r7xx support drm/radeon: add r6xx/r7xx microcode drm/radeon: add initial support for R6xx/R7xx GPUs radeon: add R6xx/R7xx pci ids radeon: fix r600 AGP support radeon: add support for rs600 GPUs radeon: add RS600 pci ids drm/radeon: RS600: fix interrupt handling drm/radeon: r6xx/r7xx: fix possible oops in r600_page_table_cleanup() drm/radeon: fix logic in r600_page_table_init() to match ati_gart radeon: add some new pci ids drm/radeon: load the right microcode on rs780 Alex Stephens (1): USB: CP2101 New Device ID Alex Williamson (6): virtio_net: Add a virtqueue for outbound control commands virtio_net: Add a set_rx_mode interface virtio_net: Add a MAC filter table virtio_net: Add support for VLAN filtering in the hypervisor virtio_net: Allow setting the MAC address of the NIC virtio_net: Set the mac config only when VIRITO_NET_F_MAC Alexander Beregalov (25): MMC: tmio_mmc.h: fix build problem ni5010: convert to net_device_ops dmascc: fix incomplete conversion to network_device_ops wireless: remove duplicated .ndo_set_mac_address reiserfs: fix build breakage parisc: iosapic: fix build breakage parisc: led: remove proc_dir_entry::owner parisc: asm/pdc.h should include asm/page.h parisc: drivers: fix warnings sony-laptop should depend on RFKILL Staging: meilhaus: remove dependence on kernel version Staging: meilhaus: some checkpatch.pl cleanup Staging: otus: remove old irqreturn_t definition Staging: pohmelfs: fix build breakage Staging: pohmelfs: net.c: include vmalloc.h Staging: pohmelfs: fix printk format warnings v2 Staging: pohmelfs should depend on CRYPTO Staging: pohmelfs: should include fs_struct.h Staging: echo cleanup vxge: should include tcp.h drivers/pci/intr_remapping.c: include acpi.h mux: fix build problem md/raid1: fix build breakage V4L/DVB (11438): au0828: fix Kconfig dependance loop: mutex already unlocked in loop_clr_fd() Alexander Clouter (15): [ARM] orion5x: add rtc-m48t86 to orion5x_defconfig [ARM] orion5x: remove TS-78xx NOR support as it does not exist [ARM] orion5x: TS-78xx comment shifting [ARM] orion5x: TS-78xx support for 'hotplug' of FPGA devices hwrng: timeriomem - New driver [CPUFREQ] conservative: amend author's email address [CPUFREQ] conservative: fix dbs_cpufreq_notifier so freq is not locked [CPUFREQ] conservative: fixup governor to function more like ondemand logic [CPUFREQ] conservative: remove 10x from def_sampling_rate [ARM] orion5x: ts78xx make more bulletproof the RTC load/unload code [ARM] orion5x: ts78xx amend RTC registering to not depend on ifdef's [ARM] orion5x: ts78xx add NAND support via plat_nand [ARM] orion5x: added a new FPGA ID set for the TS-78xx [ARM] orion5x: update of FPGA ID's for the TS-78xx hwrng: timeriomem - Use phys address rather than virt Alexander Duyck (63): igb: igb should not flag lltx igb: make certain to power on optics for 82576 fiber nics e1000: drop lltx, remove unnecessary lock igb: optimize/refactor receive path igb: move setting of buffsz out of repeated path in alloc_rx_buffers igb: move initialization of number of queues into set_interrupt_capability igb: remove check for needing an io port igb: add link check function igb: make dev_spec a union and remove dynamic allocation igb: read address from RAH/RAL instead of from EEPROM igb: rename phy ops igb: rename nvm ops igb: remove unused rx_hdr_split statistic igb: update feature flags supported in ethtool igb: update testing done by ethtool igb: add counter for dma out of sync errors igb: cleanup igb_netpoll to be more friendly with napi & GRO igb: remove redundant timer updates and cleanup watchdog_task igb: rename igb_update_mc_addr_list_82575 to not include the 82575 igb: remove unnecessary adapter->hw calls when just hw-> will do. igb: don't read eicr when responding to legacy interrupts igb: move get_hw_control within igb_resume. igb: change pba size determination from if to switch statement igb: remove disable_av variable from mac_info struct igb: remove redundant count set and err_hw_init igb: update stats before doing reset in igb_down igb: fix two minor items found during code review igb: update version number and copyright dates igb: misc whitespace/formatting cleanups igb: reduce size required to trigger low latency igb: cleanup incorrect comment and set IP Checksum Enable igb: misc cleanup to combine one if statement igb: remove unused defines igb: transition driver to only using advanced descriptors igb: update napi polling to consolidate function and return correct values igb: add vfs_allocated_count as placeholder for number of vfs igb: add pf side of VMDq support igb: Add support for enabling VFs to PF driver. igb: this patch addes the sr-iov enablement option via num_vfs parameter igb: remove skb_orphan calls igb: remove netif running call from igb_poll igb: resolve warning of unused adapter struct igb: support wol on second port igb: add PF to pool igb: correct typo that was setting vfta mask to 1 igb: add support for another dual port 82576 non-security nic igb: add support for 82576 quad copper adapter e1000e: add support for 82583 device id e1000e: fix dma error handling issues ixgb: refactor tx path to use skb_dma_map/unmap igb: remove IGB_DESC_UNUSED since it is better handled by a function call igb: update driver to use setup_timer function igb: rework igb_set_multi so that vfs are properly updated igb: cleanup tx dma so map & unmap use matching calls e1000: fix tx hang detect logic and address dma mapping issues e1000: cleanup clean_tx_irq routine so that it completely cleans ring e1000e: commonize tx cleanup routine to match e1000 & igb igb: add support for x2 link width configurations igb: set num_rx/tx_queues to 0 when queues are freed igb: increase delay for copper link setup igb: cleanup igb loopback path ixgbe: fix build when DEBUG is defined ixgbe: refactor tx buffer processing to use skb_dma_map/unmap Alexander Graf (13): KVM: SVM: Clean up VINTR setting KVM: SVM: Move EFER and MSR constants to generic x86 code KVM: SVM: Add helper functions for nested SVM KVM: SVM: Implement GIF, clgi and stgi KVM: SVM: Implement hsave KVM: SVM: Add VMLOAD and VMSAVE handlers KVM: SVM: Add VMRUN handler KVM: SVM: Add VMEXIT handler and intercepts KVM: SVM: Allow setting the SVME bit KVM: SVM: Only allow setting of EFER_SVME when CPUID SVM is set KVM: SVM: Add microcode patch level dummy x86: Add EFER descriptions for FFXSR KVM: Add FFXSR support Alexander Schulz (1): [ARM] 5363/1: Shark cleanup and new defconfig Alexander Shumakovitch (1): USB: qcserial: add device id for HP devices Alexandros Batsakis (1): nfsd: lock state around put client and delegation in nfsd4_cb_recall Alexey Dobriyan (25): pppol2tp: stop using proc internals ppp: section fixes re netns proc 1/2: do PDE usecounting even for ->read_proc, ->write_proc proc 2/2: remove struct proc_dir_entry::owner Revert "proc: revert /proc/uptime to ->read_proc hook" proc tty: add struct tty_operations::proc_fops proc tty: switch cyclades to ->proc_fops proc tty: switch ip2 to ->proc_fops proc tty: switch istallion to ->proc_fops proc tty: switch synclink_cs to ->proc_fops proc tty: switch stallion to ->proc_fops proc tty: switch synclink to ->proc_fops proc tty: switch synclink_gt to ->proc_fops proc tty: switch synclinkmp to ->proc_fops proc tty: switch sdio_uart to ->proc_fops proc tty: switch serial_core to ->proc_fops proc tty: switch usb-serial to ->proc_fops proc tty: switch ircomm to ->proc_fops proc tty: switch amiserial to ->proc_fops proc tty: switch ia64 simserial to ->proc_fops proc tty: switch xtensa iss console to ->proc_fops proc tty: remove struct tty_operations::read_proc mm: fix proc_dointvec_userhz_jiffies "breakage" serial: fixup /proc/tty/driver/serial after proc_fops conversion Simplify copy_thread() Alexey Klimov (22): V4L/DVB (10316): v4l/dvb: use usb_make_path in usb-radio drivers V4L/DVB (10324): em28xx: Correct mailing list V4L/DVB (10335): gspca - all subdrivers: Fix CodingStyle in sd_mod_init function. V4L/DVB (10336): gspca - all subdrivers: Return ret instead of -1 in sd_mod_init. V4L/DVB (10455): radio-mr800: codingstyle cleanups V4L/DVB (10456): radio-mr800: place dev_err instead of dev_warn V4L/DVB (10457): radio-mr800: add more dev_err messages in probe V4L/DVB (10458): radio-mr800: move radio start and stop in one function V4L/DVB (10459): radio-mr800: fix amradio_set_freq V4L/DVB (10460): radio-mr800: add stereo support V4L/DVB (10461): radio-mr800: add few lost mutex locks V4L/DVB (10462): radio-mr800: increase version and add comments V4L/DVB (10463): radio-mr800: fix checking of retval after usb_bulk_msg V4L/DVB (10464): radio-si470x: use usb_make_path in usb-radio drivers V4L/DVB (10465): dsbr100: Add few lost mutex locks. V4L/DVB (10522): em28xx-audio: replace printk with em28xx_errdev V4L/DVB (10946): radio-rtrack2: fix double mutex_unlock V4L/DVB (10961): radio-terratec: remove linux/delay.h which hadn't been used. V4L/DVB (11391): pci-isa radios: remove open and release functions V4L/DVB (11393): radio-si470x: fix possible bug with freeing memory order V4L/DVB (11435): dsbr100 radio: convert to to v4l2_device V4L/DVB (11436): radio-mr800: convert to to v4l2_device Alexey Starikovskiy (3): ACPI: battery: add power_{now,avg} properties to power_class ACPI: EC: Separate delays for MSI hardware ACPI: EC: Always parse EC device Alexey Zaytsev (3): trivial: Fix dubious bitwise 'or' usage spotted by sparse. trivial: Fix dubious bitwise 'or' usage spotted by sparse. trivial: Fix dubious bitwise 'and' usage spotted by sparse. Alina Friedrichsen (22): mac80211: Disallow to set multicast BSSID mac80211: Don't scan if BSSID and channel are set manually mac80211: Don't merge if BSSID is set manually mac80211: Allow to set channel in adhoc properly mac80211: Read the TSF via debugfs ath5k: Read and write the TSF via debugfs ath9k: Read and write the TSF via debugfs mac80211: Fixed BSSID handling revisited mac80211: Generic TSF debugging b43: Accessing the TSF via mac80211 mac80211: Creating new IBSS with fixed BSSID mac80211: IBSS join rework mac80211: Remove TSF atomic requirement from the documentation ath9k: Don't reset TSF after scanning automatically mac80211: Introduce a generic commit() to apply changes mac80211: Don't merge with the same BSSID mac80211: Give it some time to do the TSF sync zd1211rw: Implement get_tsf() ath9k: Fix FIF_BCN_PRBRESP_PROMISC handling ath9k: Set TSF fix ath5k: Set TSF fix mac80211: ieee80211_ibss_commit() cleanup Allan Willcox (1): Staging: comedi: add amplc_pci230 driver Alok Kataria (2): x86, apic: fix initialization of wakeup_cpu x86, vmi: TSC going backwards check in vmi clocksource, cleanup Amit Gud (1): Btrfs: fix race in worker_loop Amit Shah (3): KVM: x86: Fix typos and whitespace errors KVM: VMX: Update necessary state when guest enters long mode KVM: is_long_mode() should check for EFER.LMA AmĂ©rico Wang (5): slob: clean up the code sched: use TASK_NICE for task_struct ptrace: remove a useless goto x86: ptrace, bts: fix an unreachable statement kernel/module.c: fix an unused goto label Ananth N Mavinakayanahalli (1): kprobes: Fix locking imbalance in kretprobes Anders Blomdell (5): Staging: comedi: add jr3_pci driver Staging: comedi: add serial2002 driver Staging: comedi: add rti802 driver Staging: comedi: add multiq3 driver Staging: comedi: add daqboard2000 driver Anders Gnistrup (1): Staging: comedi: add fl212 driver Anders Kaseorg (1): Ksplice: Add functions for walking kallsyms symbols Andi Kleen (21): x86: hpet: allow force enable on ICH10 HPET x86, mce: disable machine checks on suspend x86, mce: don't disable machine checks during code patching x86, mce: always use separate work queue to run trigger x86, mce: switch machine check polling to per CPU timer x86, mce: don't set up mce sysdev devices with mce=off x86, mce: disable machine checks on offlined CPUs x86, mce: enable machine checks in 64-bit defconfig x86, mce: implement dynamic machine check banks support x86, mce: factor out duplicated struct mce setup into one function x86, mce: separate correct machine check poller and fatal exception handler x86, mce, cmci: export MAX_NR_BANKS x86, mce, cmci: factor out threshold interrupt handler x86, mce, cmci: avoid potential reentry of threshold interrupt x86, mce: replace machine check events logged interval with ratelimit x86, mce, cmci: use polled banks bitmap in machine check poller x86, mce, cmci: define MSR names and fields for new CMCI registers x86, mce, cmci: add CMCI support x86, mce, cmci: disable CMCI on rebooting x86, mce, cmci: recheck CMCI banks after APIC has been enabled on CPU #0 x86, mce: enable machine checks in 64-bit defconfig Andre Haupt (15): Bluetooth: Eliminate a sparse warning in bt3c driver Staging: asus_oled: fix sparse warnings about using plain integer as NULL pointer Staging: asus_oled: do not initialise statics to 0 or NULL Staging: asus_oled: trailing statements should be on next line Staging: asus_oled: fix various checkpatch.pl issues regarding missing or obsolete spaces Staging: asus_oled: do not use assignment in if condition Staging: me4000: use linux/uaccess.h and linux/io.h Staging: me4000: return is not a function, no parentheses required Staging: me4000: inline keyword should sit between storage class and type Staging: me4000: replace some C99 comments Staging: me4000: kfree(NULL) is safe, so no extra checks needed. Staging: me4000: fix various checkpatch.pl warnings about bracing Staging: me4000: do not use C99 style comments. Staging: me4000: use tabs for code indentation Staging: me4000: make file_operations const Andre Noll (3): md: Make mddev->size sector-based. md: Represent raid device size in sectors. md: raid5 run(): Fix max_degraded for raid level 4. Andre Przywara (1): KVM: SVM: set accessed bit for VMCB segment selectors Andrea Arcangeli (1): KVM: Fix missing smp tlb flush in invlpg Andrea Borgia (2): ALSA: preliminary support for Toshiba SB-0500 ALSA: rename "Device" to "Toshiba SB-0500" via quirks Andrea Righi (1): fbmem: fix fb_info->lock and mm->mmap_sem circular locking dependency Andreas Bergmeier (2): ALSA: usb-audio - Quirk for Serato phono ALSA: usbaudio - use printf format instead of hardcoding it Andreas Herrmann (11): x86: hpet: print HPET registers during setup (if hpet=verbose is used) x86: hpet: provide separate functions to stop and start the counter x86: hpet: stop HPET_COUNTER when programming periodic mode x86: memtest: reuse test patterns when memtest parameter exceeds number of available patterns x86: memtest: introduce array to select memtest patterns x86: memtest: cleanup memtest function x86: memtest: adapt log messages x86: memtest: wipe out test pattern from memory x86: update description for memtest boot parameter x86: memtest: add additional (regular) test patterns x86: mtrr: don't modify RdDram/WrDram bits of fixed MTRRs Andreas Krebbel (1): [S390] Add hwcap flag for the etf3 enhancement facility Andreas Mohr (1): ALSA: ALS4000, slight mixer improvements Andreas Schwab (1): x86 setup: fix asm constraints in vesa_store_edid Andres Salomon (15): drivers/video/sgivwfb.c: fix memory leaks in removal path tdfxfb: fix memory leaks in removal path tridentfb: fix memory leaks in removal path vfb: fix memory leaks in removal path skeletonfb: check fb_alloc_cmap return value and handle failure properly sm501fb: check fb_alloc_cmap return value and handle failure properly sstfb: check fb_alloc_cmap return value and handle failure properly stifb: check fb_alloc_cmap return value and handle failure properly valkyriefb: check fb_alloc_cmap return value and handle failure properly sunxvr500: fix cmap memory leaks tgafb: fix cmap memory leak 68328fb: fix cmap memory leaks amba-clcd: fix cmap memory leaks amifb: check fb_alloc_cmap return value and handle failure properly asiliantfb: fix cmap memory leaks Andrew H. Richter (1): claw: fix minor findings from code analysis tool Andrew Klossner (1): powerpc/udbg: Fix lost byte during console handover; change LFCR to CRLF Andrew Morton (11): kernel/trace/ring_buffer.c: reduce inlining kernel/trace/ring_buffer.c: use DIV_ROUND_UP fix "sparseirq: use kstat_irqs_cpu on non-x86 architectures too" x86: use smp_call_function_single() in arch/x86/kernel/cpu/mcheck/mce_amd_64.c PCI: constify pci_bus_assign_resources() regulator: minor cleanup of virtual consumer rtc: convert LEAP_YEAR into an inline drivers/video/uvesafb.c: don't use gfp_any() fbdev: uninline lock_fb_info() __tty_open(): use the correct type for saved_flags x86: fix is_io_mapping_possible() build warning on i386 allnoconfig Andrew Price (1): rt2400,rt2500: init led_qual for LED_MODE_DEFAULT Andrew Vasquez (12): [SCSI] qla2xxx: Refactor request/response-queue register handling. [SCSI] qla2xxx: Always (re)read firmware version/capabilities information. [SCSI] qla2xxx: Pass in optional extended-initialization control block. [SCSI] qla2xxx: Preserve an fcport's loop-id after terminate_rport_io(). [SCSI] qla2xxx: Update MPI/PHY version retrieval codes. [SCSI] qla2xxx: Correct abort-semantics in qla2x00_abort_all_cmds(). [SCSI] qla2xxx: Ensure the timer and DPC routines complete prior to midlayer tear-down. [SCSI] qla2xxx: Always use an FLT's NVRAM/VPD region information. [SCSI] qla2xxx: Reduce request queue-size overhead with recent ISPs. [SCSI] qla2xxx: Explicitly set the execution-throttle with recent ISPs. [SCSI] qla2xxx: Don't cache VPD data for newer ISPs. [SCSI] qla2xxx: Update version number to 8.03.01-k1. Andrey Borzenkov (5): Move orinoco Kconfig entries into drivers/net/wireless/orinoco/Kconfig orinoco: convert to struct net_device_ops orinoco: trivial cleanup in alloc_orinocodev orinoco: checkpatch cleanup orinoco: firmware: consistently compile out fw cache support if not requested Andrey Yurovsky (1): rt2x00: Add mesh support Andy Adamson (21): nfsd: embed nfsd4_current_state in nfsd4_compoundres nfsd: don't use the deferral service, return NFS4ERR_DELAY nfsd41: sessions basic data types nfsd41: xdr infrastructure nfsd41: proc stubs nfsd41: exchange_id operation nfsd41: match clientid establishment method nfsd41: enforce NFS4ERR_SEQUENCE_POS operation order rules for minorversion != 0 only. nfsd41: DRC save, restore, and clear functions nfsd41: hard page limit for DRC nfsd41: nfsd DRC logic nfsd41: clear DRC cache on free_session nfsd41: create_session operation nfsd41: Add a create session replay cache nfsd41: non-page DRC for solo sequence responses nfsd41: stateid handling nfsd41: check encode size for sessions maxresponse cached nfsd41: clientid handling nfsd41: access_valid nfsd41: add OPEN4_SHARE_ACCESS_WANT nfs4_stateid bmap nfsd41: support for 3-word long attribute bitmask Andy Fleming (5): netdev: Merge UCC and gianfar MDIO bus drivers gianfar: Add support for skb recycling gianfar: Fix stashing support gianfar: remove gianfar_mii.c gianfar: Convert to use netdev_ops Andy Green (1): [ARM] S3C24XX: Fix bug in IRQ_EINT_BIT() calculation Andy Grover (29): RDS: Socket interface RDS: Main header file RDS: Congestion-handling code RDS: Transport code RDS: Info and stats RDS: Connection handling RDS: loopback RDS: sysctls RDS: Message parsing RDS: send.c RDS: recv.c RDS: RDMA support RDS/IB: Infiniband transport RDS/IB: Ring-handling code. RDS/IB: Implement RDMA ops using FMRs RDS/IB: Implement IB-specific datagram send. RDS/IB: Receive datagrams via IB RDS/IB: Stats and sysctls RDS: Add iWARP support RDS: Common RDMA transport code RDS: Documentation RDS: Add AF and PF #defines for RDS sockets RDS: Add userspace header RDS: Add RDS to AF key strings RDS: Add MAINTAINERS entry RDS: Kconfig and Makefile RDS: Fix m_rs_lock deadlock RDS: Rewrite connection cleanup, fixing oops on rmmod RDS: Use spinlock to protect 64b value update on 32b archs Andy Richter (1): kmsg: convert claw printk messages Andy Walls (44): V4L/DVB (10274): cx18: Fix a PLL divisor update for the I2S master clock V4L/DVB (10275): cx18: Additional debug to display outgoing mailbox parameters V4L/DVB (10276): cx18, cx2341x, ivtv: Add AC-3 audio encoding control to cx18 V4L/DVB (10277): cx18, cx2341x: Fix bugs in cx18 AC3 control and comply with V4L2 spec V4L/DVB (10278): cx18: Fix bad audio in first analog capture. V4L/DVB (10279): cx18: Print driver version number when logging status V4L/DVB (10280): cx18: Rename structure members: dev to pci_dev and v4l2dev to video_dev V4L/DVB (10281): cx18: Conversion to new V4L2 framework: use v4l2_device object V4L/DVB (10283): cx18: Call request_module() with proper argument types. V4L/DVB (10284): cx18: Add initial entry for a Leadtek DVR3100 H hybrid card V4L/DVB (10433): cx18: Defer A/V core initialization until a valid cx18_av_cmd arrives V4L/DVB (10434): cx18: Smarter verification of CX18_AUDIO_ENABLE register writes V4L/DVB (10435): cx18: Normalize APU after second APU firmware load V4L/DVB (10436): cx18: Fix coding style of a switch statement per checkpatch.pl V4L/DVB (10437): cx18: Remove an unused spinlock V4L/DVB (10439): cx18: Clean-up and enable sliced VBI handling V4L/DVB (10440): cx18: Fix presentation timestamp (PTS) for VBI buffers V4L/DVB (10441): cx18: Fix VBI ioctl() handling and Raw/Sliced VBI state management V4L/DVB (10442): cx18: Fixes for enforcing when Encoder Raw VBI params can be set V4L/DVB (10443): cx18: Use correct line counts per field in firmware API call V4L/DVB (10444): cx18: Fix sliced VBI PTS and fix artifacts in last raw line of field V4L/DVB (10445): cx18: Process Raw VBI on a whole frame basis; fix VBI buffer size V4L/DVB (10446): cx18: Finally get sliced VBI working - for 525 line 60 Hz systems at least V4L/DVB (10755): cx18: Convert the integrated A/V decoder core interface to a v4l2_subdev V4L/DVB (10756): cx18: Slim down instance handling, build names from v4l2_device.name V4L/DVB (10757): cx18, v4l2-chip-ident: Finish conversion of AV decoder core to v4l2_subdev V4L/DVB (10758): cx18: Convert I2C devices to v4l2_subdevices V4L/DVB (10759): cx18: Convert GPIO connected functions to act as v4l2_subdevices V4L/DVB (10760): cx18: Fix a memory leak of buffers used for sliced VBI insertion V4L/DVB (10761): cx18: Change log lines for internal subdevs and fix tveeprom reads V4L/DVB (10762): cx18: Get rid of unused variables related to video output V4L/DVB (10763): cx18: Increment version number due to significant changes for v4l2_subdevs V4L/DVB (10764): cx18: Disable AC3 controls as the firmware doesn't support AC3 V4L/DVB (10850): cx18: Use strlcpy() instead of strncpy() for temp eeprom i2c_client setup V4L/DVB (10851): cx18: Fix a video scaling check problem introduced by sliced VBI changes V4L/DVB (10852): cx18: Include cx18-audio.h in cx18-audio.c to eliminate s-parse warning V4L/DVB (10853): cx18: Fix s-parse warnings and a logic error about extracting the VBI PTS V4L/DVB (10854): cx18: Correct comments about vertical and horizontal blanking timings V4L/DVB (10855): cx18: Fix VPS service register codes V4L/DVB (10856): cx18: Add interlock so sliced VBI insertion only happens for an MPEG PS V4L/DVB (11042): v4l2-api: Add definitions for V4L2_MPEG_STREAM_VBI_FMT_IVTV payloads V4L/DVB (11091): cx18, ivtv: Ensure endianess for linemasks in VBI embedded in MPEG stream V4L/DVB (11092): cx18: Optimize processing of VBI buffers from the capture unit V4L/DVB (11233): mxl5005s: Switch in mxl5005s_set_params should operate on correct values Andy Whitcroft (2): mmc: add MODALIAS linkage for MMC/SD devices acer-wmi: Cleanup the failure cleanup handling Aneesh Kumar K.V (4): ext4: Add checks to validate extent entries. ext4: Validate extent details only when read from the disk ext4: Fix discard of inode prealloc space with delayed allocation. ext4: Rename pa_linear to pa_type Anssi Hannula (1): HID: add support for another version of 0e8f:0003 device in hid-pl Antoine Jacquet (1): V4L/DVB (10263): zr364xx: add support for Aiptek DV T300 Anton Blanchard (20): powerpc/mm: Move 64-bit unmapped_area to top of address space powerpc/mm: Reduce hashtable size when using 64kB pages powerpc: Move is_32bit_task powerpc: Rearrange mmap.c powerpc: Randomise mmap start address powerpc: More stack randomisation for 64bit binaries powerpc: Randomise lower bits of stack address powerpc: Randomise the brk region powerpc: Ensure random space between stack and mmaps powerpc: Increase stack gap on 64bit binaries powerpc: Randomise PIEs mm: enable hashdist by default on 64bit NUMA mm: align vmstat_work's timer random: align rekey_work's timer powerpc: Print progress of ibm,client-architecture method powerpc: Clean up some prom printouts powerpc/pseries: Add dispatch dispersion statistics powerpc/pseries: Scan for all events in rtasd powerpc/pseries: Fix ibm,client-architecture comment powerpc/pseries: Enable relay in pseries_defconfig Anton Veretenenko (1): sony-laptop: Add FW specific hotkey events Anton Vorontsov (41): powerpc/fsl_pci: Add MPC83xx PCI-E controller RC mode support powerpc/83xx: Add PCI-E support for all MPC83xx boards with PCI-E gianfar: Implement proper, per netdevice wakeup management phylib: Rework suspend/resume code to check netdev wakeup capability gianfar: Fix sparse warnings powerpc: Document FSL eSDHC bindings powerpc/83xx: Convert existing sdhc nodes to new bindings powerpc/83xx: Add FSL eSDHC support for MPC837x-RDB boards powerpc/83xx: Do not configure or probe disabled FSL DR USB controllers gianfar: Fix build with CONFIG_PM enabled fsl_pq_mdio: Revive Gianfar TBI PHY support tracing: Fix TRACING_SUPPORT dependency for PPC32 fsl_pq_mdio: Use proper address translation powerpc/83xx: Add power management support for MPC837x boards powerpc/83xx: Move gianfar mdio nodes under the ethernet nodes powerpc/85xx: Move gianfar mdio nodes under the ethernet nodes powerpc/86xx: Move gianfar mdio nodes under the ethernet nodes ucc_geth: Fix build breakage caused by a merge sdhci: Add support for bus-specific IO memory accessors sdhci: Split card-detection IRQs management from sdhci_init() sdhci: Enable only relevant (DMA/PIO) interrupts during transfers sdhci: Add support for card-detection polling sdhci: Add support for hosts reporting inverted write-protect state sdhci: Add set_clock callback and a quirk for nonstandard clocks sdhci: Add quirk for controllers that need small delays for PIO sdhci: Add quirk for controllers that need IRQ re-init after reset sdhci: Add quirk for forcing maximum block size to 2048 bytes mmc: Add OpenFirmware bindings for SDHCI driver ucc_geth: Fix three oopses in PHY {de,}initialization code spi_mpc83xx: fix sparse warnings spi_mpc83xx: rework chip selects handling spi_mpc83xx: add OF platform driver bindings powerpc: add mmc-spi-slot bindings powerpc/83xx: add mmc-spi support via the device tree for MPC8323E-RDB powerpc/fsl_soc: isolate legacy fsl_spi support to mpc832x_rdb boards ucc_geth: Pass proper device to DMA routines, otherwise oops happens fsl_pq_mdio: Revive UCC MDIO support fsl-diu-fb: Pass the proper device for dma mapping routines PCI: Fix oops in pci_vpd_truncate ASoC: fsl_dma: Pass the proper device for dma mapping routines PCI: Fix oops in pci_vpd_truncate Antonio Ospite (2): V4L/DVB (10344): gspca - ov534: Disable the Hercules webcams. V4L/DVB (10676): mt9m111: Call icl->reset() on mt9m111_reset(). Antti Palosaari (8): V4L/DVB (10286): af9015: add new USB ID for KWorld DVB-T 395U V4L/DVB (10329): af9015: remove dual_mode module param V4L/DVB (11215): zl10353: add support for Intel CE6230 and Intel CE6231 V4L/DVB (11216): Add driver for Intel CE6230 DVB-T USB2.0 V4L/DVB (11336): af9015: remove experimental V4L/DVB (11337): af9015: add new USB ID for KWorld USB DVB-T TV Stick II (VS-DVB-T 395U) V4L/DVB (11339): af9015: remove wrong definitions V4L/DVB (11340): af9015: add support for AverMedia AVerTV Volar Black HD (A850) Aravind Srinivasan (1): relay: fix for possible loss/corruption of produced subbufs Aristeu Sergio Rozanski Filho (1): ALSA: hda: add quirk for Lenovo X200 laptop dock Arjan van de Ven (14): x86: setup stack canary for the idle threads x86: add CONFIG_CC_STACKPROTECTOR self-test stackprotector: turn not having the right gcc into a #warning stackprotector: better self-test x86: simplify stackprotector self-check x86: don't pretend that non-framepointer stack traces are reliable sched, latencytop: incorporate review feedback from Andrew Morton genirq: add support for threaded interrupts to devres kobject: don't block for each kobject_uevent async: remove the temporary (2.6.29) "async is off by default" code ide/net: flip the order of SATA and network init module: create a request_module_nowait() drm/i915: clean up udelay usage ACPI: battery: asynchronous init Arnaldo Carvalho de Melo (20): ftrace: add ftrace_vprintk blktrace: add ftrace plugin tracing/blktrace: fix up checkpatch reported problems in ftrace plugin patch blktrace: the ftrace interface needs CONFIG_TRACING blktrace: Use tracing_reset_online_cpus trace: Use tracing_reset_online_cpus in more places trace_sched_wakeup: Remove unused variable trace: Change struct trace_event callbacks parameter list blkftrace: binary tracing, synthesizing old format blktrace: fix coding style in recent patches trace: judicious error checking of trace_seq results trace: make the trace_event callbacks return enum print_line_t trace: assign defaults at register_ftrace_event trace_branch: Remove unused function trace: Remove unused trace_array_cpu parameter ring_buffer: remove unused flags parameter tracing: Introduce trace_buffer_{lock_reserve,unlock_commit} trace: Call tracing_reset_online_cpus before tracer->init() tracing: handle unregistering the current tracer ring_buffer: pahole struct ring_buffer Arnd Bergmann (9): powerpc/cell: Fix dependency in cpufreq powerpc/spufs: Initialize ctx->stats.tstamp correctly make exported headers use strict posix types make most exported headers use strict integer types make MTD headers use strict integer types make drm headers use strict integer types make netfilter use strict integer types remove __KERNEL_STRICT_NAMES emu101k1.h: fix duplicate include of Arne Luehrs (1): V4L/DVB (10319): dib0700: enable IR receiver in Nova TD usb stick (52009) Artem Bityutskiy (9): UBIFS: improve find function interface UBIFS: amend key_hash return value UBIFS: fix bogus assertion UBIFS: fix lprops committing bug UBIFS: use KERN_CONT UBIFS: introduce a helpful variable UBIFS: fix commentaries UBIFS: fully sort GCed nodes UBIFS: add R/O compatibility Artem Makhutov (1): V4L/DVB (11248): Remove debug output from stb6100_cfg.h Arthur Jones (3): e1000e: allow tx of pre-formatted vlan tagged packets e1000e: fixup merge error igb: allow tx of pre-formatted vlan tagged packets Ashwin Ganti (1): Staging: add p9auth driver Atsushi Nemoto (8): ASoC: Only deregister AC97 dev if it's name was not "AC97" [MTD] [NAND] TXx9: add NDFMC support [MTD] RBTX4939: add MTD support [MTD] TXx9 SoC NAND Flash Memory Controller driver [MTD] RBTX4939 map driver [MTD] mtdpart: Make all partition parsers return allocated array dmaengine: Add privatecnt to revert DMA_PRIVATE property tc35815: Fix build error if NAPI enabled Atsushi SAKAI (1): md: fix typo in FSF address Avi Kivity (27): KVM: MMU: Inherit a shadow page's guest level count from vcpu setup KVM: MMU: Segregate mmu pages created with different cr4.pge settings KVM: MMU: Initialize a shadow page's global attribute from cr4.pge KVM: Fix vmload and friends misinterpreted as lidt KVM: MMU: Add for_each_shadow_entry(), a simpler alternative to walk_shadow() KVM: MMU: Use for_each_shadow_entry() in __direct_map() KVM: MMU: Replace walk_shadow() by for_each_shadow_entry() in fetch() KVM: MMU: Replace walk_shadow() by for_each_shadow_entry() in invlpg() KVM: MMU: Drop walk_shadow() KVM: Fallback support for MSR_VM_HSAVE_PA KVM: Move struct kvm_pio_request into x86 kvm_host.h KVM: VMX: Fix guest state validity checks KVM: VMX: don't clobber segment AR if emulating invalid state KVM: VMX: Prevent exit handler from running if emulating due to invalid state KVM: x86 emulator: Make emulate_pop() a little more generic KVM: VMX: When emulating on invalid vmx state, don't return to userspace unnecessarily KVM: x86 emulator: implement 'ret far' instruction (opcode 0xcb) KVM: Properly lock PIT creation KVM: MMU: Optimize page unshadowing KVM: Add CONFIG_HAVE_KVM_IRQCHIP KVM: Interrupt mask notifiers for ioapic KVM: Reset PIT irq injection logic when the PIT IRQ is unmasked KVM: MMU: Rename "metaphysical" attribute to "direct" KVM: MMU: Only enable cr4_pge role in shadow mode KVM: Userspace controlled irq routing KVM: Avoid using CONFIG_ in userspace visible headers KVM: VMX: Don't allow uninhibited access to EFER on i386 Avishay Traeger (1): block: Repeated lines in switching-sched.txt Ayaz Abdulla (18): forcedeth: mgmt unit interface forcedeth: msi interrupt fix forcedeth: ethtool tx csum fix forcedeth: recover error support forcedeth: bump version to 63 forcedeth: fix stats version feature forcedeth: fix missing napi enable/disable calls forcedeth: remove msix + napi forcedeth: save irq events for napi processing forcedeth: remove overhead forcedeth: add/modify tx done with limit forcedeth: napi - handle all processing forcedeth: add new optimization mode forcedeth: remove isr processing loop forcedeth: add interrupt moderation logic forcedeth: performance changes forcedeth: fix irq clearing and napi spin lock changes forcedeth: version bump to 64 Balaji Rao (1): mmc: During unsafe resume, select the right volatge for the card Balbir Singh (1): memcg: show memcg information during OOM Baodong Chen (1): Documentation/x86/boot.txt: modify fieldname Bart Joris (1): Staging: comedi: add ni_670x driver Bart Van Assche (1): branch tracer: Fix for enabling branch profiling makes sparse unusable Bartlomiej Zolnierkiewicz (171): x86: fix IO APIC resource allocation error message ide: fix IDE_DFLAG_NO_IO_32BIT handling ide: move ide_pktcmd_tf_load() to ide-atapi.c ide: no need to touch local IRQs in ide_probe_port() ide: move ->lock and ->timer init from init_irq() to ide_init_port_data() ide: init_irq() doesn't need to hold ide_cfg_mtx ide: remove superfluous check from ide_proc_port_register_devices() ide-acpi: no need to zero ->acpidata for devices ide-acpi: init ACPI handles early for devices ide: add ide_for_each_present_dev() iterator ide: sanitize ACPI initialization ide-acpi: cleanup do_drive_get_GTF() ide-acpi: cleanup do_drive_set_taskfiles() ide-acpi: remove taskfile_load_raw() ide: remove stale comments from drive_is_ready() ide: unexport ide_devset_execute() ide: move drive_is_ready() to ide-io.c ide: move ide_dma_timeout_retry() to ide-dma.c ide: remove ide_do_drive_cmd() ide: factor out processing of special commands from ide_special_rq() ide: move ide_do_park_unpark() to ide-park.c ide: move device settings code to ide-devsets.c ide: move xfer mode tuning code to ide-xfer-mode.c ide: move ide_read_bcount_and_ireason() to ide-atapi.c ide: move standard I/O code to ide-io-std.c ide: fix printk() levels in [atapi_]reset_pollfunc() ide: fix comments in ide_config_drive_speed() ide: checkpatch.pl fixes for ide-iops.c ide: move error handling code to ide-eh.c (v2) mn10300: add pci_get_legacy_ide_irq() to amd74xx: use ide_pci_is_in_compatibility_mode() ns87415: use pci_get_legacy_ide_irq() ns87415: small ->init_hwif cleanup trm290: small ->init_hwif cleanup ide: handle IDE_HFLAG[_FORCE]_LEGACY_IRQS in ide_pci_init_{one,two}() ide: use pci_get_legacy_ide_irq() in ide_pci_init_{one,two}() ide: use ide_pci_is_in_compatibility_mode() in ide_pci_init_{one,two}() ide: remove no longer needed IDE_HFLAG[_FORCE]_LEGACY_IRQS amd74xx: remove no longer needed ->init_hwif method ide: remove no longer needed IRQ fallback code from hwif_init() ide: remove no longer needed IRQ auto-probing from try_to_identify() (v2) ide: remove try_to_identify() wrapper ide: fix ->init_chipset method to return 'int' value ide: remove pciirq argument from ide_pci_setup_ports() frv: remove mn10300: remove ide: fix kmalloc() failure handling in ide_driveid_update() ide: propagate AltStatus workarounds to ide_driveid_update() ide: shorten timeout value in ide_driveid_update() ide: remove broken EXABYTENEST support ide: classify device type in do_probe() ide: sanitize SELECT_MASK() usage in ide_driveid_update() ide: clear drive IRQ after re-enabling local IRQs in ide_driveid_update() ide: use try_to_identify() in ide_driveid_update() icside: use struct ide_port_info also for PCB version 5 (v2) ide_arm: use struct ide_port_info ide-generic: use struct ide_port_info ide-pnp: use struct ide_port_info buddha: use struct ide_port_info macide: use struct ide_port_info ide: move ->rqsize init from init_irq() to ide_init_port() ide: remove IDE_ARCH_INTR (v2) ide: remove IDE_ARCH_LOCK (v2) ide: make m68k host drivers use IDE_HFLAG_MMIO ide: cleanup at91_ide: use readsw()/writesw() directly ide: include only when needed scc_pata: remove DECLARE_SCC_DEV() macro (v2) ide: fix memleak on failure in probe_for_drive() ide: fix error message in pre_task_out_intr() ide: allow host drivers to specify IRQ flags ide: remove now superfluous check from ide_host_register() ide: add IDE_HFLAG_DTC2278 host flag ide: add IDE_HFLAG_4DRIVES host flag ide: add "flagged" taskfile flags to struct ide_taskfile (v2) ide: complete power step in ide_complete_pm_request() ide: factor out completion of taskfile from ide_end_drive_cmd() ide: move request type specific code from ide_end_drive_cmd() to callers (v3) ide: no need to read Status and Error registers for "empty" taskfile requests ide: remove ->data_phase field from ide_hwif_t ide: move smart_enable() call out from get_smart_data() icside: icside_dma_setup() fixes trm290: trm290_dma_setup() fix au1xxx-ide: auide_dma_end() cleanup ide: remove no longer needed PC_FLAG_TIMEDOUT packet command flag ide-floppy: remove superfluous check from ide_floppy_end_request() ide-tape: remove superfluous tape->lock ide: move ->failed_pc to ide_drive_t ide: use ->end_request only for private device driver requests ide-{floppy,tape}: cleanup ide*_end_request() ide: remove ->end_request method ide: return request status from ->pc_callback method ide: use blk_fs_request() check in ide-taskfile.c ide: call ide_build_sglist() prior to ->dma_setup (v2) ide: remove ide_task_t typedef ide: pass command instead of request to ide_pio_datablock() ide: move command related fields from ide_hwif_t to struct ide_cmd ide: set IDE_TFLAG_WRITE basing on data phase used in ide_taskfile_ioctl() ide: use ata_tf_protocols enums ide: merge task_{in,out}_intr() ide: inline task_in_unexpected() into task_pio_intr() ide: unify exit paths in task_pio_intr() ide: task_error() -> task_error_cmd() ide: use ide_complete_cmd() for head unload commands ide: use ide_complete_cmd() for REQ_UNPARK_HEADS ide: sanitize ide_finish_cmd() ide: make ide_special_rq() BUG() on unknown requests ide: add ide_end_rq() (v2) ide: sanitize ide_end_rq() ide: pass error value to ide_complete_rq() ide: move rq->errors quirk out from ide_end_request() ide: remove BUG() from ide_complete_rq() ide: pass number of bytes to complete to ide_complete_rq() ide: use ide_end_rq() in ide_complete_rq() ide: remove ide_end_request() ide: pass command to ide_map_sg() ide: use do_rw_taskfile() for ATA_CMD_PACKET commands ide: set hwif->expiry prior to calling [__]ide_set_handler() ide: add ->dma_timer_expiry method and remove ->dma_exec_cmd one (v2) ide: remove ide_execute_pkt_cmd() (v2) ide: keep track of number of bytes instead of sectors in struct ide_cmd at91_ide: fix ->ftf_flags handling ide: add support for arbitrary transfer lengths to ide_pio_bytes() ide: use PageHighMem() instead of ifdefs in ide_pio_bytes() ide-cd: remove dead URLs ide-cd: use ide_end_rq() also for failed non-fs requests ide-cd: remove dead code from cdrom_decode_status() ide-cd: remove needless ide_dump_status_no_sense() wrapper ide-cd: remove no longer needed 'ignore' module parameter ide-cd: factor out failed request completion from cdrom_end_request() ide-cd: unify ide_cd_do_request() exit paths ide-cd: move setting REQ_FAILED flag out from 'end_request' exit path ide-cd: unify cdrom_newpc_intr() exit paths ide-cd: remove cdrom_end_request() ide-cd: kill whole failed request in ide_cd_do_request() ide-cd: cleanup ide_cd_do_request() ide-cd: use scatterlists for PIO transfers (fs requests) ide-cd: fix non-SECTOR_SIZE-multiples PIO transfers for fs requests ide-cd: merge ide_cd_prepare_rw_request() into cdrom_start_rw() ide-cd: use scatterlists for PIO transfers (non-fs requests) (v2) ide-cd: use common completion path for DMA requests in cdrom_newpc_intr() ide-cd: unify transfer padding in cdrom_newpc_intr() ide-cd: minor ide_cdrom_setup() cleanup ide: add ->dma_clear method and remove ->dma_timeout one ide: inline ide_dma_timeout() into ide_dma_timeout_retry() ide: destroy DMA mappings after ending DMA (v2) ide: add ide_dma_prepare() helper ns87415: use custom ->dma_{start,end} to handle ns87415_prepare_drive() trm290: use custom ->dma_{start,end} to handle trm290_prepare_drive() ide: add ->dma_check method ide: move ide_map_sg() call out of ->dma_setup method (take 2) ide: set/clear drive->waiting_for_dma flag in the core code ide: sanitize ide_build_sglist() and ide_destroy_dmatable() ide-generic: remove no longer needed sysfs interface ide: merge ide_arm and ide_generic host drivers ide: fix locking in drive_release_dev() ide: decrease size of ->pc_buf field in struct ide_atapi_pc ide: remove CONFIG_BLK_DEV_IDEDOUBLER config option ide-{floppy,tape}: fix padding for PIO transfers ide-floppy: use ide_pio_bytes() MAINTAINERS: move old ide-{floppy,tape} entries to CREDITS (take 2) isd200: make it 'struct hd_driveid'-free ubd_kern: make it 'struct hd_driveid'-free xsysace: make it 'struct hd_driveid'-free include/linux/hdreg.h: cover struct hd_driveid with #ifndef/#endif __KERNEL__ isd200: WIN_* -> ATA_CMD_* aoe: WIN_* -> ATA_CMD_* include/linux/hdreg.h: cover WIN_* and friends with #ifndef/#endif __KERNEL__ isd200: use ATA_* defines instead of *_STAT and *_ERR ones include/linux/hdreg.h: remove unused defines remove include from Beat Michel Liechti (1): DVB: firedtv: FireDTV S2 problems with tuning solved Ben Dooks (37): ASoC: Fix copyright statements on Simtec files S3C24XX: Move and update IIS headers S3C: Move to ASoC: Add JIVE audio support ASoC: Split s3c2412-i2s.c into core and SoC specific parts ASoC: Add s3c64xx-i2s support ASoC: Select DMA if I2S is configured [ARM] S3C: Nove from plat-s3c24xx to plat-s3fc [ARM] S3C: Move PM support functions to common location [ARM] S3C: Split the resume memory check code from pm.c [ARM] S3C: Move plat-s3c24xx pm.c support into plat-s3c [ARM] S3C: Fix warnings in the PM memory CRC code [ARM] S3C24XX: Split PM code from arch/arm/plat-s3c24xx/irq.c [ARM] S3C24XX: Remove changelog from arch/arm/plat-s3c24xx/irq.c [ARM] S3C: Make IRQ_EINT sleep control common [ARM] S3C: Rename s3c2410_pm_init to s3c_pm_init. [ARM] S3C: Rename sleep.S functions to be non-cpu specific [ARM] S3C: Update UART save over PM suspend/resume [ARM] S3C24XX: Add S3C_GPIO_END definition [ARM] S3C: Avoid checking the task stackpage in pm-check [ARM] S3C: Do not kmalloc/kfree during inner suspend code. ASoC: Fix Samsung S3C2412_IISMOD_SDF_{MSB,LSB} definitions [ARM] S3C: Tidy sleep code path to fix call flow [ARM] S3C64XX: Add modem registers and a virtual map [ARM] S3C64XX: Add EINT group regs and move IRQ_EINT to regs-gpio.h [ARM] S3C64XX: Add GPIO SPCONSLP and SLPEN register definitions [ARM] S3C64XX: Add S3C64XX_SPCON register bit definitions [ARM] S3C64XX: SYSCON power and sleep control register defines [ARM] S3C64XX: Add definitions for the GPIO memory port configurations [ARM] S3C64XX: add AHB_CON and SPCON register address definitions sdhci: Add get_{max,timeout}_clock callbacks USB: ohci-s3c2410: remove include USB: ohci-s3c2410: fix name of bus clock USB: ohci-hcd: Add ARCH_S3C24XX to the ohci-s3c2410.c glue USB: S3C: Move usb-control.h to platform include fb: add s3c-fb driver for newer Samsung SoC framebuffer devices i2c-s3c2410: sda_delay should be in ns, not clock ticks Ben Gamari (5): drm: Convert proc files to seq_file and introduce debugfs drm/i915: Consolidate gem object list dumping drm: Convert proc files to seq_file and introduce debugfs drm/i915: Convert i915 proc files to seq_file and move to debugfs. drm/i915: Consolidate gem object list dumping Ben Hutchings (25): net: Remove redundant NAPI functions tehuti: Use request_firmware() typhoon: Use request_firmware() sfc: SFT9001: Include non-breaking cable diagnostics in online self-tests sfc: Fix test for MDIO read failure sfc: SFT9001/SFN4111T: Check PHY boot status during board initialisation sfc: Remove "XFP" from log messages that are not specific to XFP sfc: Fix reporting of PHY id sfc: Add support for QT2025C PHY sfc: Delete unused efx_blinker::led_num field sfc: Clean up LED control sfc: Add support for SFN4112F SFP+ reference design sfc: Fix efx_ethtool_nway_result() to use clause 45 MDIO registers sfc: Reject packets from the kernel TX queue during a loopback self-test sfc: Clean up properly on reset failure paths sfc: Clear I2C adapter structure in falcon_remove_nic() sfc: Don't wake TX queues while they're being flushed sfc: Fix search for flush completion events sfc: Improve NIC internal error recovery sfc: Pad packets to 33 bytes to prevent TX packet parser lockup sfc: Work around unreliable legacy interrupt status sfc: Remove unused private PCI register definitions sfc: Optimise falcon_writel_page_locked() for page > 0 sfc: Implement adaptive IRQ moderation sfc: Call netif_napi_add() before registering our interrupt handler Ben Nizette (1): avr32: Fix out-of-range rcalls in large kernels Benjamin Herrenschmidt (34): Merge commit 'kumar/next' into next Merge commit 'gcl/next' into next powerpc/mm: Rework I$/D$ coherency (v3) powerpc/4xx: Add missing USB and i2c devices to Canyonlands powerpc/4xx: Enable PCI domains on 4xx Merge commit 'origin/master' into next Merge commit 'kumar/next' into next Merge commit 'ftrace/function-graph' into next Merge commit 'jwb/next' into next Merge commit 'gcl/next' into next Merge commit 'origin/master' into next powerpc: Wire up /proc/vmallocinfo to our ioremap() powerpc/mm: Properly wire up get_user_pages_fast() on 32-bit powerpc/kconfig: Kill PPC_MULTIPLATFORM drm: Use resource_size_t for drm_get_resource_{start, len} drm: Split drm_map and drm_local_map drm: Make drm_local_map use a resource_size_t offset drm/radeon: Print PCI ID of cards when probing powerpc/mm: Split the various pgtable-* headers based on MMU type powerpc/mm: Unify PTE_RPN_SHIFT and _PAGE_CHG_MASK definitions Merge commit 'kumar/next' into next Merge commit 'gcl/next' into next Merge commit 'origin/master' into next powerpc: Fix prom_init on 32-bit OF machines powerpc/mm: Tweak PTE bit combination definitions powerpc/mm: Merge various PTE bits and accessors definitions powerpc/mm: Rename arch/powerpc/kernel/mmap.c to mmap_64.c powerpc/mm: Fix printk type warning in mmu_context_nohash powerpc/mm: Add option for non-atomic PTE updates to ppc64 powerpc/mm: Introduce early_init_mmu() on 64-bit powerpc: Fix bugs introduced by sysfs changes Merge commit 'kumar/next' into next Merge commit 'origin/master' into next powerpc/pmac: Fix internal modem IRQ on Wallstreet PowerBook Benjamin Krill (2): powerpc/cell: Add rtas rtc calls for the QPACE platform [MTD] ofpart: Check name property to determine partition nodes. Benjamin LaHaise (1): x86-64: remove locked instruction from switch_to() Benjamin Marzinski (1): GFS2: Fix locking bug in failed shared to exclusive conversion Benjamin Thery (9): netns: ipmr: allocate mroute_socket per-namespace. netns: ipmr: dynamically allocate vif_table netns: ipmr: store netns in struct mfc_cache netns: ipmr: dynamically allocate mfc_cache_array netns: ipmr: declare counter cache_resolve_queue_len per-namespace netns: ipmr: declare mroute_do_assert and mroute_do_pim per-namespace netns: ipmr: declare reg_vif_num per-namespace netns: ipmr: declare ipmr /proc/net entries per-namespace netns: ipmr: enable namespace support in ipv4 multicast routing code Benny Halevy (14): NFSD: return nfsv4 error code nfserr_notsupp rather than nfsv[23]'s nfserr_opnotsupp nfsd: remove nfsd4_ops array size nfs41: common protocol definitions nfsd41: sequence operation nfsd41: destroy_session operation nfsd: pass nfsd4_compound_state* to nfs4_preprocess_{state,seq}id_op nfsd41: control nfsv4.1 svc via /proc/fs/nfsd/versions nfsd41: pass writable attrs mask to nfsd4_decode_fattr nfsd: dynamically skip encoded fattr bitmap in _nfsd4_verify nfsd41: SUPPATTR_EXCLCREAT attribute nfsd41: CREATE_EXCLUSIVE4_1 nfsd41: Documentation/filesystems/nfs41-server.txt nfsd41: define NFSD_DRC_SIZE_SHIFT in set_max_drc nfsd41: define nfsd4_set_statp as noop for !CONFIG_NFSD_V4 Bernard Pidoux (3): ax25: SOCK_DEBUG message simplification ax25: zero length frame filtering in AX25 netrom: zero length frame filtering in NetRom Bernd Porr (4): Staging: comedi: add comedi_num_legacy_minors module parameter Staging: comedi: add comedi_usb_auto_[un]config functions Staging: comedi: usbdux[fast] firmware upload changes Staging: comedi: usbduxfast: fix run-time error Bernd Schmidt (1): [MTD] Fix a bad dependency in the Blackfin code Bill Pemberton (227): Staging: comedi: Convert C99 style comments to traditional style comments Staging: comedi: Change "foo * bar" to "foo *bar" Staging: comedi: Add spaces after commas where suggested by checkpatch.pl Staging: comedi: Add spaces around colons as needed Staging: comedi: Add spaces around parens as requested by checkpatch.pl Staging: comedi: Remove instances of assignments in conditionals Staging: comedi: Move trailing statements to next line as requested by checkpatch Staging: comedi: Fix cases of open curly on wrong line Staging: comedi: Add spaces around colons as requested by checkpatch Staging: comedi: Misc code cleanups for checkpatch Staging: comedi: Remove checks for NULL before calling kfree() Staging: comedi: Remove curly braces where they are not needed Staging: comedi: Remove comedi32_chaninfo_struct typedef Staging: comedi: Remove boardtype typedef Staging: comedi: Remove rtdBoard typedef Staging: comedi: Remove s626_board typedef Staging: comedi: Remove V_FP_V typedef Staging: comedi: Remove comedi_t typedef Staging: comedi: Remove lsampl_t and sampl_t typedefs Staging: comedi: Remove comedi_device typedef Staging: comedi: Remove comedi_subdevice typedef Staging: comedi: Remove comedi_async typedef Staging: comedi: Remove comedi_driver typedef Staging: comedi: Remove comedi_lrange typedef Staging: comedi: Remove device_create_result_type typedef Staging: comedi: Remove comedi_trig typedef Staging: comedi: Remove comedi_cmd typedef Staging: comedi: Remove comedi_insn typedef Staging: comedi: Remove comedi_insnlist typedef Staging: comedi: Remove comedi_chaninfo typedef Staging: comedi: Remove comedi_subdinfo typedef Staging: comedi: Remove comedi_devinfo typedef Staging: comedi: Remove comedi_devconfig typedef Staging: comedi: Remove comedi_rangeinfo typedef Staging: comedi: Remove comedi_krange typedef Staging: comedi: Remove comedi_bufconfig typedef Staging: comedi: Remove comedi_bufinfo typedef Staging: comedi: Remove DMABUF typedef Staging: comedi: Remove pci6208_board typedef Staging: comedi: Remove pci6208_private typedef Staging: comedi: Remove adl_pci7296_private typedef Staging: comedi: Remove adl_pci7432_private typedef Staging: comedi: Remove adl_pci8164_private typedef Staging: comedi: Remove pci9111_board_struct typedef Staging: comedi: Remove pci9111_private_data typedef Staging: comedi: Remove pci9111_trigger_sources typedef Staging: comedi: Remove pci9111_ISC0_sources typedef Staging: comedi: Remove C99 style comments in adl_pci9111.c Staging: comedi: Remove boardtype typedef in adl_pci9118.c Staging: comedi: Remove pci9118_private typedef Staging: comedi: Remove adq12b_board typedef Staging: comedi: Remove adq12b_private typedef Staging: comedi: Remove boardtype typedef in adv_pci1710.c Staging: comedi: Remove pci1710_private typedef Staging: comedi: Remove boardtype and pci1723_private typedefs in adv_pci1723.c Staging: comedi: Remove hw_cards_id and hw_io_access typedefs in adv_pci_dio.c Staging: comedi: Remove diosubd_data typedef Staging: comedi: Remove boardtype typedef in adv_pci_dio.c Staging: comedi: Remove C99 style comments in adv_pci_dio.c Staging: comedi: Remove pci_dio_private typedef Staging: comedi: Remove board_type typedef in aio_aio12_8.c Staging: comedi: Remove aio12_8_private typedef Staging: comedi: Remove counter_mode_register_t typedef Staging: comedi: Remove aio_iiro_16_board typedef Staging: comedi: Remove aio_iiro_16_private typedef Staging: comedi: Remove dio200_board typedef Staging: comedi: Remove dio200_layout typedef Staging: comedi: Remove dio200_private typedef Staging: comedi: Remove dio200_subdev_8254 typedef Staging: comedi: Remove dio200_subdev_intr typedef Staging: comedi: Remove pc236_board typedef Staging: comedi: Remove pc236_private typedef Staging: comedi: Remove pc263_board typedef Staging: comedi: Remove pc263_private typedef Staging: comedi: Remove pci224_board typedef Staging: comedi: Remove pci224_private typedef Staging: comedi: Remove pci230_board typedef Staging: comedi: Remove das16cs_board typedef Staging: comedi: Remove das16cs_private typedef Staging: comedi: Remove local_info_t typedef Staging: comedi: Remove cb_pcidas_board typedef Staging: comedi: Remove cb_pcidas_private typedef Staging: comedi: Remove cb_pcidda_board typedef Staging: comedi: Remove cb_pcidda_private typedef Staging: comedi: Remove pcidio_board typedef Staging: comedi: Remove pcidio_private typedef Staging: comedi: Remove cb_pcimdas_board typedef Staging: comedi: Remove timer_private typedef Staging: comedi: Remove board_struct typedef Staging: comedi: Remove typedef private in cb_pcimdda.c Staging: comedi: Remove contec_board typedef Staging: comedi: Remove contec_private typedef Staging: comedi: Remove contec_model typedef Staging: comedi: Remove daqboard2000_hw typedef Staging: comedi: Remove boardtype typedef in daqboard2000.c Staging: comedi: Remove daqboard2000_private typedef Staging: comedi: Remove local_info_t typedef in das08_cs.c Staging: comedi: Remove das16_board typedef Staging: comedi: Replace C99 comments in jr3_pci.h Staging: comedi: Remove u_val_t typedef Staging: comedi: Remove s_val_t typedef Staging: comedi: Remove raw_channel typedef Staging: comedi: Remove force_array_t typedef Staging: comedi: Remove six_axis_array_t typedef Staging: comedi: Remove vect_bits_t, warning_bits_t, and error_bits_t typedefs Staging: comedi: Remove thresh_struct typedef Staging: comedi: Remove le_struct_t typedef Staging: comedi: Remove jr3_t typedef Staging: comedi: Remove link_types typedef Staging: comedi: Remove intern_transform_t typedef Staging: comedi: Remove jr3_channel_t typedef Staging: comedi: Remove das16m1_board typedef Staging: comedi: Remove das800_board typedef Staging: comedi: Remove das1800_board typedef Staging: comedi: Remove das1800_private typedef Staging: comedi: Remove das6402_private typedef Staging: comedi: Remove dmm32at_board typedef Staging: comedi: Remove dmm32at_private typedef Staging: comedi: Remove boardtype_t typedef in dt282x.c Staging: comedi: Remove dt282x_private typedef Staging: comedi: Remove boardtype_t typedef in dt2801.c Staging: comedi: Remove boardtype typedef in pcl818.c Staging: comedi: Remove dt2801_private typedef Staging: comedi: Remove dt2814_private typedef Staging: comedi: Remove dt2815_private typedef Staging: comedi: Remove dt3k_boardtype typedef Staging: comedi: Remove fl512_private typedef Staging: comedi: Remove hpdi_board typedef Staging: comedi: Remove pci20xxx_private typedef Staging: comedi: Remove jr3_pci_dev_private typedef Staging: comedi: Remove cnt_board_struct typedef Staging: comedi: Remove skel_private typedef Staging: comedi: Remove mpc8260cpm_private typedef Staging: comedi: Remove ni6527_board typedef Staging: comedi: Remove ni_65xx_board typedef Staging: comedi: Remove NI_660xRegisterData typedef Staging: comedi: Remove ni_670x_private typedef Staging: comedi: Remove a2150_private typedef Staging: comedi: Remove atao_private typedef Staging: comedi: Remove atmio16_board_t typedef Staging: comedi: Remove dio700_private typedef Staging: comedi: Remove dio24_private typedef Staging: comedi: Remove ni_private typedef Staging: comedi: Remove nidio_board typedef Staging: comedi: Remove pcl818_private typedef Staging: comedi: Remove pcmda12_private typedef Staging: comedi: Remove s526_private typedef Staging: comedi: Remove serial2002_private typedef Staging: comedi: Remove dnp_private_data typedef Staging: comedi: Remove comment mentioning typedefs Staging: comedi: Remove dt3k_private typedef Staging: comedi: Remove hpdi_private typedef Staging: comedi: Remove poll_delay_t typedef Staging: comedi: Remove cnt_device_private typedef Staging: comedi: Remove pcl711_private typedef Staging: comedi: Remove pcl726_private typedef Staging: comedi: Remove pcl812_private typedef Staging: comedi: Remove dt2811_private typedef Staging: comedi: Remove pcmmio_board typedef Staging: comedi: Remove pcmuio_board typedef Staging: comedi: Remove rti800_private typedef Staging: comedi: Remove rti802_private typedef Staging: comedi: Remove config_t typedef Staging: comedi: Remove pci20xxx_subdev_private typedef Staging: comedi: Remove pcmmio_subdev_private typedef Staging: comedi: Remove pcmuio_subdev_private typedef Staging: comedi: Remove pcmda12_board typedef Staging: comedi: Remove S526_GPCT_APP_CLASS typedef Staging: comedi: Remove serial2002_board typedef Staging: comedi: Remove skel_board typedef Staging: comedi: Remove dnp_board typedef Staging: comedi: Remove unioxx5_subd_priv typedef Staging: comedi: Remove jr3_pci_subdev_private typedef Staging: comedi: Remove pcmmio_private typedef Staging: comedi: Remove pcmuio_private typedef Staging: comedi: Remove s526_gpct_config_t typedef Staging: comedi: Remove transform_t typedef Staging: comedi: Remove s526_board typedef Staging: comedi: Remove six_axis_t typedef Staging: comedi: Remove priv_pcm3724 typedef Staging: comedi: Remove pcl816_private typedef Staging: comedi: acl7225b: Remove boardtype typedef Staging: comedi: cb_pcimdas: Remove timer_private typedef Staging: comedi: das800: Remove das800_board typedef Staging: comedi: dt2811: Remove boardtype typedef Staging: comedi: pcl711: Remove boardtype typedef Staging: comedi: pcl724: Remove boardtype typedef Staging: comedi: pcl726: Remove boardtype typedef Staging: comedi: pcl730: Remove boardtype typedef Staging: comedi: pcl812: Remove boardtype typedef Staging: comedi: pcl816: Remove boardtype typedef Staging: comedi: pcm3724: Remove boardtype typedef Staging: comedi: rti800: Remove boardtype typedef Staging: comedi: skel.c: Remove skel_private typedef Staging: comedi: serial2002: Remove serial2002_private typedef Staging: comedi: quatech_daqp_cs: Remove local_info_t typedef Staging: comedi: Remove 2.4 irqreturn_t compatibility in comedi/interrupt.h Staging: comedi: Remove hw_fifo_info_t typedef Staging: comedi: Remove pcidas64_board typedef Staging: comedi: Remove pcidas64_private typedef Staging: comedi: comedi: remove C99 comments in skel.c Staging: comedi: Remove ni6527_private typedef Staging: comedi: Remove ni_65xx_private typedef Staging: comedi: Remove ni_65xx_subdevice_private typedef Staging: comedi: Remove NI_660x_Register typedef Staging: comedi: Remove ni_660x_board typedef Staging: comedi: Remove ni_660x_private typedef Staging: comedi: Remove ni_670x_board typedef Staging: comedi: Remove a2150_board typedef Staging: comedi: Remove atao_board typedef Staging: comedi: Remove atmio16d_private typedef Staging: comedi: Remove dio700_board typedef Staging: comedi: ni_daq_700.c: Remove local_info_t typedef Staging: comedi: Remove nidio96_private typedef Staging: comedi: Remove das08_board typedef Staging: comedi: Remove me4000_ao_info_t typedef Staging: comedi: Remove me4000_ai_info_t typedef Staging: comedi: Remove me4000_dio_info_t typedef Staging: comedi: Remove me4000_cnt_info_t typedef Staging: comedi: Remove me4000_board_t typedef Staging: comedi: Remove me4000_ao_context_t typedef Staging: comedi: Remove me4000_ai_context_t typedef Staging: comedi: Remove me4000_dio_context_t typedef Staging: comedi: Remove me4000_cnt_context_t typedef Staging: comedi: Remove me4000_info_t typedef Staging: comedi: Remove use of VOID typedef in addi-data Staging: comedi: Remove CHAR, *PCHAR, and *PCSTR typedefs in addi-data Bing Zhao (1): libertas: fix power save issue in libertas_sdio module Bjorn Helgaas (27): ACPI: pci_link: clean up whitespace ACPI: pci_link: remove unnecessary casts and initializations ACPI: pci_link: remove unnecessary null pointer checks ACPI: pci_link: simplify list of link devices ACPI: PCI: use generic pci_swizzle_interrupt_pin() ACPI: update Kconfig help texts (no functional changes) ACPI: move private declarations to internal.h PCI/x86: make early dump handle multi-function devices PCI/x86: format early dump like other PCI output PCI/x86: document pci=earlydump argument x86: use dev_printk in quirk message ACPI: skip DMI power state check when ACPI disabled ACPI: call acpi_scan_init() explicitly rather than as initcall ACPI: call acpi_ec_init() explicitly rather than as initcall ACPI: call acpi_power_init() explicitly rather than as initcall ACPI: call acpi_system_init() explicitly rather than as initcall ACPI: call acpi_debug_init() explicitly rather than as initcall ACPI: call init_acpi_device_notify() explicitly rather than as initcall ACPI: call acpi_sleep_proc_init() explicitly rather than as initcall ACPI: call acpi_wakeup_device_init() explicitly rather than as initcall ACPI: tidy up makefile ACPI: remove unused acpi_device_ops .lock and .scan methods ACPI: remove unused acpi_device_ops .shutdown method ACPI: remove unused acpi_bus_ops flags ACPI: support acpi_device_ops .notify methods ACPI: button: use .notify method instead of installing handler directly ACPI: processor: use .notify method instead of installing handler directly Blaine Lee (1): Staging: comedi: add pcm3730 driver Boaz Harrosh (32): [SCSI] major.h: char-major number for OSD device driver [SCSI] add OSD_TYPE [SCSI] libosd: OSDv1 Headers [SCSI] libosd: OSDv1 preliminary implementation [SCSI] osd_uld: OSD scsi ULD [SCSI] osd_uld: API for retrieving osd devices from Kernel [SCSI] libosd: attributes Support [SCSI] libosd: OSD Security processing stubs [SCSI] libosd: Add Flush and List-objects support [SCSI] libosd: Not implemented commands [SCSI] libosd: OSD version 2 Support [SCSI] libosd: OSDv2 auto detection [SCSI] libosd: SCSI/OSD Sense decoding support [SCSI] osd: Documentation for OSD library [SCSI] osd: Kconfig file for in-tree builds [SCSI] scsi: Add osd library to build system [SCSI] libosd: Fix NULL dereference BUG when target is not OSD conformant bsg: add support for tail queuing USB: fix USB_STORAGE_CYPRESS_ATACB block: WARN in __blk_put_request() for potential bio leak bsg: Remove bogus check against request_queue->max_sectors exofs: Kbuild, Headers and osd utils exofs: file and file_inode operations exofs: symlink_inode and fast_symlink_inode operations exofs: address_space_operations exofs: dir_inode and directory operations exofs: super_operations and file_system_type exofs: export_operations exofs: Documentation fs: Add exofs to Kernel build [SCSI] libosd: fix blk_put_request called from within request_end_io [SCSI] osd_uld: Remove creation of osd_scsi class symlink Bob Copeland (29): ath5k: support LEDs on Acer Aspire One netbook ath5k: fix off-by-one in gpio checks mac80211: document return codes from ops callbacks ath5k: fix bf->skb==NULL panic in ath5k_tasklet_rx mac80211: add suspend/resume callbacks ath5k: remove stop/start calls from within suspend/resume ath5k: remove unused led_off parameter ath5k: use short preamble when possible ath5k: honor the RTS/CTS bits mac80211: change workqueue back to non-freezeable mac80211: flush workqueue a second time in suspend() ath9k: remove write-only current_rd_inuse ath9k: save a few calls to ath9k_regd_get_eepromRD ath9k: convert isWwrSKU macro into C code ath9k: remove ath9k_regd_get_rd() ath9k: remove prototype for ath9k_regd_get_current_country ath9k: move common regulatory code out of if() branches ath5k: don't mask off interrupt bits ath5k: use spin_lock_irqsave for beacon lock ath5k: move beacon processing to a tasklet ath5k: compute rts/cts duration after computing full pktlen ath9k: fix 802.11g conformance test limit typo ath5k: extract LED code into a separate file ath5k: use a table for LED parameters ath5k: update LED table with reported devices ath5k: disable MIB interrupts ath5k: remove dummy PCI "retry timeout" fix ath5k: warn and correct rate for unknown hw rate indexes ath5k: properly drop packets from ops->tx Bob Moore (39): ACPICA: Add error check to debug object dump routine ACPICA: Allow OS override of all ACPI tables ACPICA: Remove extraneous parameter in table manager ACPICA: Add override for dynamic tables ACPICA: Update FADT flag definitions ACPICA: Update version to 20090123 ACPICA: Split out PM1 status registers from the FADT ACPICA: Update comments in module header ACPICA: Fix writes to optional PM1B registers ACPICA: Remove extra write for acpi_hw_clear_acpi_status ACPICA: For PM1B registers, do not shift value read or written ACPICA: Fix parameter validation for acpi_read/write ACPICA: Remove redundant ACPI_BITREG_SLEEP_TYPE_B ACPICA: Add function to handle PM1 control registers ACPICA: Remove ACPI_GET_OBJECT_TYPE macro ACPICA: Conditionally compile acpi_set_firmware_waking_vector64 ACPICA: Debug output: print result of _OSI invocations ACPICA: Debug output: decrease verbosity of DB_INFO debug level ACPICA: Formatting update - no functional changes ACPICA: Optimize ACPI register locking ACPICA: Rename ACPI bit register access functions ACPICA: Restructure bit register access functions ACPICA: Update table header print function ACPICA: Update version to 20090220 ACPICA: Add manifest constants for bit register values ACPICA: Formatting update - no functional changes ACPICA: FADT: Fix extraneous length mismatch warning ACPICA: Fix AcpiWalkNamespace race condition with table unload ACPICA: Change handling of PM1 Status register ignored bit ACPICA: Preserve all PM control reserved and ignored bits ACPICA: New: I/O port protection ACPICA: Remove obsolete acpi_os_validate_address interface ACPICA: Remove unused code, no functional change ACPICA: Condense some protected ports ACPICA: Fix PCI configuration space port address range ACPICA: FADT: Favor 32-bit register addresses for compatibility ACPICA: FADT: Favor 32-bit FACS and DSDT addresses ACPICA: Fix index value in package warning message ACPICA: Update version to 20090320 Borislav Petkov (5): usb_storage: make Kconfig note visible in the console ide: improve debugging scheme ide-cd: use ide_drive_t's rq in cdrom_queue_request_sense ide-atapi: start DMA after issuing a packet command ide-floppy: do not complete rq's prematurely Brandon Philips (1): uio: add the uio_aec driver Breno Leitao (6): s2io: Formatting log message e1000: Removing the unused macro PAGE_USE_COUNT() jsm: define init function as __devinit jsm: Fix the return variable and removing the unused retval. icom: remove unused variables tty: jsm cleanups Breno LeitĂ£o (1): ixgbe: Removing the unused PAGE_USE_COUNT() macro. Brent Baccala (1): Staging: comedi: add quatech_daqp_cs driver Brian Gerst (48): x86-64: Move irq stats from PDA to per-cpu and consolidate with 32-bit. x86-64: Move TLB state from PDA to per-cpu and consolidate with 32-bit. x86-64: Convert irqstacks to per-cpu x86-64: Convert exception stacks to per-cpu x86-64: Move cpu number from PDA to per-cpu and consolidate with 32-bit. x86-64: Move current task from PDA to per-cpu and consolidate with 32-bit. x86-64: Move kernelstack from PDA to per-cpu. x86-64: Move oldrsp from PDA to per-cpu. x86-64: Move irqcount from PDA to per-cpu. x86-64: Move nodenumber from PDA to per-cpu. x86-64: Move isidle from PDA to per-cpu. x86-64: Use absolute displacements for per-cpu accesses. x86: remove pda_init() percpu: refactor percpu.h x86: rework __per_cpu_load adjustments x86: move stack_canary into irq_stack x86: remove pda.h x86: clean up gdt_page definition x86: fix percpu_write with 64-bit constants x86: set %fs to __KERNEL_PERCPU unconditionally for x86_32 x86: merge mmu_context.h x86: merge irq_regs.h x86: remove idle_timestamp from 32bit irq_cpustat_t x86: remove include of apic.h from hardirq_64.h x86: sync hardirq_{32,64}.h x86: merge hardirq_{32,64}.h into hardirq.h x86: make irq_cpustat_t fields conditional generic, x86: fix __per_cpu_load relocation x86: merge setup_per_cpu_maps() into setup_per_cpu_areas() x86: move 64-bit NUMA code x86: move setup_cpu_local_masks() x86: always page-align per-cpu area start and size x86: move apic variables to apic.c x86: only compile setup_percpu.o on SMP x86: move this_cpu_offset x86: don't assume boot cpu is #0 x86: make Voyager use x86 per-cpu setup. x86: initialize per-cpu GDT segment in per-cpu setup x86: remove extra barriers from load_gs_base() x86: load new GDT after setting up boot cpu per-cpu area x86: pass in cpu number to switch_to_new_gdt() percpu: make PER_CPU_BASE_SECTION overridable by arches x86: use linker to offset symbols by __per_cpu_load x86: fix abuse of per_cpu_offset x86: use pt_regs pointer in do_device_not_available() x86: pass in pt_regs pointer for syscalls that need it x86: drop -fno-stack-protector annotations after pt_regs fixes x86: use regparm(3) for passed-in pt_regs pointer Brian Haley (1): ipv6: Fix incorrect disable_ipv6 behavior Brian King (7): powerpc/pseries: Fix partition migration hang under load [SCSI] ibmvfc: Better handle other FC initiators [SCSI] ibmvfc: Fix dropped interrupts [SCSI] ibmvfc: Fixup module parms attributes [SCSI] ibmvfc: Show host maxframe_size [SCSI] ibmvfc: Improve ADISC timeout handling [SCSI] ibmvfc: Driver version 1.0.5 Brian Maly (1): efifb: dmi set video type Brice Goglin (1): myri10ge: update firmware headers to 1.4.41 Bruce Allan (2): e100: add support for 82552 10/100 adapter e1000e: add support for 82574 device ID 0x10F6 Bruno Christo (1): V4L/DVB (10827): Add support for GeoVision GV-800(S) Bryan Donlan (2): ext4: return -EIO not -ESTALE on directory traversal through deleted inode ext3: return -EIO not -ESTALE on directory traversal through deleted inode Calin Culianu (3): Staging: comedi: add pcmda12 driver Staging: comedi: add pcmmio and pcmuio drivers Staging: comedi: add cb_pcimdda driver Carl Henrik Lunde (1): blktrace: NUL-terminate user space messages Carl Worth (1): drm/i915: Add a spinlock to protect the active_list Carlos Corbacho (2): acer-wmi: Blacklist Acer Aspire One acer-wmi: Update copyright notice & documentation Carsten Emde (1): tracing: fix command line to pid reverse map Carsten Otte (2): [S390] check addressing mode in s390_enable_sie [S390] tape message cleanup Catalin Marinas (17): [ARM] 5387/1: Add ptrace VFP support on ARM [ARM] 5388/1: Add hwcap bits for VFPv3 and VFPv3D16 [ARM] 5389/1: Make sure the pmd entries are visible by the secondary CPU [ARM] 5381/1: unwind: Reorganise the traps.c code [ARM] 5382/1: unwind: Reorganise the stacktrace support [ARM] 5383/2: unwind: Add core support for ARM stack unwinding [ARM] 5384/1: unwind: Add stack unwinding support for loadable modules [ARM] 5385/2: unwind: Add unwinding information to exception entry points [ARM] 5386/2: unwind: Add Makefile and Kconfig entries for ARM stack unwinding [ARM] 5394/1: Add static bus numbering support to i2c-versatile [ARM] 5395/1: RealView: Add support for the DS1338 RTC chip [ARM] 5396/1: RealView: Use PATA_PLATFORM to access the CompactFlash [ARM] 5397/1: RealView: Add support for the ISP1761 USB chip USB: Make the isp1760_register function prototype more generic USB: Add platform device support for the ISP1760 USB chip USB: isp1760: Add a delay before reading the SKIPMAP registers in isp1760-hcd.c [ARM] 5439/1: Do not clear bit 10 of DFSR during abort handling on ARMv6 Cesar Eduardo Barros (5): sc92031: more useful banner in kernel log sc92031: remove meaningless version string sc92031: inline SC92031_DESCRIPTION sc92031: use device id directly instead of made-up name sc92031: add a link to the datasheet Chatre, Reinette (2): iwl3945: add debugging for wrong command queue iwlwifi: add test to determine if interface in monitor mode Chauhan, Vijay (3): [SCSI] scsi_dh_rdac: Retry for Quiescence in Progress in rdac device handler [SCSI] scsi_dh_rdac: Retry mode select for NO_SENSE, ABORTED_COMMAND, UNIT_ATTENTION, NOT_READY(02/04/01) [SCSI] scsi_dh_rdac: Retry for NOT_READY check condition Cheng Renquan (4): do_pipe cleanup: drop its last user in arch/alpha/ MAINTAINERS: add the missing linux alpha port mailling list dm target: use module refcount directly dm target: remove struct tt_internal Chien Tung (3): RDMA/nes: Update copyright to new legal entity and year RDMA/nes: Report correct vendor_id and vendor_part_id RDMA/nes: Fix tmp_addr compilation warning Chris Dearman (1): MIPS: R2: Fix problem with code that incorrectly modifies ebase. Chris Leech (2): [SCSI] net: reclaim 8 upper bits of the netdev->features from GSO [SCSI] net: define feature flags for FCoE offloads Chris Mason (25): mutex: adaptive spinnning, performance tweaks Btrfs: stop spinning on mutex_trylock and let the adaptive code spin for us Btrfs: don't preallocate metadata blocks during btrfs_search_slot Btrfs: do extent allocation and reference count updates in the background Btrfs: reduce stack usage in some crucial tree balancing functions Btrfs: try to cleanup delayed refs while freeing extents Btrfs: process the delayed reference queue in clusters Btrfs: reduce stalls during transaction commit Btrfs: reduce stack in cow_file_range Btrfs: Check for a blocking lock before taking the spin Btrfs: Only let very young transactions grow during commit Btrfs: leave btree locks spinning more often Btrfs: readahead checksums during btrfs_finish_ordered_io Btrfs: limit balancing work while flushing delayed refs Btrfs: Make sure i_nlink doesn't hit zero too soon during log replay Btrfs: tree logging unlink/rename fixes Btrfs: optimize fsyncs on old files Btrfs: make sure btrfs_update_delayed_ref doesn't increase ref_mod Btrfs: add extra flushing for renames and truncates Btrfs: try to free metadata pages when we free btree blocks Btrfs: keep processing bios for a given bdev if our proc is batching Btrfs: unplug in the async bio submission threads Btrfs: break up btrfs_search_slot into smaller pieces Btrfs: Optimize locking in btrfs_next_leaf() Btrfs: rework allocation clustering Chris R. Baugher (1): Staging: comedi: add ni_at_atmio16d driver Chris Samuel (1): trivial: cgroups: documentation typo and spelling corrections Chris Wilson (3): drm/i915: Display fence register state in debugfs i915_gem_fence_regs node. drm/i915: Display fence register state in debugfs i915_gem_fence_regs node. drm/i915: Check for dev->primary->master before dereference. Chris Wright (1): PCI: add remove_id sysfs entry Chris Zankel (3): xtensa: only build platform or variant if they contain a Makefile xtensa: we don't need to include asm/io.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into merge Christian Borntraeger (7): KVM: s390: Fix printk on SIGP set arch KVM: s390: Fix problem state check for b2 intercepts KVM: s390: Fix SIGP set prefix ioctl [S390] fix dump_stack vs. %p and (null) [S390] lockdep: trace hardirq off in smp_send_stop [S390] Fix hypervisor detection for KVM [S390] Fix comments in lowcore structure Christian Ehrhardt (1): [S390] fix dfp elf hwcap/facility bit detection Christian Hohnstaedt (1): crypto: ixp4xx - Fix handling of chained sg buffers Christian Lamparter (33): p54: label queues with their corresponding names p54: enable proper frame injection p54usb: utilize usb_reset_device for 3887 p54: prevent upload of wrong firmwares p54: regulatory domain hints p54: enable rx/tx antenna diversity by eeprom bits p54: implement FIF_OTHER_BSS filter setting p54: power save management p54: return NETDEV_TX_OK in p54_tx and fix sparse warnings p54: refactor p54_alloc_skb p54: upgrade memrecord to p54_tx_info p54: prepare the eeprom parser routines for longbow p54: longbow frontend support p54spi: stlc45xx eeprom blob p54spi: p54spi driver p54usb: fix conflict with recent usb changes p54spi: remove arch specific dependencies p54usb: stop USB core interference in exit path p54: unify ieee80211 device registration p54pci: convert printk(KERN_* to dev_* p54: fix iwconfig txpower off p54: initial SoftLED support p54: enable power save support p54: completely ignore rx'd frames with bad FCS p54: fix SoftLED compile dependencies ar9170: hardware and eeprom header files ar9170: ar9170: mac80211 interaction code ar9170: mac/bbp and phy code ar9170: ar9170: USB frontend driver ar9170: update Makefile, Kconfig and MAINTAINERS ar9170: simplify & deBUG tx_status queueing and reporting p54: Kconfig maintenance ar9170: single module build Christian Pellegrin (1): Add support for the MAX3100 SPI UART. Christine Caulfield (1): dlm: replace idr with hash table for connections Christof Schmitt (11): [SCSI] scsi_transport_fc: Add missing parenthesis to Point-To-Point description [SCSI] zfcp: Remove some port flags [SCSI] zfcp: Remove UNIT_REGISTERED status flag [SCSI] zfcp: Simplify latency lock handling [SCSI] zfcp: Only increment req_id for successfully issued requests [SCSI] zfcp: Wait for free SBALs when possible [SCSI] zfcp: Improve reliability of SCSI eh handlers in zfcp [SCSI] zfcp: Send ELS ADISC from workqueue [SCSI] zfcp: Remove PCI flag [SCSI] zfcp: Block FC transport rports early on errors [SCSI] zfcp: Report fc_host_port_type as NPIV Christoph Hellwig (47): xfs: fix dentry aliasing issues in open_by_handle xfs: use mnt_want_write in compat_attrmulti ioctl xfs: add a separate lock class for the per-mount list of dquots xfs: lockdep annotations for xfs_dqlock2 xfs: add a lock class for group/project dquots xfs: fix bad_features2 fixups for the root filesystem xfs: sanity check attr fork size xfs: cleanup error handling in xfs_mountfs: xfs: make sure to free the real-time inodes in the mount error path xfs: tiny cleanup for xfs_link xfs: remove unused XFS_MOUNT_ILOCK/XFS_MOUNT_IUNLOCK xfs: factor out attr fork reset handling xfs: merge xfs_inode_flush into xfs_fs_write_inode xfs: cleanup xfs_find_handle xfs: remove the unused XFS_QMOPT_DQLOCK flag xfs: remove iclog calculation special cases xfs: remove superflous inobt macros xfs: remove uchar_t/ushort_t/uint_t/ulong_t types xfs: merge xfs_mkdir into xfs_create xfs: remove XFS_QM_LOCK/XFS_QM_UNLOCK/XFS_QM_HOLD/XFS_QM_RELE xfs: use mutex_is_locked in XFS_DQ_IS_LOCKED xfs: sanitize qh_lock wrappers xfs: get rid of indirections in the quotaops implementation xfs: fix error handling in xfs_log_mount xfs: reject swapext ioctl on swapfiles xfs: prevent kernel crash due to corrupted inode log format xfs: prevent lockdep false positive in xfs_iget_cache_miss xfs: only issues a cache flush on unmount if barriers are enabled xfs: cleanup log unmount handling xfs: remove another leftover of the old inode log item format xfs: cleanup xlog_recover_do_trans xfs: cleanup xlog_bread xfs: kill vn_atime_* helpers. xfs: kill VN_BAD affs: fix missing unlocks in affs_remove_link generic compat_sys_ustat cleanup d_add_ci cleanup may_open xfs: kill mutex_t typedef xfs: kill ino64 mount option xfs: remove m_litino xfs: remove m_attroffset xfs: cleanup uuid handling md: stop defining MAJOR_NR cleanup drivers/md/Makefile md: move headers out of include/linux/raid/ ubd: stop defintining MAJOR_NR Christoph Lameter (2): SLUB: Introduce and use SLUB_MAX_SIZE and SLUB_PAGE_SHIFT constants SLUB: Introduce and use SLUB_MAX_SIZE and SLUB_PAGE_SHIFT constants Christoph Paasch (2): netfilter: change generic l4 protocol number netfilter: remove IPvX specific parts from nf_conntrack_l4proto.h Christoph Plattner (2): ALSA: hda - Added HP HDX16/HDX18 notebook support for HDA codecs (82HD71) ALSA: hda - Rework on patch_sigmatel.c for HP HDX16/HDX18 Christophe Saout (1): xen: fix too early kmalloc call Chuck Ebbert (1): xfrm: spin_lock() should be spin_unlock() in xfrm_state.c Chuck Lever (24): SUNRPC: Avoid spurious wake-up during UDP connect processing SUNRPC: Clean up static inline functions in svc_xprt.h SUNRPC: Don't flag empty RPCB_GETADDR reply as bogus SUNRPC: Clean up static inline functions in svc_xprt.h NFSD: If port value written to /proc/fs/nfsd/portlist is invalid, return EINVAL SUNRPC: Clean up svc_find_xprt() calling sequence SUNRPC: Pass a family argument to svc_register() SUNRPC: svc_setup_socket() gets protocol family from socket SUNRPC: Change svc_create_xprt() to take a @family argument SUNRPC: Remove @family argument from svc_create() and svc_create_pooled() NFS: Revert creation of IPv6 listeners for lockd and NFSv4 callbacks SUNRPC: Set IPV6ONLY flag on PF_INET6 RPC listener sockets SUNRPC: Use IPv4 loopback for registering AF_INET6 kernel RPC services SUNRPC: Don't return EPROTONOSUPPORT in svc_register()'s helpers SUNRPC: Clean up address type casts in rpcb_v4_register() SUNRPC: rpcbind actually interprets r_owner string SUNRPC: Allow callers to pass rpcb_v4_register a NULL address SUNRPC: Simplify svc_unregister() SUNRPC: Simplify kernel RPC service registration SUNRPC: rpcb_register() should handle errors silently SUNRPC: Remove CONFIG_SUNRPC_REGISTER_V4 lockd: Start PF_INET6 listener only if IPv6 support is available NFS: Start PF_INET6 callback listener only if IPv6 support is available NFS: Simplify logic to compare socket addresses in client.c Claudio Scordino (1): tty: Use the generic RS485 ioctl on CRIS Clemens Ladisch (22): sound: usb-audio: use normal number of frames for no-data URBs sound: usb-audio: limit playback queue length sound: usb-audio: make URB sizes more equal sound: oxygen: make the owner module a parameter of the probe function sound: oxygen: allocate model_data dynamically sound: oxygen: use static driver name sound: oxygen: handle cards with broken EEPROM sound: oxygen: automatically restore overwritten EEPROM sound: oxygen: handle AK5385 ADC on Claro halo cards sound: virtuoso: increase minimum volume to -60 dB sound: usb-audio: remove MIN_PACKS_URB sound: virtuoso: add Xonar Essence STX support sound: oxygen: zero-initialize model data sound: usb-audio: fix rules check for 32-channel devices sound: usb-audio: fix queue length check for high speed devices sound: oxygen: enable headphone output on Claro cards udf: fix novrs mount option udf: use hardware sector size sound: usb-audio: show sample format width in proc file sound: usb-audio: remove check_hw_params_convention() sound: usb-audio: save data packet interval in audioformat structure sound: usb-audio: allow period sizes less than 1 ms Cliff Cai (3): Blackfin arch: add sport-spi related resource stuff to board file Blackfin arch: sport spi needs 6 gpio pins Blackfin arch: add RSI's definitions to bf514 and bf516 Cliff Wickman (2): x86: UV fix uv_flush_send_and_wait() x86: UV: remove uv_flush_tlb_others() WARN_ON Colin McCabe (2): libertas: Update libertas core with GSPI constants libertas: if_spi, driver for libertas GSPI devices Colin Watson (1): parisc: expose 32/64-bit capabilities in cpuinfo Coly Li (20): jfs: return f_fsid for statfs(2) udf: return f_fsid for statfs(2) fs/adfs: return f_fsid for statfs(2) fs/affs: return f_fsid for statfs(2) fs/befs: return f_fsid for statfs(2) fs/cramfs: return f_fsid for statfs(2) fs/efs: return f_fsid for statfs(2) fs/fat: return f_fsid for statfs(2) fs/hfs: return f_fsid for statfs(2) fs/hfsplus: return f_fsid for statfs(2) fs/hpfs: return f_fsid for statfs(2) fs/isofs: return f_fsid for statfs(2) fs/minix: return f_fsid for statfs(2) fs/omfs: return f_fsid for statfs(2) fs/qnx4: return f_fsid for statfs(2) fs/reiserfs: return f_fsid for statfs(2) fs/squashfs: return f_fsid for statfs(2) fs/sysv: return f_fsid for statfs(2) fs/ufs: return f_fsid for statfs(2) fs/romfs: return f_fsid for statfs(2) Constantin Baranov (2): niu: fix PHY template choice for 10G copper niu: improve ethtool support for gigabit copper cards Corentin Chary (1): UBI: add fsync capability Cornelia Huck (4): Driver core: Fix device_move() vs. dpm list ordering, v2 [S390] cio: Use unbind/bind instead of unregister/register. [S390] cio: Try harder to disable subchannel. [S390] cio: Use ccw_device_set_notoper(). Craig Shelley (2): USB: CP2101 Support AN205 baud rates USB: CP2101 Reduce Error Logging Cyrill Gorcunov (33): x86: headers cleanup - prctl.h x86: headers cleanup - sigcontext32.h x86: headers cleanup - setup.h x86: headers cleanup - boot.h net: pppoe - code cleanup and helpers net: pppoe - introduce net-namespace functionality net: pppol2tp - introduce net-namespace functionality net: ppp_generic - introduce net-namespace functionality v2 net: pppoe,pppol2tp - register channels with explicit net net: pppoe - get rid of DECLARE_MAC_BUF net: pppoe - stop using proc internals x86: ftrace - simplify wait_for_nmi x86: trampoline_64.S - use predefined constants with simplification x86: asm linkage - introduce GLOBAL macro x86: linkage - get rid of _X86 macros x86: copy.S - use GLOBAL,ENDPROC macros x86: pmjump - use GLOBAL,ENDPROC macros x86: compressed head_64 - use ENTRY,ENDPROC macros x86: compressed head_32 - use ENTRY,ENDPROC macros x86: head_64.S - remove useless balign x86: head_64.S - use IDT_ENTRIES instead of hardcoded number x86: invalid_vm86_irq -- use predefined macros x86: entry_64.S - add missing ENDPROC x86: head_64.S - use GLOBAL macro x86: efi_stub_32,64 - add missing ENDPROCs x86: linkage.h - guard assembler specifics by __ASSEMBLY__ x86: shrink __ALIGN and __ALIGN_STR definitions net: sysctl_net - use net_eq to compare nets net: netfilter conntrack - add per-net functionality for DCCP protocol x86: headers cleanup - setup.h mm: mminit_validate_memmodel_limits(): remove redundant test oom_kill: don't call for int_sqrt(0) introduce pr_cont() macro Cyrus Massoumi (1): ext3: remove the BKL in ext3/ioctl.c D.J. Capelis (1): USB: pedantic: spelling correction in comment for ch9.h Daisuke Nishimura (2): memcg: charge swapcache to proper memcg memcg: cleanup cache_charge Dan Carpenter (9): Add a missing unlock_kernel() in raw_open() ext4: fix typo which causes a memory leak on error path drm: drm_fops.c unlock missing on error path fuse: fix fuse_file_lseek returning with lock held Btrfs: remove dead code Btrfs: remove dead code dock: fix dereference after kfree() Staging: altpciechdma: Null deref in altpciechdma.c remove() ASoC: Fix null dereference in ak4535_remove() Dan Smith (1): [S390] Expose a constant for the number of words representing the CRs Dan Williams (25): libertas: fix CF firmware loading for some cards airo: clean up and clarify interrupt-time task handling airo: re-arrange WPA capability checks airo: simplify WEP index and capability checks airo: clean up WEP key operations airo: use __attribute__ ((packed)) not #pragma airo: clean up and clarify micinit() airo: remove useless #defines Revert "i.MX31: framebuffer driver" hostap: convert usage of net/ieee80211.h to linux/ieee80211.h make net/ieee80211.h private to ipw2x00 cfg80211: age scan results on resume ipw2x00: age scan results on resume libertas: use private SDIO workqueue to avoid scheduling latency dmaengine: fail device registration if channel registration fails dmaengine: initialize tx_list in dma_async_tx_descriptor_init dmaengine: kill some unused headers async_tx: provide __async_inline for HAS_DMA=n archs dmaengine: allow dma support for async_tx to be toggled dmatest: add xor test dmatest: add dma interrupts and callbacks md: add 'size' as a personality method md: centralize ->array_sectors modifications md: 'array_size' sysfs attribute md/raid6: move raid6 data processing to raid6_pq.ko Daniel Drake (1): Staging: add b3dfg driver Daniel Glockner (1): rtc: add m41t62 support to rtc-m41t80 driver Daniel Glöckner (2): V4L/DVB (11242): allow v4l2 drivers to provide a get_unmapped_area handler xtensa: make startup code discardable Daniel Mack (34): ALSA: snd-usb-caiaq: support for two more audio devices ASoC: Add cs4270 support for slave mode configurations ASoC: fix typo and removed unneeded switch case for cs4270 ASoC: Fix name of register bit in pxa-ssp ASoC: add two more bitfields for PXA SSP ASoC: bring cs4270 feature/limitations list in sync ASoC: Add a driver for AK4104 S/PDIF transmitter ASoC: don't touch pxa-ssp registers when stream is running ASoC: switch PXA SSP driver from network mode to PSP ALSA: snd-usb-caiaq: only warn once on streaming errors ALSA: snd-usb-caiaq: drop bogus iso packets ALSA: snd-usb-caiaq: bump version number [ARM] pxa: add missing pin function for CS2 on GPIO1 [ARM] pxa: add pxa320 missing pin function for CS2 on GPIO3 [ARM] pxa: rename colibri.c to colibri-pxa270.c [ARM] pxa: add basic support for Colibri PXA300 module [ARM] pxa: add MMC support for Colibri PXA300 [ARM] pxa: add USB support for Colibri PXA300 [ARM] pxa: rename and update Colibri PXA270 defconfig [ARM] pxa: add colibri PXA300 defconfig [ARM] pxa: Fix Colibri AX88796 configuration [ARM] pxa: Refactor Colibri board support code [ARM] pxa: Colibri PXA320 module basics [ARM] pxa: Add Colibri LCD functions [ARM] pxa: AC97 pin functions for Colibri PXA310/320 USB: allow malformed LANGID descriptors drivers/net/ax88796.c: take IRQ flags from platform_device ax88796: Add method to take MAC from platform data [ARM] pxa: fix Colibri PXA300 and PXA320 LCD backlight pins drivers/misc/isl29003.c: driver for the ISL29003 ambient light sensor lis3: reorder functions to make forward decl obsolete lis3: solve dependency between core and ACPI lis3: SPI transport layer w1: coding style cleanups in w1_io.c Daniel Silverstone (6): [ARM] 5372/1: ACS5K: Core board support for the ACS-5000 [ARM] 5376/1: S3C24XX: Fix sparse errors in platform uncompress.h [ARM] 5377/1: S3C2410-Framebuffer: Fix resume path in S3C2410 framebuffer driver. [ARM] 5428/1: Module relocation update for R_ARM_V4BX gpiolib: allow GPIOs to be named i2c-s3c2410: Simplify bus frequency calculation Daniel Stone (1): [ARM] OMAP2: Fix definition of SGX clock register bits Daniel Vecino Castel (1): Staging: comedi: add ni_daq_dio24 driver Daniel Vetter (1): drm/i915: fix up tiling/fence reg setup on i8xx class hw Daniel Walker (1): panic.c: fix whitespace additions Danny Kukawka (6): iwlwifi: fix led naming ath9k: fix led naming b43legacy: fix led naming rt2x00: fix led naming iwlwifi: another led naming fix 8250_pnp.c: add another Wacom tablet Darius Augulis (7): USB: imx_udc: Fix IMX UDC gadget bugs USB: imx_udc: Fix IMX UDC gadget code style USB: imx_udc: Fix IMX UDC gadget ep0 irq handling USB: imx_udc: Fix IMX UDC gadget general irq handling [MTD] [NOR] Fixup for Numonyx M29W128 chips i2c: iMX/MXC support i2c: imx: Add missing request_mem_region in probe() Darren Hart (7): futex: update futex commentary futex: additional (get|put)_futex_key() fixes futex: add double_unlock_hb() futex: use current->time_slack_ns for rt tasks too futex: unlock before returning -EFAULT futex: clean up fault logic futex: remove the pointer math from double_unlock_hb Dave Airlie (19): drm/radeon: align ring writes to 16 dwords boundaries. drm/radeon: split busmaster enable out to a separate function drm: add DRM_READ/WRITE64 wrappers around readq/writeq. drm/ati_pcigart: use memset_io to reset the memory drm/r600: fixup r600 gart table accessor like ati_pcigart.c drm/r600: fix rptr address along lines of previous fixes to radeon. radeon: call the correct idle function, logic got inverted. drm/radeon: fix r600 pci mapping calls. drm: fix warnings about new mappings in info code. drm/radeon: fix r600 writeback setup. drm/radeon: fix r600 writeback across suspend/resume drm/radeon: don't call irq changes on r600 suspend/resume drm/radeon: r600 ptes are 64-bit, cleanup cleanup function. PCI: expose boot VGA device via sysfs. drm: merge Linux master into HEAD drm/i915: check the return value from the copy from user drm: fix missing inline function on 32-bit powerpc. drm: fix typo in edid vendor parsing. Merge branch 'drm-intel-next' of ../anholt-2.6 into drm-linus Dave Chinner (3): Long btree pointers are still 64 bit on disk xfs: Check buffer lengths in log recovery xfs: factor out code to find the longest free extent in the AG Dave Jones (25): [CPUFREQ] Stupidly trivial CodingStyle fix [CPUFREQ] checkpatch cleanups for cpufreq-nforce2 [CPUFREQ] nforce2: Use driver prefix, not cpufreq prefix. [CPUFREQ] checkpatch cleanups for elanfreq [CPUFREQ] checkpatch cleanups for e_powersaver [CPUFREQ] checkpatch cleanups for gx-suspmod [CPUFREQ] checkpatch cleanups for longhaul [CPUFREQ] checkpatch cleanups for longrun [CPUFREQ] checkpatch cleanups for powernow-k6 [CPUFREQ] checkpatch cleanups for sc520 [CPUFREQ] checkpatch cleanups for cpufreq core [CPUFREQ] checkpatch cleanups for conservative governor [CPUFREQ] checkpatch cleanups for cpufreq_stats [CPUFREQ] checkpatch cleanups for userspace governor [CPUFREQ] checkpatch cleanups for freq_table [CPUFREQ] checkpatch cleanups for speedstep related drivers. [CPUFREQ] checkpatch cleanups for powernow-k7 [CPUFREQ] checkpatch cleanups for ondemand governor. [CPUFREQ] checkpatch cleanups for powernow-k8 [CPUFREQ] checkpatch cleanups for acpi-cpufreq [CPUFREQ] Use swap() in longhaul.c [CPUFREQ] powernow-k8: Use a common exit path. [CPUFREQ] Prevent p4-clockmod from auto-binding to the ondemand governor. a2065: skb_padto cleanups cpqarray: enable bus mastering Dave Kleikamp (4): jfs: clean up a dangling comment jfs: remove xtLookupList() jfs: Fix error handling in metapage_writepage() Merge branch 'master' of /home/shaggy/git/linus-clean/ Dave Young (4): Bluetooth: Remove CONFIG_DEBUG_LOCK_ALLOC ifdefs Bluetooth: Move hci_conn_del_sysfs() back to avoid device destruct too early usb-serial: fix usb_serial_register bug when boot with nousb param driver-core: do not register a driver with bus_type not registered David A. Schleef (1): Staging: comedi: add poc driver David Altobelli (1): hpilo: reduce frequency of IO operations David Brownell (29): ASoC: buildfix for OSK [MTD] [NAND] fix "raw" reads with ECC syndrome layouts [MTD] [NAND] davinci_nand driver [MTD] [NAND] fix broken debug messages [MTD] we don't need no misc devices [MTD] partitioning utility predicates ARM: OMAP3: mmc-twl4030 voltage cleanup ARM: OMAP3: mmc-twl4030 init passes device nodes back, v2 ARM: OMAP3: mmc-twl4030 fix for vmmc = 0 USB: gadget: fix rndis regression USB: ftdi_sio: remove pointless syslog spew USB: musb: partial DaVinci dm355 support USB: gadget: composite device-level suspend/resume hooks USB: gadget: gadget zero uses new suspend/resume hooks regulator: minor cleanup of virtual consumer regulator: add get_status() regulator: enumerate voltages (v2) regulator: get_status() grows kerneldoc regulator: twl4030 regulators regulator: twl4030 voltage enumeration (v2) MMC: regulator utilities twl4030-regulator: list more VAUX4 voltages regulator: refcount fixes twl4030-regulator: expose VPLL2 memory_accessor: implement the new memory_accessor interfaces for SPI EEPROMs gpio: gpio_{request,free}() now required (feature removal) [MTD] driver model updates [MTD] support driver model updates leds: just ignore invalid GPIOs in leds-gpio David Daney (2): MIPS: __raw_spin_lock() may spin forever on ticket wrap. libata: Remove some redundant casts from pata_octeon_cf.c David Dillow (1): typhoon: repair firmware loading David Howells (50): NOMMU: Present backing device capabilities for MTD chardevs NOMMU: Add support for direct mapping through mtdconcat if possible NOMMU: Make it possible for RomFS to use MTD devices directly NOMMU: Fix the RomFS Kconfig to ensure at least one backing store is selected Annotate struct fs_struct's usage count restriction nommu: there is no mlock() for NOMMU, so don't provide the bits nommu: make CONFIG_UNEVICTABLE_LRU available when CONFIG_MMU=n nommu: fix a number of issues with the per-MM VMA patch Create a dynamically sized pool of threads for doing very slow work items Make slow-work thread pool actually dynamic Make the slow work pool configurable Document the slow work thread pool FS-Cache: Release page->private after failed readahead FS-Cache: Recruit a page flags for cache management FS-Cache: Add the FS-Cache netfs API and documentation FS-Cache: Add the FS-Cache cache backend API and documentation FS-Cache: Add main configuration option, module entry points and debugging FS-Cache: Add use of /proc and presentation of statistics FS-Cache: Root index definition FS-Cache: Add cache tag handling FS-Cache: Add cache management FS-Cache: Provide a slab for cookie allocation FS-Cache: Add netfs registration FS-Cache: Bit waiting helpers FS-Cache: Object management state machine FS-Cache: Implement the cookie management part of the netfs API FS-Cache: Add and document asynchronous operation handling FS-Cache: Implement data I/O part of netfs API CacheFiles: Permit the page lock state to be monitored CacheFiles: Export things for CacheFiles CacheFiles: A cache that backs onto a mounted filesystem FS-Cache: Make kAFS use FS-Cache NFS: Add comment banners to some NFS functions NFS: Add FS-Cache option bit and debug bit NFS: Permit local filesystem caching to be enabled for NFS NFS: Register NFS for caching and retrieve the top-level index NFS: Define and create server-level objects NFS: Define and create superblock-level objects NFS: Define and create inode-level cache objects NFS: Use local disk inode cache NFS: Invalidate FsCache page flags when cache removed NFS: Add some new I/O counters for FS-Cache doing things for NFS NFS: FS-Cache page management NFS: Add read context retention for FS-Cache to call back with NFS: nfs_readpage_async() needs to be accessible as a fallback for local caching NFS: Read pages from FS-Cache into an NFS inode NFS: Store pages from an NFS inode into a local cache NFS: Display local caching state NFS: Add mount options to enable local caching on NFS Make CONFIG_SLOW_WORK an automatic rather than manual config option David Kilroy (20): wireless: Add channel/frequency conversions to ieee80211.h orinoco: Remove unused variable rx_data orinoco: address leading and trailing whitespace orinoco: spaces in parenthesised expressions orinoco: remove unnecessary braces orinoco: keep line length below 80 characters orinoco: Fix interesting checkpatch errors orinoco: Rename orinoco.c orinoco: use orinoco_private instead of net_device in scan helper orinoco: Move scan helpers to a separate file orinoco: Move MIC helpers into new file orinoco: Move firmware handling into a separate file orinoco: Use accessor functions for bitrate tables orinoco: Add hardware function to set multicast mode orinoco: Move hardware functions into separate file orinoco: Move WEXT handlers into a separate file orinoco: hermes_dld does not need to be a module orinoco: hermes doesn't need to be a separate module orinoco: validate firmware header orinoco: prevent accessing memory outside the firmware image David Milburn (2): [libata] ahci: correct enclosure LED state save libata: ahci enclosure management bios workaround David Miller (13): sparc64: Fix build by including linux/irq.h into time_64.c sparc64: Fix build by using kstat_irqs_cpu() drm: ati_pcigart: Do not access I/O MEM space using pointer derefs. drm: ati_pcigart: Need to use PCI_DMA_BIDIRECTIONAL. drm: radeon: Fix ring_rptr accesses. drm: radeon: Fix RADEON_*_EMITED defines. drm: radeon: Fix calculation of RB_RPTR_ADDR in non-AGP case. drm: radeon: Use surface for PCI GART table. drm: ati_pcigart: Fix limit check in drm_ati_pcigart_init(). drm: Preserve SHMLBA bits in hash key for _DRM_SHM mappings. drm: radeon: Fix unaligned access in r300_scratch(). drm: Only use DRM_IOCTL_UPDATE_DRAW compat wrapper for compat X86. sparc64: Fix build of timer_interrupt(). David Moore (1): firewire: Include iso timestamp in headers when header_size > 4 David O'Shea (1): PCI: Compaq Evo D510 SMBus quirk using USB instead of VGA David P. Quigley (3): SELinux: Condense super block security structure flags and cleanup necessary code. SELinux: Add new security mount option to indicate security label support. SELinux: Unify context mount and genfs behavior David Rientjes (7): slub: move min_partial to struct kmem_cache slub: add min_partial sysfs tunable slub: rename calculate_min_partial() to set_min_partial() lockdep: remove duplicate CONFIG_DEBUG_LOCKDEP definitions vmscan: print shrink_slab symbol name on negative shrinker objects cpusets: replace zone allowed functions with node allowed cpusets: prevent PF_THREAD_BOUND tasks from attaching to non-root cpusets David S. Miller (72): com20020: Fix allyesconfig build failure. com0020: Add missing symbol export for com20020_netdev_ops. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 net: Allow RX queue selection to seed TX queue hashing. net: Add skb_record_rx_queue() calls to multiqueue capable drivers. net: If SKB has attached socket, use socket's hash for TX queue selection. net: Get rid of by-hand TX queue hashing. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 net: Increase default NET_SKB_PAD to 32. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 net: Kill skbuff macros from the stone ages. netdev: Use __netdev_alloc_skb() instead of __dev_alloc_skb(). irda: Use __netdev_alloc_skb() instead of __dev_alloc_skb(). net: Move skbuff symbol exports after each symbol's definition. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ Revert "etherh: Get working again." Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-next-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 typhoon: Need non-vmalloc memory to DMA firmware to the card. ixgbe: Fix some compiler warnings. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 rds: Fix build on powerpc. typhoon: Add missing firmware copy. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 sunvnet: Convert to net_device_ops. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.infradead.org/~dwmw2/solos-2.6 spider_net: Fix build. myri_sbus: Convert to net_device_ops. sunbmac: Convert to net_device_ops. sunlance: Convert to net_device_ops. sunqe: Convert to net_device_ops. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 myri_sbus/sunbmac/sunlance/sunqe: Add missing net_device_ops entries. spider_net: Add missing .ndo_validate_addr ucc_geth: Fix merge error. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6 rndis_wlan: Fix build with netdev_ops compat disabled. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 sparc64: Flush TLB before releasing pages. Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 sparc64: Fix MM refcount check in smp_flush_tlb_pending(). gianfar: Fix kfree(skb) Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ Revert "netrom: zero length frame filtering in NetRom" Revert "ax25: zero length frame filtering in AX25" Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 sparc64: We need to use compat_sys_ustat() as well. gianfar: Fix use-after-of_node_put() in gfar_of_init(). ucc_geth: Fix use-after-of_node_put() in ucc_geth_probe(). niu: Add GRO support. tg3: Add GRO support. Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ sparc64: Fix reset hangs on Niagara systems. Merge branch 'master' of ssh://master.kernel.org/home/ftp/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask-for-sparc Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jaswinder/net-next-2.6 David Schleef (28): Staging: comedi: add 8253.h header Staging: comedi: add 8255 driver Staging: comedi: add rti800 driver Staging: comedi: add plx9052 header file Staging: comedi: add nt_atmio driver Staging: comedi: add nt_mio_cs driver Staging: comedi: add nt_pcimio driver Staging: comedi: add das08 drivers Staging: comedi: add comedi_rt_timer virtual driver Staging: comedi: add skeleton driver Staging: comedi: add mpc8260 driver Staging: comedi: add ni_mio_common code Staging: comedi: add pcmad driver Staging: comedi: add pcl711 driver Staging: comedi: add cb_das16_cs driver Staging: comedi: add pcl725 driver Staging: comedi: add pcl726 driver Staging: comedi: add ni_6527 driver Staging: comedi: add ni_at_ao driver Staging: comedi: add ni_pcidio driver Staging: comedi: add das16 driver Staging: comedi: add dt2601 driver Staging: comedi: add dt2811 driver Staging: comedi: add dt2814 driver Staging: comedi: add dt2815 driver Staging: comedi: add dt2817 driver Staging: comedi: add dt282x driver Staging: comedi: add dt3000 driver David Shaw (1): Short write in nfsd becomes a full write to the client David Teigland (3): dlm: clear defunct cancel state dlm: ignore cancel on granted lock dlm: fix length calculation in compat code David Täht (6): Staging: frontier: Make checkpatch.pl considerably happier with tranzport driver. Staging: frontier: Make checkpatch.pl much happier with alphatrack driver Staging: frontier: removed now unused frontier_compat.h file Staging: frontier: Updated documentation Staging: frontier: Make checkpatch.pl happy with alphatrack.h Staging: frontier: Remove unused components of the alphatrack/tranzport sysfs interface. David VomLehn (1): cramfs: propagate uncompression errors David Vrabel (1): USB: allow libusb to talk to unauthenticated WUSB devices David Wong (1): V4L/DVB (11398): Support for Legend Silicon LGS8913/LGS8GL5/LGS8GXX China DMB-TH digital demodulator David Woodhouse (36): solos: Fix length header in FPGA transfers solos: Clean up firmware loading code solos: Kill global 'opens' count. solos: Handle attribute show/store in kernel more sanely solos: Add initial list of parameters solos: Handle new line status change packets, hook up to ATM layer info solos: Kill existing connections on link down event solos: Reject non-AAL5 connections.... for now solos: Add SNR and Attn to status packet, fix oops on load solos: Fix under-allocation of skb size for get/set parameters solos: Remove parameter group from sysfs on ATM dev deregister solos: First attempt at DMA support solos: Tidy up DMA handling a little. Still untested solos: Tidy up tx_mask handling for ports which need TX solos: Remove unused loopback debug stuff solos: Remove IRQF_DISABLED, don't frob IRQ enable on the FPGA in solos_irq() solos: Remove superfluous wait_queue_head_t from struct solos_param solos: Fix various bugs in status packet handling solos: Clean up handling of card->tx_mask a little solos: Remove debugging, commented-out test code solos: Add 'reset' module parameter to reset the DSL chips on load solos: Tidy up status interrupt handling, cope with 'ERROR' status solos: Don't clear config registers at startup solos: Set RX empty flag at startup only for !dma mode solos: Swap upstream/downstream rates in status packet, clean up some more dma-debug: add function to dump dma mappings dma-debug: print stacktrace of mapping path on unmap error solos: Reset device on unload, free pending skbs solos: Disable DMA until we have an FPGA update with it actually implemented. intel-iommu: Enable DMAR on 32-bit kernel. intel-iommu: Add for_each_iommu() and for_each_active_iommu() macros intel-iommu: Fix device-to-iommu mapping for PCI-PCI bridges. intel-iommu: Handle PCI domains appropriately. [MTD] [NAND] Add parent info for CAFÉ controller [MTD] [NOR] Add device parent info to physmap_of intel-iommu: Fix oops in device_to_iommu() when devices not found. Davide Libenzi (10): epoll: fix epoll's own poll epoll: fix epoll's own poll (update) epoll: remove debugging code eventfd: improve support for semaphore-like behavior epoll keyed wakeups: add __wake_up_locked_key() and __wake_up_sync_key() epoll keyed wakeups: introduce new *_poll() wakeup macros epoll keyed wakeups: make sockets use keyed wakeups epoll keyed wakeups: teach epoll about hints coming with the wakeup key epoll keyed wakeups: make eventfd use keyed wakeups epoll keyed wakeups: make tty use keyed wakeups Davide Rizzo (1): hwmon: LM95241 driver Dean Anderson (1): V4L/DVB (11392): patch: s2255drv driver removal problem fixed Dean Nelson (1): SGI IA64 UV: fix ia64 build error in the linux-next tree Deepika Makhija (1): ALSA: oss - volume control for CSWITCH and CROUTE Denys Fedoryshchenko (1): ipv4: arp announce, arp_proxy and windows ip conflict verification Devin Heitmueller (38): V4L/DVB (10320): dib0700: fix i2c error message to make data type clear V4L/DVB (10321): dib0700: Report dib0700_i2c_enumeration failures V4L/DVB (11059): xc5000: fix bug for hybrid xc5000 devices with IF other than 5380 V4L/DVB (11060): au8522: rename the au8522.c source file V4L/DVB (11061): au8522: move shared state and common functions into a separate header files V4L/DVB (11062): au8522: fix register read/write high bits V4L/DVB (11063): au8522: power down the digital demod when not in use V4L/DVB (11064): au8522: make use of hybrid framework so analog/digital demod can share state V4L/DVB (11065): au8522: add support for analog side of demodulator V4L/DVB (11066): au0828: add support for analog functionality in bridge V4L/DVB (11067): au0828: workaround a bug in the au0828 i2c handling V4L/DVB (11068): au0828: add analog profile for the HVR-850 V4L/DVB (11069): au8522: add mutex protecting use of hybrid state V4L/DVB (11070): au0828: Rework the way the analog video binding occurs V4L/DVB (11071): tveeprom: add the xc5000 tuner to the tveeprom definition V4L/DVB (11072): au0828: advertise only NTSC-M (as opposed to all NTSC standards) V4L/DVB (11073): au0828: disable VBI code since it doesn't yet work V4L/DVB (11074): au0828: fix i2c enumeration bug V4L/DVB (11075): au0828: make register debug lines easier to read V4L/DVB (11076): au0828: make g_chip_ident call work properly V4L/DVB (11077): au0828: properly handle missing analog USB endpoint V4L/DVB (11078): au0828: properly handle non-existent analog inputs V4L/DVB (11079): au0828: fix panic on disconnect if analog initialization failed V4L/DVB (11080): au0828: Convert to use v4l2_device/subdev framework V4L/DVB (11081): au0828: make sure v4l2_device name is unique V4L/DVB (11082): au0828: remove memset calls in v4l2 routines. V4L/DVB (11083): au0828: remove some unneeded braces V4L/DVB (11084): au0828: add entry for undefined input type V4L/DVB (11085): au0828/au8522: Codingstyle fixes V4L/DVB (11086): au0828: rename macro for currently non-function VBI support V4L/DVB (11088): au0828: finish videodev/subdev conversion V4L/DVB (11089): au8522: finish conversion to v4l2_device/subdev V4L/DVB (11139): em28xx: add remote control definition for HVR-900 (both versions) V4L/DVB (11140): usbvision: fix oops on ARM platform when allocating transfer buffers V4L/DVB (11141): em28xx: fix oops on ARM platform when allocating transfer buffers V4L/DVB (11142): au0828: fix oops on ARM platform when allocating transfer buffers V4L/DVB (11342): au0828: better document i2c registers V4L/DVB (11343): au0828: make i2c clock speed per-board configurable Dhananjay Phadke (22): netxen: remove superfluous doorbell map netxen: fix sparse warnings netxen: ratelimit error prints netxen: firmware download support netxen: advertise wake-on-lan support netxen: cleanup unused code netxen: refactor pci probe netxen: update copyright netxen: support larger dma addressing netxen: firmware download improvements netxen: cleanup rx handling netxen: small xmit optimizations netxen: refactor netdev open close netxen: cleanup superfluous multi-context code netxen: annotate board_config and board_type netxen: fix endianness in serial number netxen: add suspend resume support netxen: sanitize variable names netxen: remove old lro code netxen: add receive side scaling (rss) support netxen: update version to 4.0.30 netxen: fix firmware download warnings Dimitri Sivanich (5): x86, UV: set full apicid in uv_hub_send_ipi x86: UV, SGI RTC: add generic system vector x86: UV, SGI RTC: loop through installed UV blades x86: UV, SGI RTC: add UV RTC clocksource/clockevents x86: UV, SGI RTC: fix uv_time.c for UP Divy Le Ray (18): cxgb3: ease msi-x settings conditions cxgb3: Notify fatal errors iw_cxgb3: handle chip reset notifications cxgb3: ring rx door bell less frequently cxgb3: release page ref on mapping error cxgb3: fix skb truesize in jumbo mode cxgb3: prefetch buffer access in GRO mode cxgb3: separate TX and RX reclaim handlers cxgb3: disable high freq non-data interrupts cxgb3: Update Rev3 mac workaround cxgb3: detect mac link faults. cxgb3: update FW cxgb3: update driver version cxgb3: start qset timers when setup succeeded cxgb3: sge setup fixes cxgb3: use resource_size_t for mmio declarations cxgb3: differentiate portx and Tx channels cxgb3: map entire Rx page, feed map+offset to Rx ring. Dmitri Vorobiev (9): x86: Fix a couple of sparse warnings in arch/x86/kernel/apic/io_apic.c tracing, Text Edit Lock: Fix one sparse warning in kernel/extable.c tracing: fix four sparse warnings net: Add missing include into include/linux/netdevice.h MIPS: Malta: make a needlessly global integer variable static MIPS: Fix global namespace pollution in arch/mips/kernel/smp-up.c MIPS: Make a needlessly global symbol static in arch/mips/kernel/smp.c Remove two unneeded exports and make two symbols static in fs/mpage.c kexec: vmcoreinfo_data[] can become static Dmitry Artamonow (8): [ARM] 5407/1: SA1100: drop broken for ages iPAQ h3800 support [ARM] 5408/1: SA1100: update defconfigs after h3800 removal [ARM] 5423/1: SA1100: remove unused H3600_SLEEVE Kconfig option [ARM] 5424/1: h3600: clean up mtd partitions table [ARM] 5425/1: h3600: first stage of ipaq_model_ops cleanup [ARM] 5426/1: h3600: remove clr_h3600_egpio/set_h3600_egpio helpers [ARM] 5427/1: h3600: ipaq_model_ops final cleanup ALSA: drop outdated and broken sa11xx-uda1341 driver Dmitry Baryshkov (3): [ARM] 5429/1: collie: start scoop converton to new api [ARM] 5430/1: collie_pm: use new GPIO API to control charger [ARM] 5431/1: scoop: completely drop old-style SCOOP GPIO accessors Dmitry Eremin-Solenikov (4): [ARM] pxa: add initial support for Cogent CSB726 board [ARM] pxa: add support for CSB701 baseboard [ARM] pxa: make second argument of clk_add_alias a name instead of the device [MTD] [MAPS] Drop now unused sharpsl-flash map Don Skidmore (7): ixgbe: fix slow load times on 82598 nics ixgbe: add support KX/KX4 device ixgbe: Add 82598 support for BX mezzanine devices ixgbe: fix for 82598 Si errata causing buffer overflow ixgbe: Fix ethtool output with advertised mode. ixgbe: feature - driver to default with FC on. ixgbe: fix ethtool -A|a behavior Don Wood (3): RDMA/nes: Account for freed PBL after HW operation RDMA/nes: Inform hardware that asynchronous event has been handled RDMA/nes: Improve use of PBLs Doug Thompson (1): edac: remove EDAC's experimental status Douglas Gilbert (1): [SCSI] bsg: add linux/types.h include to bsg.h Douglas Kosovic (1): V4L/DVB (10299): bttv: Add support for IVCE-8784 support for V4L2 bttv driver Douglas Schilling Landgraf (14): V4L/DVB (10323): em28xx: Add entry for GADMEI TVR200 V4L/DVB (10326): em28xx: Cleanup: fix bad whitespacing V4L/DVB (10327): em28xx: Add check before call em28xx_isoc_audio_deinit() V4L/DVB (10517): em28xx: remove bad check (changeset a31c595188af) V4L/DVB (10520): em28xx-audio: Add spinlock for trigger V4L/DVB (10521): em28xx-audio: Add lock for users V4L/DVB (10523): em28xx-audio: Add macros EM28XX_START_AUDIO / EM28XX_STOP_AUDIO V4L/DVB (10524): em28xx: Add DVC 101 model to Pinnacle Dazzle description V4L/DVB (10556): em28xx-cards: Add Pinnacle Dazzle Video Creator Plus DVC107 description V4L/DVB (10739): em28xx-cards: remove incorrect entry V4L/DVB (10740): em28xx-cards: Add SIIG AVTuner-PVR board V4L/DVB (10741): em28xx: Add Kaiser Baas Video to DVD maker support V4L/DVB (11222): gspca - zc3xx: The webcam DLink DSB - C320 has the sensor pas106. V4L/DVB (11331): em28xx: convert to v4l2_subdev Dragoslav Zaric (2): Staging: otus: ioctl.c: Fix Coding Style Staging: otus: 80211core/amsdu.c: Fix Coding Style Drew Csillag (1): Staging: comedi: add pcm3724 driver Duane Griffin (7): ext4: don't inherit inappropriate inode flags from parent ext4: tighten restrictions on inode flags ufs: validate maximum fast symlink size from superblock ufs: don't truncate longer ufs2 fast symlinks ufs: ensure fast symlinks are NUL-terminated ufs: copy symlink data into the correct union member Staging: b3dfg: fixups and improvements Ed Lin (5): [SCSI] stex: small code fixes and changes [SCSI] stex: add MSI support [SCSI] stex: use config struct for parameters of different controllers [SCSI] stex: add new 6G controller support [SCSI] stex: update version to 4.6.0000.3 Ed Lin - PTU (5): [SCSI] stex: Fix for potential invalid response [SCSI] stex: Add new device id [SCSI] stex: Fix for controller type st_yosemite [SCSI] stex: Small fixes [SCSI] stex: Version update Ed Swierk (3): x86/PCI: Detect mmconfig on nVidia MCP55 rtc-ds1307: true SMBus compatibility forcedeth: Fix resume from hibernation regression. Eduard - Gabriel Munteanu (18): SLUB: Replace __builtin_return_address(0) with _RET_IP_. kmemtrace: Core implementation. kmemtrace: Additional documentation. kmemtrace: SLAB hooks. kmemtrace: SLOB hooks. kmemtrace: SLUB hooks. kmemtrace: Fix typos in documentation. kmemtrace: Better alternative to "kmemtrace: fix printk format warnings". kmemtrace: SLUB hooks for caller-tracking functions. kmemtrace: Remove the relay version of kmemtrace tracing: splice support for tracing_pipe tracing: Move pipe waiting code out of tracing_read_pipe(). tracing: provide trace_seq_reserve() tracing: add missing 'extern' keywords to trace_output.h kmemtrace, rcu: don't include unnecessary headers, allow kmemtrace w/ tracepoints kmemtrace: use tracepoints kmemtrace: kmemtrace_alloc() must fill type_id kmemtrace: restore original tracing data binary format, improve ABI Edward Shishkin (1): vfs: add/use account_page_dirtied() Eilon Greenstein (60): bnx2x: New FW bnx2x: Multi-queue bnx2x: MSI support bnx2x: System-page alignment bnx2x: Disabling interrupts after iSCSI-boot bnx2x: Removing microcode assertion check bnx2x: Per queue statistics bnx2x: Moving skb_record_rx_queue bnx2x: BW shaper enhancements bnx2x: Flow control enhancement bnx2x: Removing the board type bnx2x: Removing redundant device parameters bnx2x: GPIO accessories bnx2x: Supporting BCM8726 PHY bnx2x: PHY lock list bnx2x: Supporting BCM8481 PHY bnx2x: Saving PHY FW version bnx2x: EMAC reset bnx2x: Using the HW 5th lane bnx2x: Removing CL73 code bnx2x: GMII not SGMII bnx2x: Pre emphasis configuration bnx2x: Using registers name bnx2x: Manual setting for MRRS bnx2x: Returning EBUSY in debug mode as well bnx2x: Increasing FW timeout bnx2x: smp_mb and not just smp_rmb bnx2x: Using nvram default WoL config bnx2x: Memory clean up on failure bnx2x: Optimize chip MPS configuration bnx2x: Loopback in diag mode bnx2x: Better struct naming bnx2x: Removing redundant macros bnx2x: Sparse endianity annotation bnx2x: Removing unused struct bnx2x: Driver dump bnx2x: Moving includes bnx2x: Re-arrange module parameters bnx2x: Comments and prints bnx2x: Clean-up bnx2x: Version bnx2x: Remove redundant smb_mb on unload bnx2x: Misleading name bnx2x: Reduce the likelihood of smb_mb bnx2x: Add rmb to read status block indices on load bnx2x: Unlimited Tx interrupt work bnx2x: napi_poll budget check bnx2x: Missing module parameter description bnx2x: Using DMA engine bnx2x: Calling tx disable unconditionally bnx2x: Supporting new BCM8726 FW bnx2x: Enable BCM8726 module transmitter bnx2x: BCM8705 has no microcode bnx2x: Display BCM8481 FW version bnx2x: Loopback support at external PHY bnx2x: Whitespace bnx2x: Debug prints bnx2x: Register dump bnx2x: Version update bnx2x: Adding licensing to bnx2x_init_values.h Elias Oltmanns (1): ide: Fix code dealing with sleeping devices in do_ide_request() Emmanuel Pacaud (1): Staging: comedi: add adl_pci9111 driver Eric Anholt (10): drm/i915: Add information on pinning and fencing to the i915 list debug. drm/i915: Change DCC tiling detection case to cover only mobile parts. drm/i915: Fix lock order reversal in GTT pwrite path. drm/i915: Make GEM object's page lists refcounted instead of get/free. drm/i915: Fix lock order reversal in shmem pwrite path. drm/i915: Fix lock order reversal in shmem pread path. drm/i915: Fix lock order reversal with cliprects and cmdbuf in non-DRI2 paths. drm/i915: Fix lock order reversal in GEM relocation entry copying. drm/i915: Add information on pinning and fencing to the i915 list debug. drm: Use a little stash on the stack to avoid kmalloc in most DRM ioctls. Eric Biederman (4): veth: Allow setting the L3 MTU neigh: Allow for user space users of the neighbour table macvlan: Support creating macvlans from macvlans macvlan: Deterministic ingress packet delivery Eric Dumazet (18): net: move bsockets outside of read only beginning of struct inet_hashinfo netfilter: arp_tables: unfold two critical loops in arp_packet_match() netfilter: xt_physdev fixes netfilter: xt_physdev: unfold two loops in physdev_mt() netfilter: ip6_tables: unfold two loops in ip6_packet_match() netfilter: ip_tables: unfold two critical loops in ip_packet_match() netfilter: xt_hashlimit fix tcp: allow timestamps even if SYN packet has tsval=0 net: reorder fields of struct socket net: reorder struct Qdisc for better SMP performance net: remove useless prefetch() call netfilter: nf_conntrack: Reduce conntrack count in nf_conntrack_free() arp_tables: ifname_compare() can assume 16bit alignment netfilter: nf_conntrack: use hlist_add_head_rcu() in nf_conntrack_set_hashsize() netfilter: factorize ifname_compare() netfilter: nf_conntrack: use SLAB_DESTROY_BY_RCU and get rid of call_rcu() netfilter: use rcu_read_bh() in ipt_do_table() socket: use percpu_add() while updating sockets_in_use Eric Lammerts (1): [WATCHDOG] w83697ug: add error checking Eric Leblond (7): netfilter: log invalid new icmpv6 packet with nf_log_packet() netfilter: use a linked list of loggers netfilter: print the list of register loggers netfilter: sysctl support of logger choice netfilter: fix warning about invalid const usage netfilter: fix warning in ebt_ulog init function. netfilter: fix nf_logger name in ebt_ulog. Eric Miao (42): ASoC: make ops a pointer in 'struct snd_soc_dai' Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel Merge branch 'devel' of ssh://master.kernel.org/home/rmk/linux-2.6-arm into devel [ARM] pxa: introduce pxa{25x,27x,300,320,930}.h for board usage [ARM] pxa: allow DMA controller IRQ being specified [ARM] pxa: move DMA registers definitions into [ARM] pxa: move IRQ handling of GPIO 0 and 1 outside of gpio.c [ARM] pxa: move pxa_gpio_mode() outside of generic gpio.c [ARM] pxa: move GPIO register definitions into [ARM] pxa: move declaration of 'pxa_last_gpio' into [ARM] pxa: access GPIO registers by chip so to make it further generic [ARM] pxa: remove machine class specific stuffs from serial driver [ARM] pxa: remove unnecessary #include of pxa-regs.h and hardware.h [ARM] pxa: move PCMCIA definitions out of pxa-regs.h into pxa2xx_base.c [ARM] pxa: make lubbock specific debugging stuffs back into lubbock.c [ARM] pxa: move pxa2xx chip selects definitions out of pxa-regs.h [ARM] pxa: separate definitions from pxa-regs.h and remove it finally [ARM] pxa: fix typo in BANK_OFF() macro in gpio.h [ARM] pxa: fix overlay being un-necessarily initialized on pxa25x Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git into devel [ARM] pxa: introduce plat-pxa for PXA common code and add DMA support [ARM] pxa: move common GPIO handling code into plat-pxa [ARM] pxa: move common MFP handling code into plat-pxa [ARM] pxa: add base support for Marvell's PXA168 processor line [ARM] pxa: add iWMMXt support for pxa168 [ARM] pxa: add GPIO support for pxa168 [ARM] pxa: add MFP support for pxa168 [ARM] pxa: allow reuse of serial driver for pxa168 [ARM] pxa/aspenite: add support for console uart [ARM] pxa/aspenite: add support for debug ethernet [ARM] pxa: add base support for Marvell PXA910 [ARM] pxa: add base support for pxa910-based TavorEVB [ARM] pxa: add base support for pxa910-based TTC_DKB [ARM] pxa: add defconfig for pxa168-based platforms [ARM] pxa: add defconfig for pxa910-based platforms MAINTAINERS: update pxa168 maintainers MAINTAINERS: update pxa910 maintainers platform: make better use of to_platform_{device,driver}() macros platform: introduce module id table for platform devices [ARM] pxa: build arch/arm/plat-pxa/mfp.c only when PXA3xx or ARCH_MMP defined backlight: fix pwm_bl.c when multiple PWM backlights exist spi: pxa2xx_spi: introduce chipselect GPIO to simplify the common cases Eric Moore (3): [SCSI] mpt2sas: add MPT2SAS_MINOR(221) to miscdevice.h [SCSI] mpt2sas v00.100.11.15 [SCSI] mpt2sas: make global symbols unique Eric Paris (16): SELinux: call capabilities code directory SELinux: better printk when file with invalid label found SELinux: NULL terminate al contexts from disk SELinux: check seqno when updating an avc_node SELinux: remove the unused ae.used SELinux: more careful use of avd in avc_has_perm_noaudit SELinux: remove unused av.decided field SELinux: code readability with avc_cache SELinux: convert the avc cache hash list to an hlist SELinux: open perm for sock files SELinux: new permission between tty audit and audit socket SELinux: inode_doinit_with_dentry drop no dentry printk Btrfs: introduce btrfs_show_options audit: incorrect ref counting in audit tree tag_chunk audit: audit_set_auditable defined but not used Audit: remove spaces from audit_log_d_path Eric Sandeen (6): stackprotector: use canary at end of stack to indicate overruns at oops time [XFS] Remove the rest of the macro-to-function indirections. [XFS] remove always-true #ifndef HAVE_FORMAT32 tests don't reallocate sxp variable passed into xfs_swapext filesystem freeze: allow SysRq emergency thaw to thaw frozen filesystems add fiemap.h to header-y Eric Sesterhenn (4): UBIFS: list usage cleanup MISDN: list usage cleanup [S390] list usage cleanup in s390 Staging: et131x: list usage cleanup Eric W. Biederman (17): tun: Remove unnecessary tun_get_by_name tun: Fix races in tun_set_iff tun: Use POLLERR not EBADF in tun_chr_poll tun: Introduce tun_file tun: Grab the netns in open. tun: Make tun_net_xmit atomic wrt tun_attach && tun_detach tun: Move read_wait into tun_file tun: Fix races between tun_net_close and free_netdev. tun: There is no longer any need to deny changing network namespaces tun: Implement ip link del tunXXX netns: Fix icmp shutdown. tcp: Like icmp use register_pernet_subsys netns: Remove net_alive PCI: pcie_portdriver: fix pcie_port_device_remove sysfs: Take sysfs_mutex when fetching the root inode. sysfs: reference sysfs_dirent from sysfs inodes sysfs: don't block indefinitely for unmapped files. Erik Andr?n (24): V4L/DVB (11403): gspca - m5602-s5k4aa: No more "default" mode V4L/DVB (11404): gspca - m5602-s5k4aa: Add start function and VGA resolution init. V4L/DVB (11405): gspca - m5602: Simplify error handling V4L/DVB (11406): gspca - m5602-ov9650: Add QCIF resolution support V4L/DVB (11407): gspca - m5602-ov9650: Clean up ov9650_start() function. V4L/DVB (11409): gspca - m5602-ov9650: Set the ov9650 sensor in soft sleep when inactive. V4L/DVB (11410): gspca - m5602-ov9650: Always init the ov9650 before starting a stream V4L/DVB (11411): gspca - m5602: Rework v4l ctrl handling in all sensors V4L/DVB (11412): gspca - m5602-ov9650: Checkpatch fixes V4L/DVB (11413): gspca - m5602-mt9m111: Separate mode vectors per sensor. V4L/DVB (11414): gspca - m5602-mt9m111: Move v4l2 controls to main sensor file. V4L/DVB (11415): gspca - m5602: Remove an unused member in the sd struct. V4L/DVB (11416): gspca - m5602: Constify all sensor structs V4L/DVB (11417): gspca - m5602-ov9650: Autogain is on by default V4L/DVB (11418): gspca - m5602-ov9650: Auto white balancing is on by default V4L/DVB (11419): gspca - m5602-ov9650: Don't read exposure data from COM1. V4L/DVB (11420): gspca - m5602: Improve error handling in the ov9650 driver V4L/DVB (11421): gspca - m5602-ov9650: Synthesize modesetting. V4L/DVB (11422): gspca - m5602-ov9650: Replace a magic constant with a define V4L/DVB (11423): gspca - m5602-ov9650: Add a disconnect hook, setup a ctrl cache ctrl. V4L/DVB (11424): gspca - m5602-ov9650: Use the local ctrl cache. Adjust image on vflip. V4L/DVB (11425): gspca - m5602: Move the vflip quirk to probe stage. V4L/DVB (11426): gspca - m5602: Don't touch hflip/vflip register on Read/Modify/Write V4L/DVB (11427): gspca - m5602: Minor cleanups Erik Andren (3): V4L/DVB (10334): gspca - stv06xx: Rework control description. V4L/DVB (10341): gspca - stv06xx: Plug a memory leak in the pb0100 sensor driver. V4L/DVB (10342): gspca - stv06xx: Add ctrl caching to the vv6410. Erik AndrĂ©n (10): Staging: agnx: Fixup agnx.h checkpatch warnings Staging: agnx: Fixup debug.h checkpatch warnings Staging: agnx: Fixup pci.c checkpatch warnings Staging: agnx: Fixup phy.c checkpatch warnings Staging: agnx: Fixup rf.c checkpatch warnings Staging: agnx: Fixup sta.c checkpatch warnings Staging: agnx: Fixup sta.h checkpatch warnings Staging: agnx: Fixup table.c checkpatch warnings Staging: agnx: Fixup xmit.c checkpatch warnings Staging: altpciechdma: checkpatch fixups Erik Ekman (2): pnpbios: fix warning if CONFIG_HOTPLUG=n pnpbios: propagate kthread_run() error Erik Inge Bolsø (4): include/linux/ata.h: add some more transfer masks [libata] convert drivers to use ata.h mode mask defines pata_radisys: fix mwdma_mask to exclude mwdma0 pata_efar: fix *dma_mask Erik S. Beiser (1): V4L/DVB (10826): cx88: Add IR support to pcHDTV HD3000 & HD5500 Etienne Basset (2): smack: convert smack to standard linux lists smack: Add a new '-CIPSO' option to the network address label configuration Evan Ko (1): Staging: add phison ATA driver to the tree Everett Wang (1): Staging: comedi: add s526 driver Evgeniy Polyakov (24): inet: Allowing more than 64k connections and heavily optimize bind(0) time. Staging: dst: core files. Staging: dst: network state machine. Staging: dst: export node. Staging: dst: thread pool. Staging: dst: transactions. Staging: dst: crypto processing. Staging: dst: kconfig and makefile changes. Staging: dst: kconfig update. Staging: DST: optimize bio allocation. Staging: DST: extend thread pool exit conditions. Staging: DST: Do not allow empty barriers. Staging: DST: Kconfig text update. Staging: DST: fix build dependancy Staging: pohmelfs: documentation. Staging: pohmelfs: configuration interface. Staging: pohmelfs: crypto processing. Staging: pohmelfs: directory operations. Staging: pohmelfs: inode operations. Staging: pohmelfs: distributed locking and cache coherency protocol. Staging: pohmelfs: network operations. Staging: pohmelfs: transaction layer. Staging: pohmelfs: kconfig/makefile and vfs changes. Staging: pohmelfs: select crypto modules from the config. FUJITA Tomonori (42): add map/unmap_single_attr and map/unmap_sg_attr to struct dma_mapping_ops add dma_mapping_ops for SBA IOMMU add dma_mapping_ops for SWIOTLB and SBA IOMMU add dma_mapping_ops for intel-iommu add dma_mapping_ops for SGI Altix add dma_mapping_ops for SWIOTLB set up dma_ops appropriately convert the DMA API to use dma_ops remove dma operations in struct ia64_machine_vector make sn DMA mapping functions static add dma_get_ops to struct ia64_machine_vector remove hwsw_dma_ops make sba DMA mapping functions static x86: add map_page and unmap_page to struct dma_mapping_ops x86, swiotlb: add map_page and unmap_page x86, gart: add map_page and unmap_page x86, calgary: add map_page and unmap_page x86, AMD IOMMU: add map_page and unmap_page intel-iommu: add map_page and unmap_page x86, pci-nommu: add map_page x86: remove map_single and unmap_single in struct dma_mapping_ops generic: add common struct for dma map operations x86, ia64: convert to use generic dma_map_ops struct x86, ia64: remove duplicated swiotlb code convert to use generic dma_map_ops struct, cleanup IA64: fix compile error on IA64_DIG_VTD IA64: fix swiotlb alloc_coherent for non DMA_64BIT_MASK devices IA64: fix VT-d dma_mapping_error intel-iommu: make dma mapping functions static AMD IOMMU: remove unnecessary ifdef [SCSI] libfc: fix compile warning [SCSI] osst: make all the buffer the same size [SCSI] osst: replace scsi_execute_async with the block layer API [SCSI] remove scsi_req_map_sg [SCSI] sg: avoid blk_put_request/blk_rq_unmap_user in interrupt [SCSI] sg: remove unnecessary function declarations [SCSI] sg: use ALIGN macro [SCSI] sg: remove the own list management for struct sg_fd dma-debug: warn of unmapping an invalid dma address remove unused include/asm-generic/dma-mapping.h [SCSI] sg: fix iovec bugs introduced by the block layer conversion [SCSI] sg: fix q->queue_lock on scsi_error_handler path Faisal Latif (2): RDMA/nes: Remove LLTX RDMA/nes: Handle MPA Reject message properly Felipe Balbi (5): ARM: OMAP: get rid of OMAP_TAG_USB, v2 ARM: OMAP3: MUSB initialization for omap hw, v2 USB: composite: avoid inconsistent lock state leds: Add gpio-led trigger leds: introduce lp5521 led driver Felipe Contreras (1): omapfb: fix argument of blank operation Felix Beck (1): [S390] Add zcrypt section in MAINTAINERS Felix Blyakher (26): Merge branch 'master' of git+ssh://oss.sgi.com/oss/git/xfs/xfs [XFS] Warn on transaction in flight on read-only remount Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 xfs: Update maintainers Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/fs/xfs/xfs Merge branch 'master' of git://git.kernel.org/pub/scm/fs/xfs/xfs Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/fs/xfs/xfs Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Revert "[XFS] use scalable vmap API" Revert "[XFS] remove old vmap cache" Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Fix xfs debug build breakage by pushing xfs_error.h after Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/fs/xfs/xfs Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 xfs: increase the maximum number of supported ACL entries Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/fs/xfs/xfs Revert "xfs: increase the maximum number of supported ACL entries" Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-linus Felix Fietkau (1): ath5k: properly free rx dma descriptors Fenghua Yu (4): iwlwifi: dma mapping read and write changes Intel IOMMU Suspend/Resume Support - DMAR Intel IOMMU Suspend/Resume Support - Queued Invalidation Intel IOMMU Suspend/Resume Support - Interrupt Remapping Flavio Leitner (1): i2c-piix4: Add support for the Broadcom HT1100 chipset Florian Fainelli (5): au1000: reorder functions pata-rb532-cf: platform_get_irq() fix ignored failure r6040: Fix second PHY address Bump release date to 25Mar2009 and version to 0.22 MIPS: Au1000: convert to using gpiolib Florian Westphal (2): netfilter: ctnetlink: remove remaining module refcounting netfilter: remove nf_ct_l4proto_find_get/nf_ct_l4proto_put Francesco VIRLINZI (5): sh: clkfwk: add clk_set_parent/clk_get_parent sh: clkfwk: Add resume from hibernation support. sh: PMB hibernation support sh: clkfwk: Safer resume from hibernation. sh: Sanitize asm/mmu.h for assembly use. Francois Romieu (1): tg3: remove extra casting Frank Blaschka (6): lcs: convert to net_device_ops ctcm: convert to net_device_ops netiucv: convert to net_device_ops claw: convert to net_device_ops qeth: add statistics for tx csum qeth: remove EDDP Frank Mori Hess (13): Staging: comedi: add National Instruments infrastructure Staging: comedi: add ni_labpc drivers Staging: comedi: add gsc_hpdi driver Staging: comedi: add das16m1 driver Staging: comedi: add cb_pcidas64 driver Staging: comedi: add das1800 driver Staging: comedi: add das800 driver Staging: comedi: add ni_at_a2150 driver Staging: comedi: Added reading of board serial number from eeprom for m-series boards Staging: comedi: usbduxfast bugfix Staging: comedi: Fixed minor numbers for subdevice files. Staging: comedi: Added some validation of comedi module parameter values. Staging: comedi: fix bug with invalid minor number usage. Frank Munzert (2): [S390] Automatic IPL after dump [S390] Use csum_partial in checksum.h Frank Seidel (8): airo: reduce stack memory footprint iwlwifi: reduce stack size PCI: add missing KERN_* constants to printks USB: add missing KERN_* constants to printks i2c: Add missing KERN_* constants to printks i2c: Adapt debug macros for KERN_* constants hwmon: (hdaps) Allow inversion of separate axis hwmon: (hdaps) Fix Thinkpad X41 axis inversion Frans Pop (2): hp-wmi: notify of a potential docking state change on resume PCI PM: Consistently use variable name "error" for pm call return values Fred Brooks (1): Staging: comedi: add ni_daq_700 driver Frederic Weisbecker (62): tracing/function-graph-tracer: strip ending newlines on comments hrtimers: increase clock min delta threshold while interrupt hanging tracing/ftrace: provide the base infrastructure for histogram tracing tracing/branch-tracer: adapt to the stat tracing API tracing/kmemtrace: normalize the raw tracer event to the unified tracing API tracing/ftrace: fix a memory leak in stat tracing tracing/ftrace: handle more than one stat file per tracer tracing/ftrace: separate events tracing and stats tracing engine tracing: add a new workqueue tracer tracing/function-graph-tracer: fix a regression while suspend to disk tracing/function-graph-tracer: various fixes and features x86: micro-optimize __raw_read_trylock() connector: create connector workqueue only while needed once trace: better manage the context info for events tracing/blktrace: move the tracing file to kernel/trace tracing/function-graph-tracer: provide a selftest for the function graph tracer tracing/power: move the power trace headers to a dedicated file tracing/function-graph-tracer: drop the kernel_text_address check tracing/function-graph-tracer: handle the leaf functions from trace_pipe softlockup: ensure the task has been switched out once tracing/sysprof: add missing tracing_{start,stop}_record_cmdline() tracing/core: use appropriate waiting on trace_pipe tracing/core: remove unused parameter in tracing_fill_pipe_page() tracing/function-graph-tracer: fix traces weirdness while absolute time printing tracing/function-graph-tracer: provide documentation for the function graph tracer tracing/function-graph-tracer: make set_graph_function file support ftrace regex tracing/markers: make markers select tracepoints tracing/core: introduce per cpu tracing files tracing/core: make the read callbacks reentrants tracing/core: make the per cpu trace files in per cpu directories tracing/function-graph-tracer: use the more lightweight local clock sched: don't rebalance if attached on NULL domain vsprintf: unify the format decoding layer for its 3 users tracing/core: drop the old trace_printk() implementation in favour of trace_bprintk() vsprintf: fix bug in negative value printing tracing/core: bring back raw trace_printk for dynamic formats strings tracing/ftrace: syscall tracing infrastructure, basics tracing/x86: basic implementation of syscall tracing for x86 tracing/syscalls: support for syscalls tracing on x86 tracing/syscalls: core infrastructure for syscalls tracing, enhancements tracing/syscalls: fix missing release of tracing tracing/syscalls: various cleanups tracing/syscalls: protect thread flag toggling from races tracing/syscalls: select kallsysms tracing/core: fix missing mutex unlock on tracing_set_tracer() tracing/ftrace: fix double calls to tracing_start() tracing/core: fix early free of cpumasks tracing/ftrace: fix the check on nopped sites tracing/ftrace: stop {irqs, preempt}soff tracers when tracing is stopped tracing/ring-buffer: fix non cpu hotplug case tracing/ring-buffer: don't annotate rb_cpu_notify with __cpuinit tracing/function-graph-tracer: prevent hangs during self-tests tracing: keep the tracing buffer after self-test failure tracing/events: make the filter files writable tracing/events: don't use wake up for events tracing/ftrace: make nop-tracer use polling wait for events on pipe tracing/events: don't discard an event after commit debugfs: function to know if debugfs is initialized tracing/ftrace: check if debugfs is registered before creating files tracing/function-graph-tracer: fix functions call traces imbalance tracing/ftrace: fix missing include string.h tracing/ftrace: alloc the started cpumask for the trace file Frederik Deweerdt (1): x86, tlb flush_data: replace per_cpu with an array Gabor Juhos (20): ath9k: use signed format to print HAL status ath9k: convert to struct device ath9k: convert to use bus-agnostic DMA routines ath9k: introduce bus specific cache size routine ath9k: introduce bus specific cleanup routine ath9k: move PCI code into separate file ath9k: introduce platform driver for AHB bus support ath9k: get EEPROM contents from platform data on AHB bus ath9k: remove (u16) casts from rtc register access ath9k: fix ar5416Addac_9100 values ath9k: fix null pointer dereference in ani monitor code ath9k: enable support for AR9100 ath9k: fix AR_TXCFG_DMASZ_MASK value ath9k: create a common debugfs_root for all device instances ath9k: cleanup AR5416 version checking macros ath9k: move ar9100 version checking macros into a more appropriate place ath9k: fix AR_SREV_9100_OR_LATER macro ath9k: fix compile error in ahb.c ath9k: fix compile error in debug.c ath9k: always compile ath_radio_{en,dis}able Gabriel Paubert (1): powerpc: Disable mv643xx Ethernet port 0 on Pegasos Gabriele Paoloni (1): ppp: ppp_mp_explode() redesign Gautham R Shenoy (11): sched: Simple helper functions for find_busiest_group() sched: Fix indentations in find_busiest_group() using gotos sched: Define structure to store the sched_group statistics for fbg() sched: Create a helper function to calculate sched_group stats for fbg() sched: Define structure to store the sched_domain statistics for fbg() sched: Create a helper function to calculate sched_domain stats for fbg() sched: Create helper to calculate small_imbalance in fbg() sched: Create a helper function to calculate imbalance sched: Optimize the !power_savings_balance during fbg() sched: Refactor the power savings balance code sched: Add comments to find_busiest_group() function Geert Uytterhoeven (23): netlink: Move netlink attribute parsing support to lib crypto: compress - Add pcomp interface crypto: testmgr - Add support for the pcomp interface crypto: zlib - New zlib crypto module, using pcomp crypto: testmgr - add zlib test PCI: Use kzalloc() in pci_create_bus() m68k: Use dma_addr_t for scatterlist.dma_address m68k: Restore correct include guards for dnet: drivers/net/dnet.c needs scsi/m68k: Kill NCR_700_detect() warnings MAINTAINERS: Replace dead link to m68k CVS repository by link to new git repository m68k: irq_node.handler() should return irqreturn_t wireless/p54: P54_SPI should depend on GENERIC_HARDIRQS ide: drivers/ide/ide-atapi.c needs parisc: rtc: get_rtc_time() returns unsigned int parisc: rtc: platform_driver_probe() fixups parisc: rtc: Add missing module alias parisc: rtc: Rename rtc-parisc to rtc-generic m68k: Hook up rtc-generic powerpc: Hook up rtc-generic, and kill rtc-ppc powerpc/ps3: Add rtc-ps3 V4L/DVB (11392a): Remove reference to obsolete linux-dvb@linuxtv.org powerpc: Correct dependency of KEXEC Geoff Levand (2): powerpc: Add missing DABR flags powerpc/ps3: Print memory hotplug errors George G. Davis (1): [ARM] 5440/1: Fix VFP state corruption due to preemption during VFP exceptions Gerald Schaefer (1): [S390] kernel: Disable switch_amode by default Gerd Hoffmann (5): KVM: Fix kvmclock on !constant_tsc boxes preadv/pwritev: create compat_readv() preadv/pwritev: create compat_writev() preadv/pwritev: Add preadv and pwritev system calls. preadv/pwritev: switch compat readv/preadv/writev/pwritev from fget to fget_light Gerhard Pircher (4): powerpc/amigaone: Add platform support for AmigaOne powerpc/amigaone: Generic device tree for all AmigaOne boards powerpc/amigaone: Bootwrapper and serial console support for AmigaOne powerpc/amigaone: Default config for AmigaOne boards Gerrit Renker (6): dccp: Initialisation framework for feature negotiation dccp: Implement both feature-local and feature-remote Sequence Window feature dccp: Initialisation and type-checking of feature sysctls dccp: Debugging functions for feature negotiation dccp: Minimise header option overhead in setting the MPS dccp: Do not let initial option overhead shrink the MPS Gilles Espinasse (1): ide: be able to build pmac driver without IDE built-in Giridhar Malavali (4): [SCSI] qla2xxx: Consolidate queuecommand implementations. [SCSI] qla2xxx: Initialize FCE debugfs codes with the proper vha structure. [SCSI] qla2xxx: Correct over-allocation of firmware-dump buffer. [SCSI] qla2xxx: Drop use of IRQF_DISABLE. Giuliano Pochini (4): powerpc/powermac: Hotplug /sys entries are missing ALSA: echoaudio: remove line-out volume from vmixer cards ALSA: echoaudio: remove line-out volume from vmixer cards ALSA: Echoaudio: add support for Indigo express cards Giuseppe GORGOGLIONE (1): USB: musb: fix init oops crash with static FIFO config Gleb Natapov (2): KVM: Report IRQ injection status to userspace. KVM: Report IRQ injection status for MSI delivered interrupts Gong Jun (2): hwmon: (w83627ehf) Add support for W83667HG hwmon: (w83627ehf) Only expose in6 or temp3 on the W83667HG Graf Yang (2): net: fix some trailing whitespaces blackfin: Subtract ANOMALY_05000230 on quot Graff Yang (1): [MTD] [CHIPS] cfi_cmdset_0001.c: Fix a bug in inval_cache_and_wait_for_operation(). Grant Erickson (1): edac: new ppc4xx driver module Grant Likely (15): powerpc/5200: Stop using device_type and port-number properties powerpc/5200: Trim cruft from device trees powerpc/5200: Don't specify IRQF_SHARED in PSC UART driver powerpc/5200: Remove pr_debug() from hot paths in irq driver powerpc/5200: Refactor mpc5200 interrupt controller driver powerpc/5200: Rework GPT driver to also be an IRQ controller powerpc/5200: Add support for the Media5200 board from Freescale powerpc/5200: Add 'simple-bus' to the of_platform probe list. powerpc/4xx: update ml507 .dts file to release reference design powerpc/5200: remove sysfs debug file from GPT driver powerpc/bootwrapper: add fixed-head.o to simpleimage wrappers powerpc/cpm2: fix building fs_enet driver as a module. powerpc: Remove unused symbols from fsl_devices.h net/fec_mpc52xx: fix BUG on missing dma_ops net/fec_mpc52xx: Don't dereference phy_device if it is NULL Grazvydas Ignotas (3): ASoC: Update OMAP3 pandora board file ARM: OMAP3: mmc-twl4030 add MMC3 support, v2 omap_hsmmc: Fix MMC3 dma Greg Banks (7): knfsd: remove the nfsd thread busy histogram knfsd: avoid overloading the CPU scheduler with enormous load averages knfsd: add file to export stats about nfsd pools Dynamic debug: allow simple quoting of words Dynamic debug: fix pr_fmt() build error Document /proc/fs/nfsd/pool_stats Fix a build warning about leaking CONFIG_NFSD to userspace. Greg Kroah-Hartman (145): USB: serial: opticon: add write support USB: serial: opticon: add serial line ioctls USB: serial: add symbol serial driver USB: symbolserial: log the ioctl commands USB: serial: add qualcomm wireless modem driver USB: make transfer_buffer_lengths in struct urb field u32 USB: make actual_length in struct urb field u32 USB: remove phidget drivers from kernel tree. USB: serial: rename cp2101 driver to cp210x PS3: replace bus_id usage driver core: create a private portion of struct device driver core: move klist_children into private structure driver core: move knode_driver into private structure driver core: move knode_bus into private structure Staging: slicoss: remove TRUE/FALSE usage Staging: slicoss: remove jiffies macros Staging: slicoss: remove DEBUG_REGISTER_TRACE Staging: slicoss: remove WRITE_REG64 wrapper Staging: slicoss: remove WRITE_REG wrapper Staging: slicoss: remove slic_os.h Staging: slicoss: remove unused #defines Staging: slicoss: delete slicbuild.h Staging: slicoss: clean up SLIC_DUMP_ENABLED Staging: slicoss: remove SLIC_GET_STATS_TIMER_ENABLED Staging: slicoss: delete slicinc.h Staging: slicoss: remove SLIC_GET_STATS_ENABLED Staging: slicoss: add proper KERN_DEBUG to 2 printks Staging: slicoss: remove SLIC_POWER_MANAGEMENT_ENABLED Staging: slicoss: remove LINUX_FREES_ADAPTER_RESOURCES Staging: slicoss: remove SLIC_PING_TIMER_ENABLED Staging: slicoss: remove VALID_ADDRESS macro Staging: slicoss: remove DBG_MSG Staging: slicoss: remove SLIC_ETHTOOL_SUPPORT Staging: slicoss: remove SLICLEVEL and SLIC_DISPLAY macros Staging: slicoss: remove DBG_ERROR macro Staging: slicoss: remove ASSERTMSG macro Staging: slicoss: delete slicdbg.h Staging: slicoss: slichw.h cleanup Staging: sxg: fix build warnings in sxg_ethtool Staging: sxg: remove firmware files from sgx_ethtool.c Staging: sxg: fix build warnings in downloadB firmware files Staging: sxg: fix build warnings in sxg.c Staging: go7007: fix build error Staging: rtl8187se: fix \r\n line ends staging: dst: replace bus_id with dev_set_name Staging: add aten2011 usb to serial converter driver. Staging: aten2011: run lindent Staging: aten2011: move .h files into the driver Staging: aten2011: remove kernel version dependencies Staging: aten2011: fix up comments by removing most of them. Staging: aten2011: remove unneeded defines Staging: aten2011: remove function prototypes. Staging: aten2011: fix up sparse warnings Staging: aten2011: remove unused fields from structures. Staging: aten2011: clean up init and exit functions Staging: aten2011: remove paranoia check functions Staging: aten2011: fix up the set_reg_sync function Staging: aten2011: fix up the get_reg_sync function Staging: aten2011: fix up the set_uart_reg function Staging: aten2011: fix up the get_uart_reg function Staging: aten2011: delete the Dump_serial_port function Staging: aten2011: remove wrappers around serial get and put data functions Staging: aten2011: fix up c++ comments Staging: aten2011: remove DPRINTK macro Staging: aten2011: s/__FUNCTION__/__func__ Staging: aten2011: fix checkpatch errors and warnings Staging: phison: fix up checkpatch and other formatting issues Staging: phison: port code to work properly with latest libata Staging: phison: add driver to the build system Staging: comedi: fix bus_id use in jr3_pci driver Staging: comedi: add c6xdigio driver Staging: comedi: add new drivers to the kernel build Staging: comedi: addi-data header file cleanups Staging: comedi: addi-data: APCI1710_82x54 cleanups Staging: comedi: fix 64bit build errors Staging: epl: remove unneeded files Staging: epl: remove complier macros from global.h Staging: epl: remove NULL from global.h Staging: epl: remove PUBLIC definition Staging: epl: remove _WIN_32_ and _NO_OS_ defines Staging: epl: remove INLINE mess Staging: epl: remove __KERNEL__ checks Staging: epl: unwind rest of _LINUX_ #ifdefs Staging: epl: remove EplObjDef.h Staging: epl: remove GENERIC Staging: epl: remove NEAR Staging: epl: remove FAR Staging: epl: remove ROM Staging: epl: remove MEM Staging: epl: remove REENTRANT Staging: epl: remove compiler warning from SharedBuff.c Staging: epl: remove some unused types Staging: epl: remove CONST Staging: epl: delete EdrvFec5282.h Staging: epl: remove BYTE Staging: epl: remove QWORD Staging: epl: remove DWORD Staging: epl: remove WORD Staging: epl: fix up some non-ANSI functions Staging: epl: clean up demo_main.c Staging: epl: remove kernel version checks Staging: epl: fix sparse warning in proc_fs.c Staging: epl: remove EPLDLLEXPORT Staging: epl: fix up epl/user/*.h files Staging: epl: fix up epl/kernel/*.h files Staging: epl: don't check for devfs Staging: epl: remove pointless highres timer check Staging: p9auth: fix credential logic Staging: p9auth: add to the kernel build Staging: p9auth: remove unneeded header file Staging: p9auth: fix up codingstyle issues Staging: p9auth: fix up sparse warnings Staging: p9auth: use kzalloc Staging: p9auth: clean up #includes Staging: heci: remove kcompat.h Staging: heci: fix checkpatch warnings Staging: heci: fix some sparse warnings Staging: heci: add TODO file Staging: add rt3070 wireless driver Staging: line6: fix bus_id usage Staging: line6: add to the build Staging: line6: remove DEVICE_ATTRIBUTE Staging: line6: remove PT_REGS Staging: line6: remove KERNEL_VERSION checks Staging: line6: static function cleanups Staging: line6: fix up NULL assignment mistakes Staging: line6: coding style cleanups for .h files. Staging: line6: fix checkpatch errors in capture.c Staging: line6: fix checkpatch errors in control.c Staging: line6: fix checkpatch errors in playback.c Staging: line6: fix checkpatch errors in pod.c Staging: line6: fix checkpatch errors in audio.c Staging: line6: fix checkpatch errors in driver.c Staging: line6: fix checkpatch errors in dumprequest.c Staging: line6: fix checkpatch errors in midi.c Staging: line6: fix checkpatch errors in midibuf.c Staging: line6: fix checkpatch errors in pcm.c Staging: line6: fix checkpatch errors in toneport.c Staging: line6: fix checkpatch errors in variax.c staging: document that the wifi staging drivers a bit better Staging: add USB serial Quatech driver Staging: serqt_usb: Lindent the code Staging: serqt_usb: add TODO file Staging: serqt_usb: fix checkpatch errors Staging: serqt_usb: fix build due to proc tty changes Greg Ungerer (40): fec: add FEC platform support to ColdFire CPU's setup code m68knommu: remove ColdFire specific setup code from FEC driver m68knommu: mark all RAM as ZONE_DMA m68knommu: add a local dma_sync_single_for_cpu() function m68k: use the mmu pci.h for m68knommu as well m68k: swtich non-mmu setups to use the mmu dma-mapping.h m68k: use the mc146818rtc.h for non-mmu setups as well. m68k: use mmu kmap_types.h for non-mmu setups as well m68knommu: remove no longer used mcfpci.h m68k: merge the mmu and non-mmu versions of mmu.h m68k: use mmu scatterlist.h for non-mmu setups as well m68k: use mmu fpu.h for non-mmu builds as well m68k: use mmu timex.h for non-mmu setups as well m68k: use mmu version of elf.h for non-mmu builds as well m68k: use non-mmu version of unaligned.h for all m68k m68k: the one hw_irq.h can be used buy all m68k m68k: merge the mmu and non-mmu versions of page_offset.h m68knommu: mv definition of check_pgt_cache() m68k: merge the mmu and non-mmu versions of pgalloc.h m68k: merge the mmu and non-mmu versions of ucontext.h m68k: merge the mmu and non-mmu versions of segment.h m68k: merge the mmu and non-mmu versions of fb.h m68k: use the mmu version of bootinfo.h for m68knommu as well m68k: use the mmu version of cache.h for m68knommu as well m68k: merge the mmu and non-mmu versions of bug.h m68k: merge the mmu and non-mmu versions of bugs.h m68k: merge the mmu and non-mmu versions of div64.h m68k: merge the mmu and non-mmu versions of current.h m68k: merge the mmu and non-mmu versions of mmu_context.h m68knommu: add missing interrupt line definition for UART 2 m68k: merge the mmu and non-mmu versions of module.h m68knommu: introduce basic clk infrastructure m68k: merge the mmu and non-mmu versions of tlbflush.h m68knommu: switch to using generic_handle_irq() m68knommu: fix end of uart table marker m68knommu: fix 5249 ColdFire UART setup m68knommu: fix 5249 ColdFire UART vector setup m68knommu: fix 5307 ColdFire UART vector setup m68knommu: fix 5407 ColdFire UART vector setup m68knommu: improve compile arch switch settings Gregorio Guidi (1): ALSA: hda - fix headphone settings and master volume (Conexant CX20551) Gregory Haskins (13): sched: cleanup inc/dec_rt_tasks sched: track the next-highest priority on each runqueue sched: use highest_prio.curr for pull threshold sched: use highest_prio.next to optimize pull operations sched: only try to push a task on wakeup if it is migratable sched: pull only one task during NEWIDLE balancing to limit critical section sched: make double-lock-balance fair sched: add sched_class->needs_post_schedule() member plist: fix PLIST_NODE_INIT to work with debug enabled sched: create "pushable_tasks" list to limit pushing to one attempt RT: fix push_rt_task() to handle dequeue_pushable properly sched: de CPP-ify the scheduler code sched: fix build error in kernel/sched_rt.c when RT_GROUP_SCHED && !SMP Grzegorz Bernacki (3): powerpc/5200: Add support for the digsy MTC board. powerpc/5200: Add digsy-mtc support to mpc5200_defconfig powerpc/5200: On the digsy-mtc, configure PSC4 and PSC5 as UARTs Grzegorz Nosek (1): cgroups: relax ns_can_attach checks to allow attaching to grandchild cgroups Guennadi Liakhovetski (23): i.MX31: framebuffer driver mxc: first set GPIO level, then switch direction to output dma: ipu_idmac driver cosmetic clean-up dma: improve section assignment in i.MX31 IPU DMA driver dma: i.MX31 IPU DMA robustness improvements V4L/DVB (10665): soc-camera: add data signal polarity flags to drivers V4L/DVB (10672): sh_mobile_ceu_camera: include NV* formats into the format list only once. V4L/DVB (10673): mt9t031: fix gain and hflip controls, register update, and scaling V4L/DVB (10674): soc-camera: camera host driver for i.MX3x SoCs V4L/DVB (10675): soc-camera: extend soc_camera_bus_param_compatible with more tests V4L/DVB (11024): soc-camera: separate S_FMT and S_CROP operations V4L/DVB (11025): soc-camera: configure drivers with a default format on open V4L/DVB (11026): sh-mobile-ceu-camera: set field to the value, configured at open() V4L/DVB (11027): soc-camera: configure drivers with a default format at probe time dma: Add SoF and EoF debugging to ipu_idmac.c, minor cleanup leds: allow led-drivers to use a variable range of brightness values leds: Add dac124s085 driver V4L/DVB (11323): pxa-camera: simplify the .buf_queue path by merging two loops V4L/DVB (11325): soc-camera: fix breakage caused by 1fa5ae857bb14f6046205171d98506d8112dd74e V4L/DVB (11326): mt9m001: fix advertised pixel clock polarity V4L/DVB (11347): mt9t031: use platform power hook V4L/DVB (11349): mx3-camera: adapt the clock definition and the driver to the new clock naming fbdev: i.MX31: fix panning, error handling, clean up Guillaume Knispel (1): printk: correct the behavior of printk_timed_ratelimit() Guo-Fu Tseng (5): jme: Modifies messages to display correct hardware version jme: Fix pci sync jme: Clear all modified GHC register flags jme: Adding {64,40}bits DMA mask back jme: Advance version number after previous changes Gustavo F. Padovan (8): x86, fixmap: rename __FIXADDR_SIZE and __FIXADDR_BOOT_SIZE x86, fixmap: define FIXADDR_BOOT_* and redefine FIX_ADDR_SIZE x86, fixmap: define reserve_top_address for x86_64 x86, fixmap: add CONFIG_X86_{LOCAL,IO}_APIC x86, fixmap: add CONFIG_EFI x86, fixmap: prepare fixmap_64.h for unification x86, fixmap: prepare fixmap_32.h for unification x86, fixmap: unify fixmap.h H Hartley Sweeten (1): auxdisplay: remove PARPORT dependency H. Peter Anvin (45): bzip2/lzma: use a table to search for initramfs compression formats bzip2/lzma: handle failures from bzip2 and lzma correctly bzip2/lzma: make config machinery an arch configurable bzip2/lzma: proper Kconfig dependencies for the ramdisk options bzip2/lzma: DECOMPRESS_GZIP should select ZLIB_INFLATE bzip2/lzma: move initrd/ramfs options out of BLK_DEV bzip2/lzma: fix constant in decompress_inflate bzip2/lzma: centralize format detection bzip2/lzma: comprehensible error messages for missing decompressor init: make initrd/initramfs decompression failure a KERN_EMERG event bzip2/lzma: update boot protocol specification x86: clean up stray space in x86: handle PAT more like other CPU features x86: filter CPU features dependent on unavailable CPUID levels Merge branch 'core/percpu' into x86/paravirt x86 setup: a20: early timeout for a nonexistent keyboard controller Merge branch 'core/percpu' into x86/paravirt x86: merge sys_rt_sigreturn between 32 and 64 bits x86: truncate ISA addresses to unsigned int x86, mce: use %ll instead of %L for 64-bit numbers x86, mce: remove invalid __cpuinit/__cpuexit annotations Merge branch 'x86/urgent' into x86/mce2 x86, mce, cmci: remove incorrect __cpuinit/__cpuexit annotations x86, mce: enable machine checks in 32-bit defconfig Merge branch 'x86/defconfig' into x86/mce2 Merge branch 'x86/core' into x86/mce2 Merge branch 'x86/core' into x86/mce2 x86: remove zImage support x86: remove additional vestiges of the zImage/bzImage split x86: use targets in the boot Makefile instead of CLEAN_FILES x86: move brk initialization out of #ifdef CONFIG_BLK_DEV_INITRD x86-32: tighten the bound on additional memory to map x86-32: move _end to a dummy section x86, setup: move 32-bit code to .text32 x86, setup: fix the setting of 480-line VGA modes compiler-gcc4: conditionalize #error on __KERNEL__ bzip2/lzma: move CONFIG_RD_* options under CONFIG_EMBEDDED bzip2/lzma: clarify the meaning of the CONFIG_RD_ options bzip2/lzma: consistently capitalize LZMA in Kconfig bzip2/lzma: don't ask for compression mode for the default initramfs x86, setup: preemptively save/restore edi and ebp around INT 15 E820 x86, setup: ACPI 3, BIOS workaround for E820-probing code bzip2/lzma: quiet Kconfig warning for INITRAMFS_COMPRESSION_NONE x86, setup: guard against pre-ACPI 3 e820 code not updating %ecx x86, setup: compile with -DDISABLE_BRANCH_PROFILING Haavard Skinnemoen (2): avr32: fix out-of-range rjmp instruction on large kernels Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into avr32-arch Hagen Paul Pfeifer (2): netfilter: nf_conntrack: table max size should hold at least table size netfilter: fix hardcoded size assumptions Han, Weidong (4): intel-iommu: fix PCI device detach from virtual machine intel-iommu: set compatibility format interrupt x86, dmar: check if it's initialized before disable queue invalidation x2apic/intr-remap: decouple interrupt remapping from x2apic Hannes Eder (86): kernel/irq: fix sparse warning: make symbol static tracing: fix sparse warnings: make symbols static tracing: fix sparse warnings: fix (un-)signedness tracing: fix sparse warning: attribute function with __acquires/__releases drivers/isdn/hardware/mISDN: fix sparse warnings: make symbols static drivers/isdn/mISDN: fix sparse warnings: make symbols static drivers/isdn/hardware/mISDN: change type of hfc_jiffies to unsigned long drivers/net/at1700.c: fix sparse warning: symbol shadows an earlier one drivers/net/e2100.c: fix sparse warning: symbol shadows an earlier one drivers/net/ni65.c: fix sparse warnings: symbol shadows an earlier one drivers/net/ns83820.c: fix sparse warnings: fix signedness drivers/net/niu.c: fix sparse warning: symbol shadows an earlier one drivers/net/lance.c: fix sparse warnings: fix signedness drivers/net/ni65.c: fix sparse warnings: fix signedness drivers/net/ppp*.c: fix sparse warnings: fix signedness drivers/net/r6040.c: fix sparse warning: Using plain integer as NULL pointer drivers/net/s2io.c: fix sparse warning: symbol shadows an earlier one drivers/net/arcnet: fix sparse warning: symbol shadows an earlier one drivers/net/atl1e: fix sparse warnings: fix signedness drivers/net/atlx: fix sparse warnings: fix signedness drivers/net/bonding: fix sparse warnings: context imbalance drivers/net/bonding: fix sparse warning: symbol shadows an earlier one drivers/net/cxgb3: fix sparse warning: symbol shadows an earlier one drivers/net/cxgb3: fix sparse warnings: fix signedness drivers/net/e1000e: fix sparse warning: Should it be static? drivers/net/hamradio: fix warning: format not a string literal and no ... drivers/net/hamradio: fix sparse warning: context imbalance drivers/net/hamradio: fix sparse warning: symbol shadows an earlier one drivers/net/hamradio: fix sparse warnings: fix signedness drivers/net/ixgbe: fix sparse warning: Should it be static? drivers/net/pcmcia: fix warning: format not a string literal and no ... drivers/net/sfc: fix sparse warning: symbol shadows an earlier one drivers/net/skfp: fix sparse warning: Should it be static? drivers/net/tokenring: fix warning: format not a string literal and no ... drivers/net/tokenring: fix sparse warning: symbol shadows an earlier one drivers/net/tulip: fix warning: format not a string literal and no ... drivers/net/tulip: fix sparse warning: symbol shadows an earlier one drivers/net/usb: fix sparse warnings: Should it be static? drivers/net/wan: fix warning: format not a string literal and no ... drivers/net/wan: fix sparse warning: symbol shadows an earlier one drivers/net/wireless: fix sparse warning: context imbalance drivers/net/wireless: fix sparse warnings: symbol shadows an earlier one drivers/net/wireless: fix sparse warnings: fix signedness drivers/net/wireless/ath9k: fix sparse warnings: Should it be static? drivers/net/wireless/b43: fix warning: format not a string literal and no ... drivers/net/wireless/ipw2x00: fix sparse warnings: fix signedness drivers/net/wireless/prism54: fix sparse warning: fix signedness drivers/net/tokenring: fix sparse warning: cast truncates bits from const value drivers/net/sfc: fix sparse warnings: Should it be static? drivers/net/igb: fix sparse warning: symbol shadows an earlier one ipv6: fix sparse warning: Using plain integer as NULL pointer x86: kexec/i386: fix sparse warnings: Using plain integer as NULL pointer x86: numa_32.c: fix sparse warning: Using plain integer as NULL pointer sound/oss: fix sparse warnings: different signedness sound/oss: fix sparse warning: symbol shadows an earlier one ALSA: sound/usb/usx2y: fix sparse warning: Should it be static? ALSA: sound/usb/usx2y: fix sparse warning: do-while statement is not a compound ... ALSA: sound/drivers/vx: fix sparse warning: different signedness ALSA: sound/pci/emu10k1: fix sparse warning: different signedness ALSA: sound/pci/hda: fix sparse warning: different signedness net/802: fix sparse warnings: context imbalance 9p: fix sparse warning: cast adds address space appletalk: fix warning: format not a string literal and no ... sysctl: fix sparse warning: Should it be static? decnet: fix sparse warnings: context imbalance decnet: fix sparse warnings: symbol shadows an earlier one inet fragments: fix sparse warning: context imbalance wanrouter: fix sparse warnings: context imbalance drivers/isdn/capi: fix sparse warning: context imbalance drivers/isdn/act2000: fix sparse warning: symbol shadows an earlier one drivers/isdn/hisax: fix sparse warning: Should it be static? drivers/isdn/hardware/icon: fix sparse warning: cast truncates bits drivers/isdn/hardware/eicon: fix sparse warnings: Should it be static? IOMMU-API: use ANSI style function declaration for 'iommu_found' xfs: move declaration to header file xfs: make symbols static xfs: include header files for prototypes drm/radeon: NULL noise: drivers/gpu/drm/radeon/radeon_*.c KVM: fix sparse warnings: context imbalance KVM: fix sparse warnings: Should it be static? GFS2: fix sparse warnings: constant is so big it is ... GFS2: fix sparse warning: Should it be static? USB: host: fix sparse warning: Using plain integer as NULL pointer trivial: NULL noise: drivers/media/dvb/frontends/drx397xD_fw.h trivial: NULL noise: drivers/mtd/tests/mtd_*test.c init/main.c: fix sparse warnings: context imbalance Hannes Hering (1): ehea: Fix: Remove adapter from adapter list in error path Hannes Reinecke (2): [SCSI] Check for deleted device in scsi_device_online() [SCSI] aic7xxx: leaves timer running on init failure Hans J. Koch (1): UIO: Add name attributes for mappings and port regions Hans Verkuil (194): V4L/DVB (10231): v4l2-subdev: add v4l2_ext_controls support V4L/DVB (10244): v4l2: replace a few snprintfs with strlcpy V4L/DVB (10246): saa6752hs: convert to v4l2_subdev. V4L/DVB (10247): saa7134: convert to the new v4l2 framework. V4L/DVB (10249): v4l2-common: added v4l2_i2c_tuner_addrs() V4L/DVB (10251): cx25840: add comments explaining what the init() does. V4L/DVB (10252): v4l2 doc: explain why v4l2_device_unregister_subdev() has to be called. V4L/DVB (10271): saa7146: convert to video_ioctl2. V4L/DVB (10272): av7110: test type field in VIDIOC_G_SLICED_VBI_CAP V4L/DVB (10291): em28xx: fix VIDIOC_G_CTRL when there is no msp34xx device. V4L/DVB (10313): saa7146: fix VIDIOC_ENUMSTD. V4L/DVB (10406): gspca: fix compiler warning V4L/DVB (10408): v4l2: fix incorrect hue range check V4L/DVB (10409): v4l: remove unused I2C_DRIVERIDs. V4L/DVB (10486): ivtv/cx18: fix g_fmt and try_fmt for raw video V4L/DVB (10487): doc: update hm12 documentation. V4L/DVB (10488): ivtv: cleanup naming conventions V4L/DVB (10489): doc: use consistent naming conventions for vdev and v4l2_dev. V4L/DVB (10490): v4l2: prefill ident and revision from v4l2_dbg_chip_ident. V4L/DVB (10496): saa7146: implement v4l2_device support. V4L/DVB (10497): saa7146: i2c adapdata now points to v4l2_device. V4L/DVB (10498): saa7146: the adapter class will be NULL when v4l2_subdev is used. V4L/DVB (10499): saa7146: convert saa7146 and mxb in particular to v4l2_subdev. V4L/DVB (10500): saa7146: setting control while capturing should return EBUSY, not EINVAL. V4L/DVB (10501): saa7146: prevent unnecessary loading of v4l2-common. V4L/DVB (10502): saa7146: move v4l2 device registration to saa7146_vv. V4L/DVB (10536): saa6588: convert to v4l2-i2c-drv-legacy.h V4L/DVB (10537): saa6588: convert to v4l2_subdev. V4L/DVB (10538): saa6588: add g_chip_ident support. V4L/DVB (10539): saa6588: remove legacy_class, not needed for saa6588 V4L/DVB (10540): cx2341x: fixed bug causing several audio controls to be no longer listed V4L/DVB (10542): v4l2-subdev: add querystd and g_input_status V4L/DVB (10544): v4l2-common: add comments warning that about the sort order V4L/DVB (10641): v4l2-dev: remove limit of 32 devices per driver in get_index() V4L/DVB (10642): vivi: update comment to reflect that vivi can now create more than 32 devs. V4L/DVB (10643): v4l2-device: allow a NULL parent device when registering. V4L/DVB (10644): v4l2-subdev: rename dev field to v4l2_dev V4L/DVB (10645): vivi: introduce v4l2_device and do several cleanups V4L/DVB (10646): vivi: controls are per-device, not global. V4L/DVB (10647): vivi: add slider flag to controls. V4L/DVB (10685): v4l2: add colorfx support to v4l2-common.c, and add to 'Changes' in spec. V4L/DVB (10686): v4l2: add V4L2_CTRL_FLAG_WRITE_ONLY flag. V4L/DVB (10687): v4l2-common/v4l2-spec: support/document write-only and button controls V4L/DVB (10691): v4l2-common: add v4l2_i2c_subdev_addr() V4L/DVB (10692): usbvision: convert to v4l2_device/v4l2_subdev. V4L/DVB (10698): v4l2-common: remove v4l2_ctrl_query_fill_std V4L/DVB (10700): saa7115: don't access reg 0x87 if it is not present. V4L/DVB (10701): saa7185: add colorbar support. V4L/DVB (10702): saa7115: add querystd and g_input_status support for zoran. V4L/DVB (10703): zoran: convert to video_ioctl2 and remove 'ready_to_be_freed' hack. V4L/DVB (10704): zoran: remove broken BIGPHYS_AREA and BUZ_HIMEM code, and allow for kmallocs > 128 kB V4L/DVB (10705): zoran: use slider flag with volume etc. controls. V4L/DVB (10706): zoran: fix field typo. V4L/DVB (10707): zoran: set bytesperline to 0 when using MJPEG. V4L/DVB (10708): zoran: remove old V4L1 ioctls, use v4l1-compat instead. V4L/DVB (10709): zoran: set correct parent of the video device. V4L/DVB (10710): zoran: cleanups in an attempt to make the source a bit more readable. V4L/DVB (10711): zoran: fix TRY_FMT support V4L/DVB (10712): zoran: fix G_FMT V4L/DVB (10713): zoran: if reqbufs is called with count == 0, do a streamoff. V4L/DVB (10714): zoran et al: convert zoran i2c modules to V4L2. V4L/DVB (10715): zoran: clean up some old V4L1 left-overs and remove the MAP_NR macro. V4L/DVB (10716): zoran: change buffer defaults to something that works with tvtime V4L/DVB (10717): zoran: TRY_FMT and S_FMT now do the same parameter checks. V4L/DVB (10718): bt866: convert to v4l2_subdev. V4L/DVB (10719): bt819: convert to v4l2_subdev. V4L/DVB (10720): bt819: that delay include is needed after all. V4L/DVB (10721): bt856: convert to v4l2_subdev. V4L/DVB (10722): ks0127: convert to v4l2_subdev. V4L/DVB (10723): ks0127: add supported ks0127 variants to the i2c device list. V4L/DVB (10724): saa7110: convert to v4l2_subdev. V4L/DVB (10725): saa7185: convert to v4l2_subdev. V4L/DVB (10726): vpx3220: convert to v4l2_subdev. V4L/DVB (10727): adv7170: convert to v4l2_subdev. V4L/DVB (10728): adv7175: convert to v4l2-subdev. V4L/DVB (10729): zoran: convert to v4l2_device/v4l2_subdev. V4L/DVB (10730): v4l-dvb: cleanup obsolete references to v4l1 headers. V4L/DVB (10731): zoran i2c modules: remove i2c autoprobing support. V4L/DVB (10732): zoran: s_jpegcomp should return a proper result, not 0. V4L/DVB (10733): zoran: increase bufsize to a value suitable for 768x576. V4L/DVB (10858): vino: convert to video_ioctl2. V4L/DVB (10859): vino: minor renames V4L/DVB (10860): saa7191: convert to v4l2-i2c-drv-legacy.h V4L/DVB (10861): vino/indycam/saa7191: convert to i2c modules to V4L2. V4L/DVB (10862): indycam: convert to v4l2_subdev V4L/DVB (10863): saa7191: convert to v4l2_subdev. V4L/DVB (10864): vino: introduce v4l2_device. V4L/DVB (10865): vino: convert to v4l2_subdev. V4L/DVB (10866): saa7191, indycam: remove compat code. V4L/DVB (10868): vino: add note that this conversion is untested. V4L/DVB (10873): w9968cf: add v4l2_device. V4L/DVB (10874): w9968cf/ovcamchip: convert to v4l2_subdev. V4L/DVB (10880): radio-aimslab: convert to v4l2_device. V4L/DVB (10881): radio-aztech: convert to v4l2_device. V4L/DVB (10882): radio-cadet: convert to v4l2_device. V4L/DVB (10883): radio-gemtek-pci: convert to v4l2_device. V4L/DVB (10884): radio-gemtek: convert to v4l2_device. V4L/DVB (10885): radio-maestro: convert to v4l2_device. V4L/DVB (10886): radio-maxiradio: convert to v4l2_device. V4L/DVB (10887): radio-rtrack2: convert to v4l2_device. V4L/DVB (10888): radio-sf16fmi: convert to v4l2_device. V4L/DVB (10889): radio-sf16fmr2: convert to v4l2_device. V4L/DVB (10890): radio-terratec: convert to v4l2_device. V4L/DVB (10891): radio-trust: convert to v4l2_device. V4L/DVB (10892): radio-typhoon: convert to v4l2_device. V4L/DVB (10893): radio-zoltrix: convert to v4l2_device. V4L/DVB (10894): ISA radio drivers: improve kernel log message V4L/DVB (10909): tvmixer: remove last remaining references to this deleted module. V4L/DVB (10910): videodev2.h: remove deprecated VIDIOC_G_CHIP_IDENT_OLD V4L/DVB (10912): vivi: fix compile warning. V4L/DVB (10914): v4l2: fix compile warnings when printing u64 value. V4L/DVB (10919): tlv320aic23b: use v4l2-i2c-drv.h instead of drv-legacy.h V4L/DVB (10920): v4l2-ioctl: fix partial-copy code. V4L/DVB (10921): msp3400: remove obsolete V4L1 code V4L/DVB (10959): radio: remove uaccess include V4L/DVB (10960): omap24xxcam: don't set vfl_type. V4L/DVB (10962): fired-avc: fix printk formatting warning. V4L/DVB (10965): ivtv: bump version V4L/DVB (10980): doc: improve the v4l2-framework documentation. V4L/DVB (10983): v4l2-common: add missing i2c_unregister_device. V4L/DVB (10987): cx23885: fix crash on non-netup cards V4L/DVB (10988): v4l2-dev: use parent field if the v4l2_device has no parent set. V4L/DVB (11021): v4l2-device: add a notify callback. V4L/DVB (11022): zoran/bt819: use new notify functionality. V4L/DVB (11044): v4l2-device: add v4l2_device_disconnect V4L/DVB (11045): v4l2: call v4l2_device_disconnect in USB drivers. V4L/DVB (11046): bttv: convert to v4l2_device. V4L/DVB (11047): cx88: convert to v4l2_device. V4L/DVB (11048): zoran: fix incorrect return type of notify function. V4L/DVB (11051): v4l-dvb: replace remaining references to the old mailinglist. V4L/DVB (11052): bt819: remove an unused header V4L/DVB (11053): saa7134: set v4l2_dev field of video_device V4L/DVB (11098): v4l2-common: remove incorrect MODULE test V4L/DVB (11100): au8522: fix compilation warning. V4L/DVB (11112): v4l2-subdev: add support for TRY_FMT, ENUM_FMT and G/S_PARM. V4L/DVB (11113): ov7670: convert to v4l2_subdev V4L/DVB (11114): cafe_ccic: convert to v4l2_device. V4L/DVB (11115): cafe_ccic: use v4l2_subdev to talk to the ov7670 sensor. V4L/DVB (11116): ov7670: cleanup and remove legacy code. V4L/DVB (11117): ov7670: add support to get/set registers V4L/DVB (11118): cafe_ccic: replace debugfs with g/s_register ioctls. V4L/DVB (11120): cafe_ccic: stick in a comment with a request for test results V4L/DVB (11253): saa7134: fix RTD Embedded Technologies VFG7350 support. V4L/DVB (11254): cs53l32a: remove legacy support. V4L/DVB (11255): dst_ca: fix compile warning. V4L/DVB (11256): dabusb: fix compile warning. V4L/DVB (11275): tvaudio: fix mute and s/g_tuner handling V4L/DVB (11276): tvaudio: add tda9875 support. V4L/DVB (11277): tvaudio: always call init_timer to prevent rmmod crash. V4L/DVB (11278): bttv: convert to v4l2_subdev since i2c autoprobing will disappear. V4L/DVB (11279): bttv: tda9875 is no longer used by bttv, so remove from bt8xx/Kconfig. V4L/DVB (11281): bttv: move saa6588 config to the helper chip config V4L/DVB (11282): saa7134: add RDS support. V4L/DVB (11283): saa6588: remove legacy code. V4L/DVB (11295): cx23885: convert to v4l2_device. V4L/DVB (11297): cx23885: convert to v4l2_subdev. V4L/DVB (11298): cx25840: remove legacy code for old-style i2c API V4L/DVB (11300): cx88: convert to v4l2_subdev. V4L/DVB (11301): wm8775: remove legacy code for old-style i2c API V4L/DVB (11302): tda9875: remove legacy code for old-style i2c API V4L/DVB (11303): tda7432: remove legacy code for old-style i2c API V4L/DVB (11304): v4l2: remove v4l2_subdev_command calls where they are no longer needed. V4L/DVB (11305): cx88: prevent probing rtc and ir devices V4L/DVB (11309): cx25840: cleanup: remove intermediate 'ioctl' step V4L/DVB (11310): cx18: remove intermediate 'ioctl' step V4L/DVB (11311): v4l: replace 'ioctl' references in v4l i2c drivers V4L/DVB (11312): tuner: remove V4L1 code from this driver. V4L/DVB (11313): v4l2-subdev: add enum_framesizes and enum_frameintervals. V4L/DVB (11314): au8522: remove unused I2C_DRIVERID V4L/DVB (11315): cx25840: fix 'unused variable' warning. V4L/DVB (11316): saa7191: tuner ops wasn't set. V4L/DVB (10982): cx231xx: fix compile warning V4L/DVB (10989): cx25840: cx23885 detection was broken V4L/DVB (11361): msp3400: remove i2c legacy code V4L/DVB (11362): saa7115: remove i2c legacy code V4L/DVB (11363): tvp5150: remove i2c legacy code. V4L/DVB (11364): tuner: remove i2c legacy code. V4L/DVB (11365): tvaudio: remove i2c legacy code V4L/DVB (11366): v4l: remove obsolete header and source V4L/DVB (11367): v4l2-common: remove legacy code V4L/DVB (11368): v4l2-subdev: move s_standby from core to tuner. V4L/DVB (11369): v4l2-subdev: add load_fw and use that instead of abusing core->init. V4L/DVB (11370): v4l2-subdev: move s_std from tuner to core. V4L/DVB (11371): v4l2: remove legacy fields in v4l2-i2c-drv.h. V4L/DVB (11372): v4l2: use old-style i2c API for kernels < 2.6.26 instead of < 2.6.22 V4L/DVB (11374): v4l2-common: add v4l2_i2c_new_probed_subdev_addr V4L/DVB (11373): v4l2-common: add explicit v4l2_device pointer as first arg to new_(probed)_subdev V4L/DVB (11375): v4l2: use v4l2_i2c_new_probed_subdev_addr where appropriate. V4L/DVB (11376): tvaudio.h: add static inline to retrieve the list of possible i2c addrs. V4L/DVB (11377): v4l: increase version numbers of drivers converted to v4l2_subdev. V4L/DVB (11379): mxb: fix copy-and-paste bug in mute. V4L/DVB (11380): v4l2-subdev: change s_routing prototype V4L/DVB (11381): ivtv/cx18: remove VIDIOC_INT_S_AUDIO_ROUTING debug support. V4L/DVB (11390): 2-dev.c: return 0 for NULL open and release callbacks Hans Werner (1): V4L/DVB (10392): lnbp21: documentation about the system register Hans de Goede (4): V4L/DVB (11221): gspca - sonixj: Prefer sonixj instead of sn9c102 for 0471:0327. i2c-i801: Instantiate FSC hardware montioring chips hwmon: (fschmd) Add support for the FSC Syleus IC hwmon: (fschmd) Add support for the FSC Hades IC Hans-Christian Egtvedt (25): ALSA: Add ALSA driver for Atmel Audio Bitstream DAC ALSA: Add ALSA driver for Atmel AC97 controller ALSA: Add Atmel ALSA drivers directory atmel-mci: fix sdc_reg typo avr32: fix 15-bit LCDC pin mask to use MSB lines avr32: add pin mask for 18-bit color on the LCD controller avr32: set pin mask to alternative 18 bpp for EVKLCD10x boards avr32: configure MCI detect and write protect pins for EVKLCD10x boards avr32: use GPIO line PB15 on EVKLCD10x boards for backlight avr32: fix timing LCD parameters for EVKLCD10X boards atmel-usba-udc: use gpio_is_valid() to check vbus_pin I/O line avr32: use gpio_is_valid() to check USBA vbus_pin I/O line avr32: at32ap700x: setup DMA for ABDAC in the machine code avr32: at32ap700x: setup DMA for AC97C in the machine code dw_dmac: add cyclic API to DW DMA driver ALSA: snd-atmel-ac97c: cleanup register definitions ALSA: snd-atmel-ac97c: remove dead break statements after return in switch case ALSA: snd-atmel-ac97c: do not overwrite OCA and ICA when assigning channels ALSA: snd-atmel-ac97c: set correct size for buffer hardware parameter ALSA: snd-atmel-ac97c: enable interrupts to catch events for error reporting ALSA: snd-atmel-ac97c: do a proper reset of the external codec ALSA: snd-atmel-ac97c: cleanup registers when removing driver ALSA: snd-atmel-ac97c: replace bus_id with dev_name() ALSA: snd-atmel-abdac: replace bus_id with dev_name() ALSA: snd-atmel-abdac: increase periods_min to 6 instead of 4 Hantzis Fotis (1): tcp: tcp_init_wl / tcp_update_wl argument cleanup Harald Jenny (1): sony-laptop: VGN-A317M hotkey support Harald Welte (2): panasonic-laptop: Fix autoloading panasonic-laptop: use snprintf with PAGE_SIZE in sysfs attributes Harish Zunjarrao (2): [SCSI] qla2xxx: Use byte-address while reading FC boot code versions from flash. [SCSI] qla2xxx: Get FLT address in dword format. Harry Ciao (8): edac: AMD8111 driver header file edac: AMD8111 driver source file edac: Add edac_pci_alloc_index() pci: Add AMD8111 PCI Bridge PCI Device ID edac: AMD8131 driver header file edac: AMD8131 driver source file edac: AMD8131 driver Kconfig & Makefile edac: AMD8111 driver Kconfig & Makefile Hartley Sweeten (2): [ARM] 5371/1: ep93xx: add i2c device to edb9307a [ARM] 5406/1: ep93xx: remove unneeded header in ohci-ep93xx.c Harvey Harrison (19): IB: Remove __constant_{endian} uses typhoon: replace users of __constant_{endian} bnx2: annotate bp->phy_lock functions prism54: remove private implementation of le32_add_cpu wimax: replace uses of __constant_{endian} net: replace uses of __constant_{endian} wireless: replace uses of __constant_{endian} ALSA: echoaudio - replace uses of __constant_{endian} rndis: remove private wrapper of __constant_cpu_to_le32 net: replace __constant_{endian} uses in net headers wimax: replace uses of __constant_{endian} nfs: replace uses of __constant_{endian} PCI: __FUNCTION__ is gcc-specific, use __func__ USB: replace uses of __constant_{endian} netfilter: fix endian bug in conntrack printks netpoll: store local and remote ip in net-endian kernel: remove HIPQUAD() ntfs: remove private wrapper of endian helpers [SCSI] replace __inline with inline Heiko Carstens (26): sysrq: include interrupt.h instead of irq.h s390: remove arch specific smp_send_stop() hwrng: timeriomem - Breaks an allyesconfig build on s390: qeth: fix wait_event_timeout handling [S390] page fault: invoke oom-killer [S390] dasd: enable compat ioctls [S390] move sysinfo.c from drivers/s390 to arch/s390/kernel [S390] delete drivers/s390/ebcdic.c [S390] arch/s390/kernel/process.c: fix whitespace damage [S390] cputime: initialize per thread timer values on fork [S390] ftrace: dont trace machine check handler [S390] split/move machine check handler code [S390] Remove CONFIG_MACHCHK_WARNING. [S390] convert bitmap definitions to C [S390] move EXPORT_SYMBOLs to definitions [S390] cio/crw: add/fix locking [S390] cio: ensure single load of irq handler pointer [S390] bitops: remove likely annotations [S390] use compiler builtin versions of strlen/strcpy/strcat [S390] smp: fix memory leak on __cpu_up [S390] smp: perform initial cpu reset before starting a cpu [S390] fix clock comparator save area usage sysrq: include interrupt.h instead of irq.h [S390] fix hypfs build failure ETHOC: fix build breakage on s390 Btrfs: fix __ucmpdi2 compile bug on 32 bit builds Helge Deller (10): parisc: fix usage of 32bit PTE page table entries on 32bit kernels parisc: use constants instead of numbers in assembly parisc: allow to build with 16k default kernel page size parisc: add LATENCYTOP_SUPPORT and CONFIG_STACKTRACE_SUPPORT parisc: simplify sys_clone() parisc: add ftrace (function and graph tracer) functionality parisc: blink all or loadavg LEDs on oops parisc: document light weight syscall ABI parisc: oops_enter()/oops_exit() in die() parisc: fix "make tar-pkg" Helmut Schaa (11): ath5k: discard 11g caps if reported by an ar5211 eeprom iwl3945: report killswitch changes even if the interface is down iwl3945: fix some warnings when compiled without debug iwlagn: fix hw-rfkill while the interface is down iwlagn: clean up error path in iwl_pci_probe libipw: fix debug output ipw2x00: remove duplicated defines ipw2x00: Use IE definitions from linux/ieee80211.h ipw2x00: remove obsolete enums mac80211: handle failed scan requests in STA mode mac80211: start pending scan after probe/auth/assoc timed out Hendrik Brueckner (3): [S390] hvc_iucv: Update and add missing kernel messages [S390] hvc_iucv: Provide IUCV z/VM user ID filtering [S390] remove duplicate nul-termination of string Henk Stegeman (1): net/fec_mpc52xx: Migrate to net_device_ops. Henrik Austad (2): sched: idle_at_tick is only used when CONFIG_SMP is set documentation: ignore byproducts from latex Henrique de Moraes Holschuh (12): thinkpad-acpi: update copyright notices thinkpad-acpi: drop ibm-acpi alias thinkpad-acpi: documentation cleanup thinkpad-acpi: cleanup debug helpers thinkpad-acpi: add missing log levels thinkpad-acpi: add new debug helpers and warn of deprecated atts thinkpad-acpi: remove HKEY disable functionality thinkpad-acpi: restrict access to some firmware LEDs thinkpad-acpi: enhanced debugging messages for rfkill subdrivers thinkpad-acpi: enhanced debugging messages for the hotkey subdriver thinkpad-acpi: enhanced debugging messages for the fan subdriver thinkpad-acpi: rework brightness support Herbert Valerio Riedel (1): hwmon: add support for GMT G760A fan speed PWM controller Herbert Xu (35): e1000e: Invoke VLAN GRO handler ixgbe: Replace LRO with GRO sfc: Replace LRO with GRO igb: Replace LRO with GRO cxgb3: Replace LRO with GRO gro: Move common completion code into helpers gro: Avoid copying headers of unmerged packets gro: Do not merge paged packets into frag_list gro: Open-code memcpy in napi_fraginfo_skb gro: Fix handling of imprecisely split packets ipv4: Delete redundant sk_family assignment net: Partially allow skb destructors to be used on receive path net: Reexport sock_alloc_send_pskb tun: Limit amount of queued packets per device gro: Fix frag_list merging on imprecisely split packets gro: Remember number of held packets instead of counting every time gro: Optimise Ethernet header comparison gro: Optimise IPv4 packet reception gro: Optimise TCP packet reception tun: Fix merge error crypto: shash - Remove superfluous check in init_tfm crypto: shash - Add crypto_shash_blocksize crypto: sha-s390 - Switch to shash crypto: api - crypto_alg_mod_lookup either tested or untested crypto: api - Fix crypto_alloc_tfm/create_create_tfm return convention crypto: skcipher - Avoid infinite loop when cipher fails selftest crypto: aead - Avoid infinite loop when nivaead fails selftest crypto: testmgr - Test skciphers with no IVs tcp: Always set urgent pointer if it's beyond snd_nxt nlattr: Fix build error with NET off GRO: Move netpoll checks to correct location gro: Fix vlan/netpoll check again crypto: sha512-s390 - Add missing block size GRO: Disable GRO on legacy netif_rx path gso: Fix support for linear packets Herton Ronaldo Krzesinski (16): ALSA: hda - Consider additional capture source/selector in ALC889 ALSA: hda - make alc882_auto_init_input_src aware of selectors ALSA: hda - Additional pin nids for STAC92HD71Bx and STAC92HD75Bx codecs ALSA: hda - Dynamic detection of dmics/dmuxes/smuxes in stac92hd71bxx ALSA: hda - Don't call stac92xx_parse_auto_config with wrong dig_in ALSA: hda - Bind new ecs mobo id (1019:2950) to model=ecs202 ALSA: hda - Don't touch non-existent port f on 4-port 92hd71bxx codecs ALSA: hda - Cleanup setting of pin_configs in patch_stac927x ALSA: hda - Fix speaker output on HP DV4 1155-SE ALSA: hda - Add 4 channel mode for 3stack-hp model (ALC888) ALSA: hda - Add headphone automute support for 3stack-hp model (ALC888) ALSA: hda - Map 3stack-hp model (ALC888) for HP Educ.ar mac80211: deauth before flushing STA information n411: add missing Makefile entry Staging: agnx: mac80211 hw config change flags Staging: rtl8187se: fix build warnings Hidetoshi Seto (1): x86, mce: remove incorrect __cpuinit for intel_init_cmci() Hiroshi DOYU (10): omap mailbox: cleanup omap2 register definition with macro omap mailbox: add initial omap3 support omap mailbox: print hardware revision at startup omap mailbox: fix empty struct device for omap_mbox omap mailbox: fix empty struct device for omap1 omap mailbox: fix empty struct device for omap2 omap mailbox: add save_/restore_ctx() for PM omap mailbox: move mailbox.h into mailbox.c omap mailbox: convert sequence bit checking to module paramter omap mailbox: remove unnecessary header file inclusion Hiroshi Shimamoto (21): x86: uaccess: fix style problems x86: uaccess: rename __put_user_u64() to __put_user_asm_u64() x86: uaccess: introduce try and catch framework x86: signal: use {get|put}_user_try and catch x86: ia32_signal: use {get|put}_user_try and catch x86: intel_cacheinfo: fix compiler warning x86: uaccess: fix compilation error on CONFIG_M386 x86: mm: introduce helper function in fault.c x86: uaccess: use errret as error value in __put_user_size() x86: syscalls.h: remove asmlinkage from declaration of sys_rt_sigreturn() x86: ia32_signal: remove unused debug code x86: ia32_signal: introduce GET_SEG() macro x86: ia32_signal: introduce {get|set}_user_seg() x86: signal: add __user annotation x86: signal: intrroduce get_sigframe() and replace get_sigstack() x86: signal: use 16 bytes boundary for rt_sigframe x86: signal: unify get_sigframe() x86: signal: introduce helper align_sigframe() x86, signals: fix xine & firefox bustage x86: signal: check signal stack overflow properly x86: signal: check sas_ss_size instead of sas_ss_flags() Hisashi Hifumi (3): GFS2: Pagecache usage optimization on GFS2 xfs: pagecache usage optimization ocfs2: Pagecache usage optimization on ocfs2 Hitoshi Mitake (1): edac: add more verbose debug info Holger Eitzenberger (7): netfilter: ctnetlink: add callbacks to the per-proto nlattrs netlink: add nla_policy_len() netfilter: limit the length of the helper name netfilter: ctnetlink: allocate right-sized ctnetlink skb netfilter: nf_conntrack: add generic function to get len of generic policy netfilter: nf_conntrack: calculate per-protocol nlattr size ctnetlink: compute generic part of event more acurately Holger Schurig (7): arm/imx2x: new IOMUX definitions arm/imx21: add kbuild support for the Freescale i.MX21 arm/imx2x: removes a bunch of sparse-warnings arm/imx2x: split i.MX21/i.MX27 register definitions arm/imx21: clock support for i.MX21 arm/imx21: Framebuffer support for i.MX21 arm/imx: Kconfig beautification Hollis Blanchard (17): KVM: ppc: move struct kvmppc_44x_tlbe into 44x-specific header KVM: ppc: cosmetic changes to mmu hook names KVM: ppc: small cosmetic changes to Book E DTLB miss handler KVM: ppc: change kvmppc_mmu_map() parameters KVM: ppc: turn tlb_xlate() into a per-core hook (and give it a better name) KVM: ppc: rename 44x MMU functions used in booke.c KVM: ppc: remove last 44x-specific bits from booke.c KVM: ppc: use macros instead of hardcoded literals for instruction decoding KVM: ppc: split out common Book E instruction emulation KVM: ppc: Add dbsr in kvm_vcpu_arch KVM: ppc: No need to include core-header for KVM in asm-offsets.c currently KVM: ppc: ifdef iccci with CONFIG_44x KVM: ppc: E500 core-specific code KVM: ppc: Add kvmppc_mmu_dtlb/itlb_miss for booke KVM: ppc: distinguish between interrupts and priorities KVM: ppc: Add extra E500 exceptions KVM: ppc: remove debug support broken by KVM debug rewrite Huang Weiyi (15): dnet: remove duplicated #include atl1c: remove duplicated #include MIPS: compat: Remove duplicated #include avr32: remove duplicated #include USB: gadget: remove duplicated #include [S390] remove duplicated #includes dnet: remove unused #include glge: remove unused #include Staging: remove duplicated #include's mfd: remove duplicated #include from pcf50633 smsc911x: remove unused #include V4L/DVB: usbvision: remove unused #include V4L/DVB: zr364xx: remove unused #include powerpc: Remove duplicated #include's tracing, x86: remove duplicated #include Huang Ying (12): x86: kexec: Use one page table in x86_64 machine_kexec x86, mce: fix a race condition in mce_read() crypto: aes - Move key_length in struct crypto_aes_ctx to be the last field crypto: aes - Export x86 AES encrypt/decrypt functions crypto: cryptd - Add support to access underlying blkcipher crypto: aes-ni - Add support to Intel AES-NI instructions for x86_64 platform crypto: api - Use dedicated workqueue for crypto subsystem crypto: cryptd - Per-CPU thread implementation based on kcrypto_wq crypto: chainiv - Use kcrypto_wq instead of keventd_wq x86, kexec: fix kexec x86 coding style x86, kexec: x86_64: add identity map for pages at image->start x86, kexec: x86_64: add kexec jump support for x86_64 Hugh Dickins (6): sysfs: fix some bin_vm_ops errors compat_do_execve should unshare_files fix setuid sometimes doesn't fix setuid sometimes wouldn't mm: page_mkwrite change prototype to match fault: fix sysfs shmem: writepage directly to swap Hugo Villeneuve (4): ASoC: DaVinci: Fix SFFSDR compilation error. ASoC: Davinci: Fix incorrect machine type for SFFSDR board ALSA: ASoC: Davinci: Replaced DAI format RIGHT_J by DSP_B for SFFSDR ALSA: ASoC: Davinci: Updated sffsdr_hw_params() function to new format Hunter Adrian (1): UBIFS: fix compiler warnings ISHIKAWA Mutsumi (1): sony-laptop: detect the ICH9 chipset as Type3 Ian Abbott (13): UIO: Take offset into account when determining number of pages that can be mapped Staging: comedi: add amplc_pc236 driver Staging: comedi: add adv_pci1723 driver Staging: comedi: add ampl_dio200 driver Staging: comedi: add amplc_pc263 driver Staging: comedi: add amplc_pci224 driver Staging: comedi: new devices for ni_pcimio.c Staging: comedi: Add a module parameter 'comedi_autoconfig'. Staging: comedi: Make comedi_auto_config() succeed when auto-configuration disabled. Staging: comedi: comedi_rt_task_context_t fix Staging: comedi: Use explicit value for enumerated constant INSN_CONFIG_GET_HARDWARE_BUFFER_SIZE. Staging: comedi: newer gcc warning fixes Staging: comedi: comedi_open: Fix null pointer dereference. Ian Campbell (7): swiotlb: range_needs_mapping should take a physical address. swiotlb: do not use sg_virt() x86: rename arch/x86/kernel/pci-swiotlb_64.c => pci-swiotlb.c xen: explicitly initialise the cpu field of irq_info xen: expose enable_IO_APIC for 32-bit xen: fix xen_flush_tlb_others x86, xen: record and display initiator of each multicall when debugging Ian Kent (3): autofs4: cleanup expire code duplication autofs4: fix lookup deadlock autofs4: fix kernel includes Ian Molton (8): ASoC: dapm: Allow explictly named mixer controls ASoC: cleanup duplicated code. ASoC: Driver for the WM9705 AC97 codec. ASoC: machine driver for Toshiba e750 ASoC: machine driver for Toshiba e800 ASoC: machine support for Toshiba e740 PDA ASoC: fixes to caching implementations ASoC: Fix WM9705 capture switch name Igor M. Liplianin (18): V4L/DVB (10266): Add support for TurboSight TBS6920 DVB-S2 PCI-e card. V4L/DVB (10267): Add support for TeVii S470 DVB-S2 PCI-e card. V4L/DVB (10268): Proper implement set_voltage in cx24116. V4L/DVB (10269): Add support for DVBWorld DVBS2 PCI-e 2005. V4L/DVB (10413): Bug fix: Restore HVR-4000 tuning. V4L/DVB (10743): dm1105: not demuxing from interrupt context. V4L/DVB (10744): dm1105: infrared remote code is remaked. V4L/DVB (10799): Add support for ST STV6110 silicon tuner. V4L/DVB (10800): Add support for ST LNBH24 LNB power controller. V4L/DVB (10801): Add headers for ST STV0900 dual demodulator. V4L/DVB (10802): Add more headers for ST STV0900 dual demodulator. V4L/DVB (10803): Add core code for ST STV0900 dual demodulator. V4L/DVB (10804): Add support for ST STV0900 dual demodulator. V4L/DVB (10805): Add support for NetUP Dual DVB-S2 CI card V4L/DVB (10808): Fix typo in lnbp21.c V4L/DVB (10871): stv0900: delete debug messages not related to stv0900 tuning algorythm V4L/DVB (11054): Shorten some lines in stv0900 to less then 81 characters V4L/DVB (11055): Fix typo in stv0900 Ilgu Hong (3): [SCSI] scsi dh alua: fix group id masking [SCSI] scsi dh alua: add intel Multi-Flex device [SCSI] scsi dh alua: handle report luns data changed in check sense callout Ilpo Järvinen (29): ipmr: use goto to common label instead of opencoding ax25: more common return path joining ipv6/ndisc: join error paths ipv6/addrconf: common code located net/sunrpc/xprtsock.c: some common code found tcp: don't backtrack to sacked skbs tcp: fix lost_cnt_hint miscounts tcp: deferring in middle of queue makes very little sense tcp: Don't clear hints when tcp_fragmenting tcp: fix corner case issue in segmentation during rexmitting tcp: remove redundant code from tcp_mark_lost_retrans tcp: separate timeout marking loop to it's own function tcp: cleanup ca_state mess in tcp_timer tcp: drop unnecessary local var in collapse htcp: merge icsk_ca_state compare tcp: add helper for AI algorithm tcp: kill eff_sacks "cache", the sole user can calculate itself tcp: in sendmsg/pages open code the real goto target tcp: get rid of two unnecessary u16s in TCP skb flags copying tcp: remove pointless .dsack/.num_sacks code tcp: kill dead end_seq variable in clean_rtx_queue tcp: consolidate paws check tcp: don't check mtu probe completion in the loop tcp: simplify tcp_current_mss tcp: cache result of earlier divides when mss-aligning things tcp: make sure xmit goal size never becomes zero net/*: use linux/kernel.h swap() tcp: add helper for counter tweaking due mid-wq change tcp: miscounts due to tcp_fragment pcount reset Ilya Yanok (3): powerpc: Rework dma-noncoherent to use generic vmalloc layer qong: basic support for Dave/DENX QongEVB-LITE board mxc: add arch_reset() function Inaky Perez-Gonzalez (7): wimax/i2400m: convert to net_device_ops wimax/i2400m: add the ability to fallback to other firmware files if the default is not there wimax/i2400m: drop support for deprecated major fw interface, add for new minor wimax/i2400m: firmware_check() encodes the firmware version in i2400m->fw_version wimax/i2400m: allow control of the base-station idle mode timeout wimax/i2400m: support extended data RX protocol (no need to reallocate skbs) wimax/i2400m: implement RX reorder support Indika Katugampala (1): V4L/DVB (10528): em28xx: support added for IO-DATA GV/MVP SZ - EMPIA-2820 chipset Ingo Molnar (553): x86: stackprotector & PARAVIRT fix x86: fix stackprotector canary updates during context switches x86: fix canary of the boot CPU's idle task panic: print more informative messages on stackprotect failure panic: print out stacktrace if DEBUG_BUGVERBOSE x86: if stackprotector is enabled, thn use stack-protector-all by default stackprotector: include files stackprotector: add boot_init_stack_canary() x86: fix the stackprotector canary of the boot CPU x86: stackprotector: mix TSC to the boot canary x86: unify stackprotector features Merge branch 'linus' into stackprotector stackprotector: remove self-test Merge branch 'linus' into stackprotector Merge branch 'linus' into timers/hrtimers Merge branches 'tracing/docs', 'tracing/function-graph-tracer' and 'linus' into tracing/core tracing/ftrace: make trace_find_cmdline() generally available tracing/selftest: remove TRACE_CONT reference Merge branch 'topic/kmemtrace' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 into tracing/kmemtrace kmemtrace: move #include lines relayfs: replace BUG() with WARN_ON() in relay_late_setup_files() tracing, kvm: change MARKERS to select instead of depends on tracing/kmemtrace: export kmemtrace_mark_alloc_node() / kmemtrace_mark_free() Merge branch 'linus' into tracing/kmemtrace Merge branch 'tracing/kmemtrace' into tracing/kmemtrace2 Merge branch 'linus' into stackprotector tracing/kmemtrace: fix typo Merge branch 'linus' into tracing/kmemtrace2 kmemtrace: add kmemtrace_init() Merge branches 'tracing/kmemtrace2' and 'tracing/ftrace' into tracing/urgent Merge branch 'linus' into x86/setup-lzma bzip2/lzma: make flush_buffer() unconditional Merge branch 'linus' into x86/cleanups Merge branch 'linus' into core/iommu Merge commit 'v2.6.29-rc1' into tracing/urgent Merge commit 'v2.6.29-rc1' into irq/urgent Merge branch 'sched/latest' of git://git.kernel.org/pub/scm/linux/kernel/git/ghaskins/linux-2.6-hacks into sched/rt Merge commit 'v2.6.29-rc1' into x86/cleanups Merge commit 'v2.6.29-rc1' into timers/hrtimers x86: change the default cache size to 64 bytes Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/travis/linux-2.6-cpus4096-for-ingo into cpus4096 tracing: trace_stat.c cleanup x86: fix broken flush_tlb_others_ipi(), fix Merge branches 'cpus4096', 'x86/cleanups' and 'x86/urgent' into x86/percpu Merge branch 'linus' into cpus4096 fix: crash: IP: __bitmap_intersects+0x48/0x73 Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/travis/linux-2.6-cpus4096-for-ingo into cpus4096 Merge branch 'linus' into core/iommu sched: fix !CONFIG_SCHEDSTATS build failure percpu: add optimized generic percpu accessors Merge branch 'linus' into irq/genirq irq: provide debug_poll_all_shared_irqs() method under CONFIG_DEBUG_SHIRQ Merge branch 'tj-percpu' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/percpu Merge branch 'core/percpu' into stackprotector x86, rdc321x: remove/move leftover files Merge branch 'tracing/ftrace'; commit 'v2.6.29-rc2' into tracing/core Merge branch 'stackprotector' into core/percpu Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/travis/linux-2.6-cpus4096-for-ingo into cpus4096 x86: fully honor "nolapic", fix Merge branch 'tj-percpu' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/percpu x86, cpumask: fix tlb flush race Merge commit 'v2.6.29-rc2' into x86/mm Merge branch 'tj-percpu' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/percpu Merge branch 'cpus4096' into core/percpu x86, mm: move tlb.c to arch/x86/mm/ x86: uv cleanup, build fix Merge branch 'x86/mm' into core/percpu x86: make x86_32 use tlb_64.c, build fix, clean up X86_L1_CACHE_BYTES x86: uv cleanup, build fix #2 Merge branch 'tracing/ftrace' into tracing/core Merge branch 'tj-percpu' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/percpu x86, xen: fix hardirq.h merge fallout Merge branch 'tracing/ftrace' into tracing/core Merge branches 'tracing/ftrace' and 'tracing/function-graph-tracer' into tracing/core x86, debug: remove early_printk() #ifdefs from head_32.S x86: improve early fault/irq printout Merge branch 'linus' into core/percpu Merge branch 'tj-percpu' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/percpu Merge branches 'tracing/blktrace', 'tracing/kmemtrace' and 'tracing/urgent' into tracing/core Merge branch 'core/percpu' into x86/core Merge branches 'x86/asm', 'x86/cleanups', 'x86/cpudetect', 'x86/debug', 'x86/doc', 'x86/header-fixes', 'x86/mm', 'x86/paravirt', 'x86/pat', 'x86/setup-v2', 'x86/subarch', 'x86/uaccess' and 'x86/urgent' into x86/core x86, genapic: refactor genapic_64.h x86, genapic: refactor genapic_32.h x86, genapic: unify struct genapic x86, genapic: finish unification x86, genapic: cleanups x86, genapic: provide IPI callbacks unconditionally x86: rename 'genapic' to 'apic' x86: clean up genapic_flat x86: clean up genapic_phys_flat x86: clean up apic_x2apic_uv_x x86: clean up apic_x2apic_phys x86: clean up apic_x2apic_cluster x86, genapic: cleanup 32-bit apic_default template x86, genapic: cleanup 32-bit apic_bigsmp template x86, genapic: cleanup 32-bit apic_numaq template x86, genapic: cleanup 32-bit apic_es7000 template x86, genapic: cleanup 32-bit apic_summit template x86: remove APIC_INIT / APICFUNC / IPIFUNC x86: clean up apic->acpi_madt_oem_check methods x86: clean up apic->apic_id_registered() methods x86, genapic: rename int_delivery_mode, et. al. x86, apic: remove IRQ_DEST_MODE / IRQ_DELIVERY_MODE x86, apic: remove DEFAULT_IRQ_DELIVERY_MODE and DEFAULT_IRQ_DEST_MODE x86, apic: remove SUMMIT_IRQ_DELIVERY_MODE and SUMMIT_IRQ_DEST_MODE x86, apic: remove NUMAQ_IRQ_DELIVERY_MODE and NUMAQ_IRQ_DEST_MODE x86, apic: remove BIGSMP_IRQ_DELIVERY_MODE and BIGSMP_IRQ_DEST_MODE x86, apic: remove ES7000_IRQ_DELIVERY_MODE and ES7000_IRQ_DEST_MODE x86, apic: remove IRQ_DEST_MODE x86, apic: clean up target_cpus methods x86, apic: clean up / remove TARGET_CPUS x86: clean up esr_disable() methods x86: rename ->ESR_DISABLE to ->disable_esr x86: clean up the APIC_DEST_LOGICAL logic x86, apic: rename genapic::apic_destination_logical to genapic::dest_logical x86, apic: clean up check_apicid*() callbacks x86, apic: remove no_balance_irq and no_ioapic_check flags x86, apic: clean up ->vector_allocation_domain() x86, apic: clean up ->init_apic_ldr() x86, apic: clean up ->ioapic_phys_id_map() x86, apic: clean up ->setup_apic_routing() x86, apic: streamline the ->multi_timer_check() quirk x86, apic: clean up ->apicid_to_node() x86, apic: clean up ->cpu_to_logical_apicid() x86, apic: clean up ->cpu_present_to_apicid() x86, apic: clean up ->apicid_to_cpu_present() x86: refactor ->setup_portio_remap() subarch methods x86: refactor ->check_phys_apicid_present() subarch methods x86: refactor ->enable_apic_mode() subarch methods x86, es7000: clean up es7000_enable_apic_mode() x86, apic: unify phys_pkg_id() x86, apic: refactor ->phys_pkg_id() x86, smp: clean up mps_oem_check() x86, mpparse: call the generic quirk handlers early x86: consolidate the ->mps_oem_check() code x86, apic: refactor ->get_apic_id() & GET_APIC_ID() x86, apic: refactor ->apic_id_mask & APIC_ID_MASK x86, apic: get rid of *_APIC_ID_MASK definitions x86, apic: refactor ->cpu_mask_to_apicid*() x86, apic: untangle the send_IPI_*() jungle x86, smp: clean up ->trampoline_phys_low/high handling x86: set ->trampoline_phys_low/high on 64-bit too x86, smp: refactor ->wait_for_init_deassert() x86, smp: refactor ->smp_callin_clear_local_apic() methods x86, smp: refactor ->store/restore_NMI_vector() methods x86, smp: remove ->restore_NMI_vector() x86, smp: refactor ->inquire_remote_apic() methods x86, ES7000: consolidate the APIC code x86, smp: eliminate asm/mach-default/mach_wakecpu.h x86: eliminate asm/mach-*/mach_mpparse.h x86: remove mach_mpspec.h x86: remove mach_apicdef.h x86, smp: refactor ->wake_cpu x86, numaq: consolidate code x86, summit: consolidate code x86, summit: consolidate code, fix x86: remove mach_apic.h x86, ES7000: Consolidate code x86, NUMAQ: Consolidate code x86, bigsmp: consolidate code x86, bigsmp: consolidate header code x86, smp: remove mach_ipi.h x86: remove subarchitecture support code x86: move mach-default/*.h files to asm/ x86: remove subarchitecture support x86/Voyager: clean up BROKEN Kconfig reference x86: disable Voyager temporarily x86/Voyager: remove MCA Kconfig quirk x86/Voyager: remove NATSEMI Kconfig quirk x86/Voyager: remove KVM Kconfig quirk x86/Voyager: remove KGDB Kconfig quirk x86/Voyager: remove HIBERNATION Kconfig quirk x86/Voyager: remove ARCH_SUSPEND_POSSIBLE Kconfig quirk x86: replace CONFIG_X86_SMP with CONFIG_SMP x86: generalize boot_cpu_id x86/Voyager: remove X86_HT Kconfig quirk x86/Voyager: remove X86_BIOS_REBOOT Kconfig quirk x86/Voyager: remove X86_FIND_SMP_CONFIG Kconfig quirk x86/VisWS: remove Kconfig quirk x86/Voyager: remove VMI Kconfig quirk x86/Voyager: remove KVM_CLOCK quirk x86/Voyager: remove KVM_GUEST quirk x86/Voyager: remove PARAVIRT Kconfig quirk x86/Voyager: remove APIC/IO-APIC Kbuild quirk x86/Voyager: remove MCE quirk x86/Voyager: remove HOTPLUG_CPU Kconfig quirk x86/Voyager: remove power management Kconfig quirk x86/Voyager: remove ISA quirk x86: cleanup, introduce CONFIG_NON_STANDARD_PLATFORMS x86: move ELAN to the NON_STANDARD_PLATFORM section x86: move VOYAGER to the NON_STANDARD_PLATFORM section x86: move non-standard 32-bit platform Kconfig entries x86: move X86_VSMP from subarch menu x86: remove the subarch menu x86: rename X86_GENERICARCH to X86_32_NON_STANDARD x86/Voyager: move to the X86_32_NON_STANDARD code section Merge branch 'tracing/ftrace' into tracing/core Revert "generic, x86: fix __per_cpu_load relocation" Merge branch 'linus' into core/percpu x86, apic, 32-bit: add self-IPI methods x86, irq: add LOCAL_PERF_VECTOR x86, apic: clean up header section x86: update copyrights x86, apic: unify the APIC vector enumeration x86, apic: clean up spurious vector sanity check x86, voyager: move Voyager-specific defines to voyager.h x86, irqs, voyager: remove Voyager quirk x86, irq: add IRQ layout comments x86, irq_vectors.h: remove needless includes x86, irq: describe NR_IRQ sizing details, clean up x86, vm86: clean up invalid_vm86_irq() Merge branch 'tj-percpu' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/percpu Merge branches 'tracing/ftrace', 'tracing/kmemtrace' and 'linus' into tracing/core Merge branch 'core/header-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jaswinder/linux-2.6-tipclean into core/header-fixes Merge branch 'core/header-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jaswinder/linux-2.6-tip into core/header-fixes x86: document 64-bit and 32-bit function call convention ABI Merge branches 'tracing/blktrace', 'tracing/ftrace', 'tracing/urgent' and 'linus' into tracing/core printk: introduce printk_once() Merge branches 'tracing/ftrace' and 'linus' into tracing/core Merge branch 'tj-percpu' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/percpu smp, generic: introduce arch_disable_smp_support() instead of disable_ioapic_setup() x86, apic: explain the purpose of max_physical_apicid smp, generic: introduce arch_disable_smp_support(), build fix Merge branch 'x86/urgent' into x86/apic x86, numaq: cleanups x86: clean up arch/x86/Kconfig* ring_buffer: remove unused flags parameter, fix Merge branch 'linus' into x86/mm Merge branch 'core/header-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jaswinder/linux-2.6-tip into core/header-fixes Merge branch 'linus' into core/locking Merge branches 'sched/rt' and 'sched/urgent' into sched/core Merge branches 'timers/clockevents', 'timers/hpet', 'timers/hrtimers' and 'timers/urgent' into timers/core Merge commit 'v2.6.29-rc4' into tracing/core Merge branch 'tip/tracing/core/devel' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branch 'jsgf/x86/unify' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen into x86/headers x86: early_printk.c - fix pgtable.h unification fallout x86, pgtable.h: macro-ify *_page() methods x86, pgtable.h: fix 2-level 32-bit build tracing/blktrace: move the tracing file to kernel/trace, fix Merge branch 'x86/paravirt' into x86/apic Merge commit 'v2.6.29-rc4' into core/percpu Merge branch 'x86/uaccess' into core/percpu Merge branch 'x86/urgent' into core/percpu Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge commit 'v2.6.29-rc4' into sched/core Merge branch 'x86/apic' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen into x86/apic x86, apic: make generic_apic_probe() generally available Merge commit 'v2.6.29-rc4' into x86/cleanups stackprotector: fix multi-word cross-builds x86: make hibernation always-possible x86, defconfig: update the 32-bit defconfig x86, defconfig: update the 64-bit defconfig x86, defconfig: turn off CONFIG_ENABLE_WARN_DEPRECATED x86, defconfig: turn off CONFIG_SCSI_ISCSI_ATTRS=y Merge branch 'linus' into core/softlockup x86: fix warning in find_low_pfn_range() x86, 32-bit: clean up find_low_pfn_range() x86, 32-bit: refactor find_low_pfn_range() softlockup: move 'one' to the softlockup section in sysctl.c Merge branch 'linus' into x86/apic Merge branch 'core/percpu' into x86/core Merge branch 'x86/cleanups' into x86/core Merge branches 'x86/acpi', 'x86/asm', 'x86/cpudetect', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/doc', 'x86/header-fixes', 'x86/headers' and 'x86/minor-fixes' into x86/core Merge branch 'x86/mm' into x86/core Merge branches 'x86/paravirt', 'x86/pat', 'x86/setup-v2', 'x86/subarch', 'x86/uaccess' and 'x86/urgent' into x86/core Merge branches 'tracing/ftrace', 'tracing/ring-buffer', 'tracing/sysprof', 'tracing/urgent' and 'linus' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branch 'tip/tracing/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branches 'irq/genirq', 'irq/sparseirq' and 'irq/urgent' into irq/core Merge branch 'x86/core' into x86/headers Merge branch 'x86/untangle2' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen into x86/headers x86 headers: remove duplicate pud_large() definition x86 headers: include linux/types.h x86 headers: include page_types.h in pgtable_types.h x86 headers: protect page_32.h via __ASSEMBLY__ Merge branch 'core/header-fixes' into x86/headers Merge commit 'v2.6.29-rc5' into x86/apic irq: clean up manage.c irq: refactor and clean up the free_irq() code flow Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/power-tracer Merge branch 'sched/urgent'; commit 'v2.6.29-rc5' into sched/core lockdep: annotate reclaim context (__GFP_NOFS), fix Merge branches 'tracing/hw-branch-tracing' and 'tracing/power-tracer' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace ftrace: fix !CONFIG_FTRACE [un_]register_ftrace_command() prototypes ftrace: fix !CONFIG_DYNAMIC_FTRACE ftrace_swapper_pid definition Merge branches 'x86/acpi', 'x86/apic', 'x86/cpudetect', 'x86/headers', 'x86/paravirt', 'x86/urgent' and 'x86/xen'; commit 'v2.6.29-rc5' into x86/core x86: remove stale arch/x86/include/asm/page_64.h.rej file Merge branch 'x86/headers' into x86/core x86, apic: fix build fallout of genapic changes remove: genapic prepare x86, apic: merge genapic.h into apic.h x86, apic: remove genapic.h x86, apic: remove duplicate asm/apic.h inclusions x86, apic: remove stale references to APIC_DEFINITION x86, apic: clean up arch/x86/kernel/bigsmp_32.c x86, apic: clean up the cpu_2_logical_apiciddeclaration x86, es7000: clean up x86, apic: remove apicid_cluster() x86, es7000: remove externs x86, es7000: remove dead code, clean up x86, es7000: misc cleanups x86, numaq_32: clean up x86, numaq_32: clean up, misc x86, apic: remove ->store_NMI_vector() x86, apic: rename 'genapic' to 'apic' x86, apic: move APIC drivers to arch/x86/kernel/apic/* irq: further clean up the free_irq() code flow x86, apic: move remaining APIC drivers to arch/x86/kernel/apic/* irq: name 'p' variables a bit better x86, apic: separate 32-bit setup functionality out of apic_32.c Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace timers: add mod_timer_pending() Merge branch 'linus' into tracing/blktrace Merge branches 'tracing/blktrace', 'tracing/ftrace' and 'tracing/urgent' into tracing/core Merge branch 'mainline/function-graph' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/function-graph-tracer Documentation/ftrace.txt: update tracing/function-graph-tracer: fix merge Merge branch 'x86/untangle2' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen into x86/headers Merge branches 'tracing/function-graph-tracer' and 'linus' into tracing/core Merge branch 'for-ingo' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 into tracing/kmemtrace Merge branch 'x86/urgent' into x86/core Merge branches 'x86/asm', 'x86/cleanups' and 'x86/headers' into x86/core x86, pat: add large-PAT check to split_large_page() Merge branch 'tip/x86/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into x86/mm x86, mm: fault.c cleanup x86, mm: fault.c, refactor/simplify the is_prefetch() code x86, mm: fault.c, factor out the vm86 fault check x86, mm: fault.c, enable PF_RSVD checks on 32-bit too x86, mm: fault.c, simplify kmmio_fault() x86, mm, kprobes: fault.c, simplify notify_page_fault() x86, mm: fault.c, reorder functions x86, mm: fault.c, unify oops printing x86, mm: fault.c, unify oops handling x86, mm: fault.c, remove #ifdef from do_page_fault() x86, mm: rename TASK_SIZE64 => TASK_SIZE_MAX x86, mm: fault.c, remove #ifdef from fault_in_kernel_space() x86, mm: fault.c, give another attempt at prefetch handing before SIGBUS x86, mm: fault.c, update copyrights x86, mm: fault.c, simplify kmmio_fault(), cleanup Merge branch 'linus' into timers/hpet Merge branches 'tracing/function-graph-tracer', 'tracing/kmemtrace' and 'tracing/markers' into tracing/core Merge branch 'tip/x86/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branch 'linus' into x86/apic x86: remove the Voyager 32-bit subarch x86: remove various unused subarch hooks x86: refactor x86_quirks support Merge branch 'tracing/ftrace'; commit 'v2.6.29-rc6' into tracing/core Merge branches 'x86/acpi', 'x86/apic', 'x86/asm', 'x86/cleanups', 'x86/mm', 'x86/signal' and 'x86/urgent'; commit 'v2.6.29-rc6' into x86/core Merge branch 'x86/core' into core/percpu Merge branch 'tj-percpu' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/percpu Merge branch 'x86/asm' into x86/mm tracing/hw-branch-tracing: convert bts-tracer mutex to a spinlock x86, mm: pass in 'total' to __copy_from_user_*nocache() x86: usercopy: check for total size when deciding non-temporal cutoff tracing: remove /debug/tracing/latency_trace Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace alloc_percpu: add align argument to __alloc_percpu, fix alloc_percpu: fix UP build Merge branch 'x86/urgent' into x86/pat generic-ipi: cleanups time: ntp: clean up kernel/time/ntp.c time: ntp: simplify the second_overflow() code flow time: ntp: simplify the MAX_TICKADJ_SCALED definition time: ntp: clean up ntp_update_frequency() time: ntp: refactor up ntp_update_frequency() time: ntp: refactor and clean up ntp_update_offset() time: ntp: simplify ntp_update_offset_fll() time: ntp: micro-optimize ntp_update_offset() time: ntp: fix bug in ntp_update_offset() & do_adjtimex() time: ntp: refactor do_adjtimex() time: ntp: refactor do_adjtimex() some more time: ntp: make 64-bit constants more robust time: ntp: simplify ntp_tick_adj calculations time: ntp: clean up second_overflow() gpu/drm, x86, PAT: PAT support for io_mapping_*, export symbols for modules Merge branches 'tracing/ftrace', 'tracing/hw-branch-tracing' and 'linus' into tracing/core Merge branch 'tip/tracing/ftrace' of ssh://master.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branch 'tj-percpu' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/percpu Merge branch 'x86/urgent' into x86/core Merge branches 'x86/urgent' and 'x86/pat' into x86/core Merge branches 'x86/apic', 'x86/defconfig', 'x86/memtest', 'x86/mm' and 'linus' into x86/core x86: remove update_apic from x86_quirks, fix Merge branches 'sched/cleanups', 'sched/urgent' and 'linus' into sched/core x86: apic: simplify secondary CPU wakeup methods x86: apic: simplify secondary CPU wakeup methods, fix x86: fix !ACPI build for es7000_32.c sched: sched_clock() improvement: use in_nmi() tracing: implement trace_clock_*() APIs sched: allow architectures to specify sched_clock_stable x86: set X86_FEATURE_TSC_RELIABLE Merge branch 'sched/clock' into tracing/ftrace fix warning in arch/x86/kernel/cpu/intel_cacheinfo.c Merge branch 'sched/clock' into tracing/ftrace Merge branches 'tracing/ftrace' and 'linus' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branch 'tracing/ftrace' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Revert "gpu/drm, x86, PAT: PAT support for io_mapping_*" Merge branch 'x86/urgent' into x86/pat Merge branch 'x86/pat' into x86/core x86, mm: dont use non-temporal stores in pagecache accesses Merge branches 'sched/clock', 'sched/urgent' and 'linus' into sched/core Merge branch 'linus' into irq/genirq Merge branches 'tracing/ftrace', 'tracing/mmiotrace' and 'linus' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace x86: set_highmem_pages_init() cleanup, fix !CONFIG_NUMA && CONFIG_HIGHMEM=y Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branches 'x86/apic', 'x86/cpu', 'x86/fixmap', 'x86/mm', 'x86/sched', 'x86/setup-lzma', 'x86/signal' and 'x86/urgent' into x86/core Merge branch 'x86/core' into core/percpu Merge branch 'tracing/ftrace'; commit 'v2.6.29-rc7' into tracing/core Merge branch 'rfc/splice/tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace x86, mce: fix build failure in arch/x86/kernel/cpu/mcheck/threshold.c Merge branch 'core/locking' into tracing/ftrace Merge branch 'x86/urgent' into x86/mm Merge branch 'tracing/ftrace' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace tracing: rename ftrace_printk() => trace_printk() tracing: move utility functions from ftrace.h to kernel.h Merge commit 'v2.6.29-rc7' into core/locking Merge commit 'v2.6.29-rc7' into sched/core Merge branch 'linus' into core/iommu Merge branch 'iommu/fixes-2.6.29' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into core/iommu x86: move init_memory_mapping() to common mm/init.c, build fix on 32-bit PAE x86: UV, SGI RTC: add generic system vector, build fix on UP Merge branch 'x86/urgent' into x86/core Merge branch 'x86/mce2' into x86/core Merge branch 'x86/mm' into x86/core Merge branch 'x86/doc' into x86/core Merge branch 'x86/uv' into x86/core tracing: clean up menu Merge branches 'tracing/ftrace' and 'tracing/function-graph-tracer' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branch 'sched/core' into sched/cleanups tracing, power-trace: make it build even if the power-tracer is turned off Merge branch 'x86/core' into tracing/textedit Merge branch 'core/printk' into tracing/ftrace tracing: trace_bprintk() cleanups Merge branches 'tracing/doc', 'tracing/ftrace', 'tracing/printk' and 'tracing/textedit' into tracing/core tracing: trace_printk() fix, move format array to data section tracing: optimize trace_printk() Merge branches 'x86/apic', 'x86/asm', 'x86/fixmap', 'x86/memtest', 'x86/mm', 'x86/urgent', 'linus' and 'core/percpu' into x86/core Merge branches 'tracing/doc', 'tracing/ftrace', 'tracing/printk' and 'linus' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branch 'x86/core' into tracing/ftrace Merge branches 'sched/cleanups' and 'linus' into sched/core Merge branch 'core/printk' into tracing/ftrace x86, sched_clock(): mark variables read-mostly Merge branches 'tracing/ftrace', 'tracing/textedit' and 'linus' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branch 'linus' into core/percpu Merge branch 'tj-percpu' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/percpu Merge branches 'x86/cleanups', 'x86/kexec', 'x86/mce2' and 'linus' into x86/core Merge branch 'x86/core' into cpus4096 Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branches 'x86/asm', 'x86/debug', 'x86/mm', 'x86/setup', 'x86/urgent' and 'linus' into x86/core x86: memcpy, clean up Merge branch 'linus' into irq/genirq Merge branch 'linus' into core/locking locking: rename trace_softirq_[enter|exit] => lockdep_softirq_[enter|exit] Merge branch 'core/locking' into tracing/ftrace Merge branch 'linus' into core/ipi x86: unify kmap_atomic_pfn() and iomap_atomic_prot_pfn(), fix Merge branches 'tracing/ftrace' and 'linus' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branches 'sched/clock', 'sched/urgent' and 'linus' into sched/core Merge commit 'v2.6.29-rc8' into cpus4096 Merge branch 'cpus4096' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-x86 into cpus4096 Merge commit 'v2.6.29-rc8' into tracing/ftrace Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branches 'tracing/ftrace' and 'tracing/syscalls'; commit 'v2.6.29-rc8' into tracing/core futex: remove the pointer math from double_unlock_hb, fix generic-ipi: eliminate WARN_ON()s during oops/panic Merge branch 'x86/core' into core/ipi panic: decrease oops_in_progress only after having done the panic panic, smp: provide smp_send_stop() wrapper on UP too panic: clean up kernel/panic.c tracing/syscalls: support for syscalls tracing on x86, fix Merge branch 'x86/core' into x86/kconfig Merge branch 'x86/asm' into tracing/syscalls Merge branch 'core/percpu' into x86/core x86: cpu/common.c more cleanups Merge branches 'x86/apic', 'x86/asm', 'x86/cleanups', 'x86/debug', 'x86/kconfig', 'x86/mm', 'x86/ptrace', 'x86/setup' and 'x86/urgent'; commit 'v2.6.29-rc8' into x86/core Merge branches 'tracing/ftrace', 'tracing/syscalls' and 'linus' into tracing/core Merge branches 'irq/genirq' and 'linus' into irq/core Merge branch 'tracing/syscalls' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branch 'linus' into core/printk Merge branches 'tracing/ftrace' and 'linus' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branches 'sched/cleanups' and 'linus' into sched/core Merge branch 'linus' into core/iommu Merge branch 'dma-api/debug' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into core/iommu dma-debug: fix dma_debug_add_bus() definition for !CONFIG_DMA_API_DEBUG Merge branches 'x86/cleanups', 'x86/cpu', 'x86/debug', 'x86/mce2', 'x86/mm', 'x86/mtrr', 'x86/setup', 'x86/setup-memory', 'x86/urgent', 'x86/uv', 'x86/x2apic' and 'linus' into x86/core x86: microcode: cleanup tracepoints: dont update zero-sized tracepoint sections x86: mpparse: clean up code by introducing a few helper functions, fix symbols, stacktrace: look up init symbols after module symbols Merge branches 'tracing/ftrace', 'tracing/kprobes', 'tracing/tasks' and 'linus' into tracing/core Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace Merge branches 'x86/cleanups', 'x86/mm', 'x86/setup' and 'linus' into x86/core tracing, Text Edit Lock - kprobes architecture independent support, nommu fix Merge branch 'x86/core' of git://git.kernel.org/pub/scm/linux/kernel/git/jaswinder/linux-2.6-tip into x86/cleanups Merge branches 'tracing/ftrace', 'tracing/hw-breakpoints', 'tracing/ring-buffer', 'tracing/textedit' and 'linus' into tracing/core tracing: add run-time field descriptions for event filtering, kfree fix Merge branches 'irq/sparseirq' and 'linus' into irq/core Merge branches 'sched/debug' and 'linus' into sched/core block: cleanup bio_alloc_bioset() Merge branches 'x86/apic', 'x86/cleanups', 'x86/mm', 'x86/pat', 'x86/setup' and 'x86/signal'; commit 'v2.6.29' into x86/core Merge branch 'x86/core' of git://git.kernel.org/pub/scm/linux/kernel/git/jaswinder/linux-2.6-tiptop into x86/cleanups Merge branch 'sched/cleanups'; commit 'v2.6.29' into sched/core Merge branch 'sched/balancing' into sched/core Merge commit 'v2.6.29' into timers/core Merge branch 'timers/hpet' into timers/core Merge branches 'timers/new-apis', 'timers/ntp' and 'timers/urgent' into timers/core Merge commit 'v2.6.29' into core/header-fixes Merge commit 'v2.6.29' into x86/setup-lzma Merge branch 'core/percpu' into percpu-cpumask-x86-for-linus-2 Merge branch 'linus' into percpu-cpumask-x86-for-linus-2 Merge branches 'x86/apic', 'x86/cleanups' and 'x86/mm' into x86/core Merge branch 'linus' into x86/core Merge branch 'linus' into core/iommu Merge branch 'linus' into core/futexes Merge branch 'linus' into core/printk Revert "cpuacct: reduce one NULL check in fast-path" lockdep: annotate reclaim context (__GFP_NOFS), fix SLOB Merge branch 'linus' into cpumask-for-linus tracing, Text Edit Lock: cleanup Merge branch 'linus' into locking-for-linus Merge branches 'tracing/docs', 'tracing/filters', 'tracing/ftrace', 'tracing/kprobes', 'tracing/blktrace-v2' and 'tracing/textedit' into tracing/core-v2 Merge branch 'tracing/core-v2' into tracing-for-linus Merge branch 'linus' into x86/urgent kmemtrace, fs: uninline simple_transaction_set() kmemtrace, fs: fix linux/fdtable.h header file dependencies kmemtrace, rcu: fix linux/rcutree.h and linux/rcuclassic.h dependencies kmemtrace, rcu: fix rcu_tree_trace.c data structure dependencies kmemtrace, rcu: fix rcupreempt.c data structure dependencies kmemtrace: small cleanups Merge branch 'dma-debug' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent x86, mtrr: remove debug message Merge branch 'linus' into irq/threaded softlockup: make DETECT_HUNG_TASK default depend on DETECT_SOFTLOCKUP Merge branch 'linus' into core/softlockup Merge branch 'tracing/blktrace-fixes' into tracing/urgent ramfs: fix double freeing s_fs_info on failed mount Ira Snyder (1): hwmon: Add LTC4215 driver Isaku Yamahata (22): ia64/pv_ops/xen: use __initconst instead of __initdata for const data ia64/xen: short-circuit tests for dom0 ia64/pv_ops: add hooks to paravirtualize fsyscall implementation. ia64/pv_ops/xen: preliminary to paravirtualizing fsys.S for xen. ia64/pv_ops: paravirtualize fsys.S. ia64/pv_ops/pvchecker: support mov = ar.itc paravirtualization ia64/pv_ops: paravirtualize mov = ar.itc. ia64/pv_ops/xen: paravirtualize read/write ar.itc and ar.itm ia64/pv_ops/pv_time_ops: add sched_clock hook. ia64/pv_ops/xen/pv_time_ops: implement sched_clock. ia64/pv_ops: gate page paravirtualization. ia64/pv_ops/xen: define xen specific gate page. ia64/pv_ops: move down __kernel_syscall_via_epc. ia64/pv_ops: paravirtualize gate.S. ia64/pv_ops/xen/gate.S: xen gate page paravirtualization ia64/pv_op/binarypatch: add helper functions to support binary patching for paravirt_ops. ia64/pv_ops: implement binary patching optimization for native. ia64/pv_ops/bp/module: support binary patching for kernel module. ia64/pv_ops/binary patch: define paravirt_dv_serialize_data() and suppress false positive warning. ia64/pv_ops/bp/xen: implemented binary patchable pv_cpu_ops. ia64/xen: fix the link error. ia64: remove some warnings. Ivan Kokshaysky (2): PCI/alpha: pci sysfs resources alpha: xchg/cmpxchg cleanup and fixes Ivan Martinez (2): Staging: comedi: add cb_pcidas driver Staging: comedi: add cb_pcidda driver Ivo van Doorn (33): rt2x00: Implement Powersaving rt2x00: Move link tuning into seperate file rt2x00: Reduce calls to bbp_read() rt2x00: Restrict interface between rt2x00link and drivers rt2x00: Add RFKILL support to rt2500usb and rt73usb rt2x00: Rename CONFIG_CRYPTO_COPY_IV rt2x00: Implement WDS support rt2x00: Split EEPROM_NIC_TX_RX_FIXED rt2x00: Move code into seperate functions rt2x00: Remove ENTRY_TXD_OFDM_RATE rt2x00: Allow drivers to pass the noise value during rxdone rt2x00: Introduce RXDONE_SIGNAL_MASK mask rt2x00: Release rt2x00 2.3.0 rt2x00: Replace RFKILL with INPUT rt2x00: Only register rfkill input when key is present rt2x00: Update copyright year to 2009 rt2x00: conf_tx() only need register access for WMM queues rt2x00: Add LED_MODE_ASUS support rt2x00: rt2x00_rev() should return u32 rt2x00: Restrict firmware file lengths rt2x00: Simplify suspend/resume handling rt2x00: Move intf_work to mac82011 workqueue rt2x00: Add kill_tx_queue callback function rt2x00: Validate firmware in driver Add new rt73usb USB ID rt2x00: uncomment get_tsf rt2x00: Remove check for rf word 0 rt2x00: Add various new USB IDs for rt73usb rt2x00: Fix RF offset rt2x00: Fix SW antenna diversity rt2x00: Export all register stats through debugfs rt2x00: Update MAINTAINERS entry: new mailinglist rt2x00: New USB ID for rt73usb Izik Eidus (2): KVM: introduce kvm_read_guest_virt, kvm_write_guest_virt KVM: remove the vmap usage J. Bruce Fields (25): nfsd4: split lockstateid/openstateid release logic nfsd4: remove a forward declaration nfsd4: split open/lockowner release code nfsd: clarify exclusive create bitmask result. nfsd4: fix misplaced comment nfsd4: use helper for copying filehandles for replay nfsd4: use helper for copying delegation filehandle nfsd4: trivial preprocess_stateid_op cleanup nfsd4: move check_stateid_generation check nfsd4: remove redundant "if" in nfs4_preprocess_stateid_op nfsd4: remove unneeded local variable nfsd4: remove some dprintk's nfsd4: add a helper function to decide if stateid is delegation nfsd4: separate delegreturn case from preprocess_stateid_op nfsd4: fail when delegreturn gets a non-delegation stateid nfsd4: remove unused CHECK_FH flag nfsd4: rename io_during_grace_disallowed nfsd4: put_nfs4_client does not require state lock nfsd4: remove use of mutex for file_hashtable nfsd4: fix do_probe_callback errors nfsd4: move rpc_client setup to a separate function nfsd4: support putpubfh operation nfsd4: don't do lookup within readdir in recovery code nfsd4: remove redundant check from nfsd4_open nfsd4: don't check ip address in setclientid J. R. Okajima (1): loop: add ioctl to resize a loop device J.P. Mellor (1): Staging: comedi: add ni_660x driver Jack Morgenstein (3): IPoIB: In unicast_arp_send(), only free newly-created paths mlx4_core: Add device IDs for MT25458 10GigE devices IB/sa_query: Fix AH leak due to update_sm_ah() race Jack Steiner (16): sgi-gru: exclude UV definitions on 32-bit x86 sgi-gru: add definitions of x86_64 GRU MMRs sgi-gru: add definitions of ia64 GRU MMRs sgi-gru: add macros for using the UV hub to send interrupts sgi-gru: misc GRU cleanup sgi-gru: improvements to GRU debug messages & statistics sgi-gru: change GRU CCH commands from inline functions to outofline functions sgi-gru: add statistics to the GRU context management functions sgi-gru: add support for a user to explicitly unload a GRU context sgi-gru: aSID (context management) bug fixes sgi-gru: restructure the GRU vtop functions sgi-gru: add support to the GRU driver for message queue interrupts sgi-gru: macro for scanning all gru chiplets sgi-gru: fix bugs related to module unload of the GRU driver sgi-gru: support multiple pagesizes in GRU cpumask: fix slab corruption caused by alloc_cpumask_var_node() Jaikumar Ganesh (1): Bluetooth: When encryption is dropped, do not send RFCOMM packets James Bottomley (6): x86: fix build breakage on voyage x86: fix "__udivdi3" [drivers/scsi/aha1542.ko] undefined [SCSI] osst: Remove SUGGEST flags [SCSI] Make scsi.h independent of the rest of the scsi includes parisc: fix macro expansion in atomic.h [SCSI] fix recovered error handling James Hsiao (1): crypto: amcc - Add crypt4xx driver James Morris (26): maintainers: add security subsystem wiki selinux: remove unused bprm_check_security hook selinux: remove secondary ops call to bprm_committing_creds selinux: remove secondary ops call to bprm_committed_creds selinux: remove secondary ops call to sb_mount selinux: remove secondary ops call to sb_umount selinux: remove secondary ops call to inode_link selinux: remove secondary ops call to inode_unlink selinux: remove secondary ops call to inode_mknod selinux: remove secondary ops call to inode_follow_link selinux: remove secondary ops call to inode_permission selinux: remove secondary ops call to inode_setattr selinux: remove secondary ops call to file_mprotect selinux: remove secondary ops call to task_create selinux: remove unused cred_commit hook selinux: remove secondary ops call to task_setrlimit selinux: remove secondary ops call to task_kill selinux: remove secondary ops call to unix_stream_connect selinux: remove secondary ops call to shm_shmat selinux: remove hooks which simply defer to capabilities IMA: fix ima_delete_rules() definition Merge branch 'master' into next security: change link order of LSMs so security=tomoyo works Merge branch 'master' into next Merge branch 'master' into next Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into next James Woodcock (1): USB: serial: refuse to open recently removed USB Serial devices Jan Beulich (17): x86: fully honor "nolapic" x86: avoid early crash in disable_local_APIC() x86: remove leftover unwind annotations x86-64: move save_paranoid into .kprobes.text x86-64: remove unnecessary spill/reload of rbx from memcpy x86: fix HYPERVISOR_update_descriptor() x86: move a few device initialization objects into .devinit.rodata x86: move various CPU initialization objects into .cpuinit.rodata x86: smarten /proc/interrupts output x86, 32-bit: also limit NODES_HIGH_SHIFT here x86, 32-bit: also use cpuinfo_x86's x86_{phys,virt}_bits members x86: move save_mr() into .meminit.text x86: properly __init-annotate recent early_printk additions x86: clean up output resulting from update_mptable option x86: fix code paths used by update_mptable x86: create a non-zero sized bm_pte only when needed ACPI: constify tables in pci_irq.c Jan Dumon (3): hso: add Vendor/Product ID's for new devices hso: fix for crash when unplugging the device hso: fix for the 'invalid frame length' messages Jan Engelhardt (13): net: constify VFTs netfilter: remove unneeded goto netfilter: Combine ipt_TTL and ip6t_HL source netfilter: Combine ipt_ttl and ip6t_hl source netfilter: xtables: add backward-compat options netfilter: install missing headers [SCSI] lpfc: constify virtual function tables netfilter: xtables: avoid pointer to self netfilter: trivial Kconfig spelling fixes fs: make struct dentry->d_op const V4L/DVB (10391): dvb: constify VFTs ACPI: constify VFTs (1/2) ACPI: constify VFTs (2/2) Jan Glauber (9): [S390] qdio: add missing tiq_list locking [S390] qdio: Dont call qdio_shutdown in case qdio_activate fails [S390] qdio: proper kill of qdio tasklets [S390] qdio: call qdio_free also if qdio_shutdown fails [S390] qdio: move ACK to newest buffer for devices without QEBSM [S390] qdio: seperate last move index and polling index [S390] qdio: tasklet termination in case of module unload [S390] qdio: report SIGA errors directly [S390] qdio: merge inbound and outbound handler functions Jan Kara (30): ext3: Remove unnecessary quota functions ext4: Remove unnecessary quota functions reiserfs: Remove unnecessary quota functions quota: Move quota files into separate directory quota: Make global quota locks cacheline aligned quota: Remove NODQUOT macro quota: Remove dqbuf_t and other cleanups vfs: Use lowercase names of quota functions ramfs: Remove quota call ext2: Use lowercase names of quota functions ext3: Use lowercase names of quota functions ext4: Use lowercase names of quota functions reiserfs: Use lowercase names of quota functions ufs: Use lowercase names of quota functions udf: Use lowercase names of quota functions jfs: Use lowercase names of quota functions nfsd: Use lowercase names of quota functions quota: Remove uppercase aliases for quota functions. quota: Remove superfluous inlines quota: Coding style fixes ext3: Avoid starting a transaction in writepage when not necessary jbd2: Update locking coments udf: fix sparse warnings: udf: Add checks to not underflow sector_t udf: Fix oops when invalid character in filename occurs udf: Some type fixes and cleanups udf: Try anchor in block 256 first udf: Don't write integrity descriptor too often jbd: fix oops in jbd_journal_init_inode() on corrupted fs ext3: avoid false EIO errors Jan Kiszka (8): KVM: VMX: Support for injecting software exceptions KVM: New guest debug interface KVM: VMX: Allow single-stepping when uninterruptible KVM: x86: Virtualize debug registers KVM: x86: Wire-up hardware breakpoints for guest debugging KVM: Remove old kvm_guest_debug structs KVM: Advertise guest debug capability per-arch KVM: Drop unused evaluations from string pio handlers Jan Nikitenko (1): MIPS: Fix oops in dma_unmap_page on not coherent mips platforms Jan-Bernd Themann (1): ehea: fix circular locking problem Jani Nikula (1): ALSA: Add support for video out to the jack reporting API Janne Grunau (20): V4L/DVB (11095): adds V4L2_CID_SHARPNESS to v4l2_ctrl_query_fill() V4L/DVB (11096): V4L2 Driver for the Hauppauge HD PVR usb capture device V4L/DVB (11097): use video_ioctl2 as ioctl handler directly V4L/DVB (11125): fix mispelled Hauppauge in HD PVR and PVR USB2 driver comments V4L/DVB (11152): hdpvr: Fix build with Config_I2C not set V4L/DVB (11228): hdpvr: use debugging macro for buffer status V4L/DVB (11229): hdpvr: set usb interface dev as parent in struct video_device V4L/DVB (11230): hdpvr: return immediately from hdpvr_poll if data is available V4L/DVB (11231): hdpvr: locking fixes V4L/DVB (11245): hdpvr: add struct v4l2_device V4L/DVB (11246): hdpvr: convert printing macros to v4l2_* with struct v4l2_device V4L/DVB (11247): hdpvr: empty internal device buffer after stopping streaming V4L/DVB (11351): v4l: use usb_interface for v4l2_device_register V4L/DVB (11352): cx231xx: use usb_interface.dev for v4l2_device_register V4L/DVB (11353): cx231xx: remove explicitly set v4l2_device.name V4L/DVB (11354): usbvision: use usb_interface.dev for v4l2_device_register V4L/DVB (11355): pvrusb2: use usb_interface.dev for v4l2_device_register V4L/DVB (11356): au0828: use usb_interface.dev for v4l2_device_register V4L/DVB (11357): au0828: remove explicitly set v4l2_device.name and unused au0828_instance V4L/DVB (11358): w9968cf: use usb_interface.dev for v4l2_device_register Jarek Poplawski (7): net: Optimize memory usage when splicing from sockets. pkt_sched: sch_hfsc: sch_htb: Add non-work-conserving warning handler. pkt_sched: sch_htb: Warn on too many events. pkt_sched: sch_htb: Use workqueue to schedule after too many events. pkt_sched: sch_multiq: Change errno on non-multiqueue devices use. net: Fix page seeking for skb_splice_bits(). pkt_sched: Change misleading code in class delete. Jarkko Lavinen (3): omap_hsmmc: Do dma cleanup also with data CRC errors omap_hsmmc: Add 8-bit bus width mode support omap_hsmmc: Disable SDBP at suspend Jarkko Nikula (9): ASoC: TLV320AIC3X: Fix volume ranges ASoC: TLV320AIC3X: Add TLV information for volume controls ASoC: OMAP: N810: Mark not connected input pins ASoC: OMAP: N810: Add more jack functions ARM: OMAP: Add documentation for function omap_register_i2c_bus ARM: OMAP: Add command line option for I2C bus speed, v2 ARM: OMAP: Add method to register additional I2C busses on the command line, v2 ARM: OMAP3: Remove unused CONFIG_I2C2_OMAP_BEAGLE ASoC: OMAP: Set minimum buffer size constraint for McBSP2 in OMAP3 Jaroslav Kysela (3): ALSA: Release v1.0.19 ALSA: snd-hda-intel: Fix ALC662/ALC663 Beep Amplifier Index ALSA: snd-hda-intel - add checks for invalid values to *query_supported_pcm() Jason Andryuk (7): at76c50x-usb: update to latest mac80211 hw scan api at76c50x-usb: convert at76_debug to an unsigned int at76c50x-usb: fix oops on disconnect at76c50x-usb: clean up DMA on stack at76c50x-usb: additional disconnect fixes iwl3945: initialize is_valid_rtc_data_addr function pointer iwl3945: re-add iwl_poll_direct_bit return value check Jason Baron (6): tracing: convert c/p state power tracer to use tracepoints tracing, genirq: add irq enter and exit trace events tracing: tracepoints for softirq entry/exit - add softirq-to-name array tracing: tracepoints for softirq entry/exit - tracepoints dynamic debug: combine dprintk and dynamic printk dynamic debug: update docs Jaswinder Singh Rajput (99): x86: smp.h remove obsolete function declaration x86: smp.h move zap_low_mappings declartion to tlbflush.h x86: smp.h move prefill_possible_map declartion to cpu.h x86: smp.h move stack_processor_id declartion to cpu.h x86: smp.h move safe_smp_processor_id declartion to cpu.h x86: smp.h move cpu_physical_id declartion to cpu.h x86: smp.h move boot_cpu_id declartion to cpu.h x86: rename intel_mp_floating to mpf_intel x86: rename all fields of mpf_intel mpf_X to X x86: smp.h move cpu_callin_mask and cpu_callin_map declartion to cpumask.h x86: smp.h move cpu_callout_mask and cpu_callout_map declartion to cpumask.h x86: smp.h move cpu_initialized_mask and cpu_initialized declartion to cpumask.h x86: smp.h move cpu_sibling_setup_mask and cpu_sibling_setup_map declartion to cpumask.h x86: microcode_intel.c fix style problems x86: msr.c fix style problems x86: module_32.c fix style problems x86: module_64.c fix style problems x86: replacing mp_config_ioapic with mpc_ioapic x86: replacing mp_config_intsrc with mpc_intsrc headers_check fix: alpha, statfs.h headers_check fix: alpha, swab.h headers_check fix: arm, a.out.h headers_check fix: arm, setup.h headers_check fix: arm, swab.h headers_check fix: avr32, swab.h headers_check fix: blackfin, swab.h headers_check fix: frv, swab.h headers_check fix: h8300, swab.h headers_check fix: ia64, fpu.h headers_check fix: ia64, gcc_intrin.h headers_check fix: ia64, intrinsics.h headers_check fix: ia64, kvm.h headers_check fix: ia64, swab.h headers_check fix: m32r, swab.h headers_check fix: mips, sigcontext.h headers_check fix: mips, swab.h headers_check fix: mn10300, swab.h headers_check fix: parisc, pdc.h headers_check fix: parisc, swab.h headers_check fix: powerpc, bootx.h headers_check fix: powerpc, elf.h headers_check fix: powerpc, kvm.h headers_check fix: powerpc, ps3fb.h headers_check fix: powerpc, spu_info.h headers_check fix: powerpc, swab.h headers_check fix: xtensa, swab.h headers_check fix: linux/coda_psdev.h headers_check fix: linux/in6.h headers_check fix: linux/nubus.h headers_check fix: linux/socket.h headers_check fix: linux/reinserfs_fs.h headers_check fix: x86, prctl.h headers_check fix: x86, setup.h headers_check fix cleanup: linux/coda_psdev.h headers_check fix cleanup: linux/nubus.h headers_check fix cleanup: linux/reiserfs_fs.h Neither asm/types.h nor linux/types.h is required for arch/ia64/include/asm/fpu.h make linux/types.h as assembly safe unconditionally include asm/types.h from linux/types.h x86: mm/init_32.c fix compilation warning x86: kernel/mpparse.c fix compilation warnings drm_proc.c fix compilation warning falcon fix compilation warnings iscsi_ibft.c fix compilation warning ne3210.c fix compilation warning for phys_addr_t arlan-main.c fix compilation warnings for phys_addr_t x86: include/asm/processor.h remove double declaration of print_cpu_info x86: remove double copy of show_cpuinfo_core for 32 and 64 bit x86: cpu architecture debug code x86: cpu architecture debug code, build fix, cleanup x86: cpu_debug add write support for MSRs x86: cpu/common.c cleanups x86: entry_32.S fix compile warnings - fix work mask bit width x86: cpu_debug add support for various AMD CPUs x86: cpu/mttr/cleanup.c fix compilation warning x86: kprobes.c fix compilation warning x86: mpparse: clean up code by introducing a few helper functions tracing: fix oops in tracepoint_update_probe_range() x86: mpparse.c introduce smp_dump_mptable helper function x86: mpparse.c introduce check_physptr helper function x86: topology.c cleanup x86: kdebugfs.c cleanup x86: i8253 cleanup x86: rtc.c cleanup x86: io_delay.c cleanup x86: pci-nommu.c cleanup x86: cpu/cpu.h cleanup x86: irq.c use same path for show_interrupts x86: irq.c keep CONFIG_X86_LOCAL_APIC interrupts together x86: apic/io_apic.c define msi_ir_chip and ir_ioapic_chip all the time x86: e820 fix various signedness issues in setup.c and e820.c unconditionally include asm/types.h from linux/types.h yam: use request_firmware 3C359: use request_firmware smc91c92_cs: use request_firmware [SCSI] qla1280: use request_firmware [SCSI] advansys: use request_firmware [SCSI] qlogicpti: use request_firmware myri_sbus: use request_firmware Jay Fenlason (4): firewire: add a client_list_lock firewire: cdev: use an idr rather than a linked list for resources firewire: implement asynchronous stream transmission firewire: broadcast channel support Jay Fenlason, Stefan Richter (2): firewire: cdev: add ioctls for isochronous resource management firewire: cdev: add ioctl for broadcast write requests Jay Sternberg (13): iwlwifi: correct Kconfig to prevent following entries from not indenting iwlwifi: remove static from 5000 structures iwlwifi: add recognition of Intel WiFi Link 6000 and 6050 Series iwlwifi: add recognition of Intel WiFi Link 100 Series iwlwifi: add new HW_REV_TYPEs for Intel WiFi Link 100, 6000 and 6050 Series iwlwifi: simplify parameter setting to allow support for 6000 series iwlwifi: parametrize configuration of the PLL for exclusion on 6000 iwlwifi: correct API command overlap iwlwifi: define structures and functions externally for customization iwlwifi: remove chain noise calibration functions from 6000 family ipw2x00: correct Kconfig to prevent following entries from not indenting iwlwifi: update 5150 API version to support new firmware iwlwifi: correct device name for 1000 series Jaya Kumar (2): [ARM] 5353/1: fbdev: add E-Ink Broadsheet controller support v3 [ARM] 5354/1: mach-pxa: add AM300 platform driver v3 Jean Delvare (33): [SCSI] libiscsi: fix iscsi pool error path i2c: Document the different ways to instantiate i2c devices i2c: Let checkpatch shout on users of the legacy model i2c: Clarify which clients are auto-removed i2c-nforce2: Add support for MCP67, MCP73, MCP78S and MCP79 i2c: Set a default timeout value for all adapters i2c: Adapter timeout is in jiffies i2c-davinci: Fix timeout handling V4L/DVB (10867): vino: fold i2c-algo-sgi code into vino. V4L/DVB (10931): zoran: Drop the lock_norm module parameter V4L/DVB (10932): zoran: Don't frighten users with failed buffer allocation V4L/DVB (10938): em28xx: Prevent general protection fault on rmmod V4L/DVB (10939): ir-kbd-i2c: Prevent general protection fault on rmmod V4L/DVB (10940): saa6588: Prevent general protection fault on rmmod V4L/DVB (10943): cx88: Prevent general protection fault on rmmod V4L/DVB (11111a): MAINTAINERS: Drop references to deprecated video4linux list hwmon: (ds1621) Reorder code statements hwmon: (ds1621) Clean up register access hwmon: (ds1621) Avoid unneeded register access hwmon: (ds1621) Clean up documentation hwmon: (w83627ehf) Invert fan pin variables logic Move the pcf8591 driver to hwmon hwmon: Define a standard interface for chassis intrusion detection dmi: Let dmi_walk() users pass private data DRM: drm_crtc_helper.h doesn't actually need i2c.h workqueue: add to_delayed_work() helper function [SCSI] libiscsi: fix iscsi pool error path i2c: Deprecate client_register and client_unregister methods i2c: Delete many unused driver IDs i2c: Delete unused i2c-algo-sgi helper module ibm_newemac: Fix dangerous struct assumption V4L/DVB (11437): pvrusb2: Drop client_register/unregister stubs hwmon: (lm95241) Convert to new-style i2c driver Jean-Baptiste Joret (1): [S390] dasd_eckd / Write format R0 is now allowed BB Jean-Christop PLAGNIOL-VILLARD (1): [ARM] 5412/1: XSCALE: add ice dcc support Jean-Francois Moine (76): V4L/DVB (10332): gspca - main: Version change. V4L/DVB (10333): gspca - main and many subdrivers: Remove the epaddr variable. V4L/DVB (10337): gspca - common: Simplify the debug macros. V4L/DVB (10343): gspca - zc3xx / zc0301: Handle the 0ac8:303b instead of zc0301. V4L/DVB (10345): gspca - jpeg subdrivers: One quantization table per subdriver. V4L/DVB (10346): gspca - zc3xx: Fix bad variable type with i2c read. V4L/DVB (10347): gspca - mars: Optimize, rewrite initialization and add controls. V4L/DVB (10348): gspca - mars: Bad isoc packet scanning. V4L/DVB (10350): gspca - tv8532: Cleanup code. V4L/DVB (10352): gspca - spca508: Cleanup code. V4L/DVB (10353): gspca - some subdrivers: Don't get the control values from the webcam. V4L/DVB (10354): gspca - tv8532: Change the max brightness. V4L/DVB (10356): gspca - sonixj: Cleanup code. V4L/DVB (10357): gspca - main: Cleanup code. V4L/DVB (10360): gspca - mars: Bad interface/altsetting since 0a10a0e906be. V4L/DVB (10361): gspca - sonixj: Gamma control added. V4L/DVB (10363): gspca - spca500: Abnormal error message when starting ClickSmart310. V4L/DVB (10367): gspca - spca561: Optimize the isoc scanning function. V4L/DVB (10368): gspca - spca561: Fix bugs and rewrite the init/start of the rev72a. V4L/DVB (10370): gspca - main: Have 3 URBs instead of 2 for ISOC transfers. V4L/DVB (10371): gspca - spca561: Fix image problem in the 352x288 mode of rev72a. V4L/DVB (10372): gspca - sonixj: Cleanup code. V4L/DVB (10373): gspca - zc3xx: Sensor adcm2700 added. V4L/DVB (10374): gspca - zc3xx: Bad probe of the sensor adcm2700. V4L/DVB (10375): gspca - zc3xx: Remove duplicated sequence of sensor cs2102k. V4L/DVB (10376): gspca - zc3xx: Remove some useless tables of sensor adcm2700. V4L/DVB (10378): gspca - main: Avoid error on set interface on disconnection. V4L/DVB (10380): gspca - t613: Cleanup and optimize code. V4L/DVB (10381): gspca - t613: New unknown sensor added. V4L/DVB (10382): gspca - t613: Bad returned value when no known sensor found. V4L/DVB (10383): gspca - spca505: Cleanup and optimize code. V4L/DVB (10384): gspca - spca505: Simplify and add the brightness in start. V4L/DVB (10387): gspca - spca505: Move some sequences from probe to streamon. V4L/DVB (10389): gspca - zc3xx: Do work the sensor adcm2700. V4L/DVB (10419): gspca - sonixj: Sensor mt9v111 added. V4L/DVB (10420): gspca - vc032x: Webcam 041e:405b added and mi1310_soc updated. V4L/DVB (10421): gspca - documentation: Add the webcam 041e:405b. V4L/DVB (10423): gspca - sonixj: Bad sensor definition of the webcams 0c45:60c0. V4L/DVB (10424): gspca - vc032x: Add resolution 1280x1024 for sensor mi1310_soc. V4L/DVB (10425): gspca - sonixj: Bad initialization of sensor mt9v111. V4L/DVB (10427): gspca - sonixj: Sensor sp80708 added for webcam 0c45:6143. V4L/DVB (10428): gspca - sonixj: Specific gamma tables per sensor. V4L/DVB (10429): gspca - sonixj: Simplify the probe of the sensors mi0360/mt9v111. V4L/DVB (10430): gspca - sonixj: Adjust some exchanges with the sensor mt9v111. V4L/DVB (10431): gspca - vc032x: Bad revision for the webcam 041e:405b. V4L/DVB (10432): gspca - vc032x: Cleanup source, optimize and check i2c_write. V4L/DVB (10617): gspca - vc032x: Remove the vc0321 reset. V4L/DVB (10618): gspca - some drivers: Fix compilation warnings. V4L/DVB (10620): gspca - main: More checks of the device disconnection. V4L/DVB (10635): gspca - sonixj: No vertical flip control for mt9v111. V4L/DVB (10636): gspca - sonixj: Add autogain for ov7630/48 and vflip for ov7648. V4L/DVB (10637): gspca - t613: Bad sensor name in kernel trace when 'other' sensor. V4L/DVB (10638): gspca - t613: Bad debug level when displaying the sensor type. V4L/DVB (10679): gspca - sonixj: Handle the webcam 0c45:613c instead of sn9c102. V4L/DVB (10680): gspca - zc3xx: Bad probe of the ov7xxx sensors. V4L/DVB (10681): gspca - zc3xx: Bad probe of the ov7630c sensor. V4L/DVB (10787): gspca - mars: Bad webcam register values tied to saturation. V4L/DVB (10788): gspca - vc032x: Bad matrix for sensor mi1310_soc. V4L/DVB (11039): gspca - most jpeg subdrivers: Change the JPEG header creation. V4L/DVB (11040): gspca - most jpeg subdrivers: Have the JPEG quality settable. V4L/DVB (11103): gspca - main: May have isochronous transfers on altsetting 0 V4L/DVB (11104): gspca - ov534: Bad frame pointer after adding the last packet V4L/DVB (11105): gspca - ov534: Adjust the packet scan function V4L/DVB (11106): gspca - ov534: New sensor ov965x and re-enable the webcam 06f8:3003 V4L/DVB (11143): gspca - t613: Bad sensor detection. V4L/DVB (11144): gspca - t613: Don't re-read the ID registers at probe time. V4L/DVB (11145): gspca - t613: Greater delay after om6802 reset. V4L/DVB (11146): gspca - vc032x: Change the probe sequence. V4L/DVB (11209): gspca - vc032x: New sensor mi1320_soc and webcam 15b8:6001 added. V4L/DVB (11211): gspca - vc032x: Simplify the i2c write function. V4L/DVB (11212): gspca - vc032x: Use YVYU format for sensor mi1320_soc. V4L/DVB (11218): gspca - sq905: Update the frame pointer after adding the last packet. V4L/DVB (11219): gspca - sq905: Optimize the resolution setting. V4L/DVB (11220): gspca - finepix: Use a workqueue for streaming. V4L/DVB (11223): gspca - doc: Add the 15b8:6001 webcam to the Documentation. V4L/DVB (11402): gspca - vc032x: Remove the JPEG tables of mi1320_soc. Jeff Kirsher (1): igb: remove LRO Kconfig option Jeff Layton (2): cifs: fix buffer format byte on NT Rename/hardlink writeback: guard against jiffies wraparound on inode->dirtied_when checks (try #3) Jeff Mahoney (36): reiserfs: add support for mount count incrementing reiserfs: audit transaction ids to always be unsigned ints reiserfs: use buffer_info for leaf_paste_entries reiserfs: use more consistent printk formatting reiserfs: make some warnings informational reiserfs: rework reiserfs_warning reiserfs: prepare_error_buf wrongly consumes va_arg reiserfs: eliminate reiserfs_warning from uniqueness functions reiserfs: add locking around error buffer reiserfs: rework reiserfs_panic reiserfs: rearrange journal abort reiserfs: introduce reiserfs_error() reiserfs: use reiserfs_error() reiserfs: small variable cleanup reiserfs: xattr reiserfs_get_page takes offset instead of index reiserfs: remove link detection code reiserfs: remove IS_PRIVATE helpers reiserfs: Clean up xattrs when REISERFS_FS_XATTR is unset reiserfs: simplify xattr internal file lookups/opens reiserfs: eliminate per-super xattr lock reiserfs: make per-inode xattr locking more fine grained reiserfs: remove i_has_xattr_dir reiserfs: use generic xattr handlers reiserfs: journaled xattrs reiserfs: use generic readdir for operations across all xattrs reiserfs: add atomic addition of selinux attributes during inode creation reiserfs: factor out buffer_info initialization reiserfs: cleanup path functions reiserfs: strip trailing whitespace reiserfs: rename p_s_sb to sb reiserfs: rename p_s_bh to bh reiserfs: rename p_s_inode to inode reiserfs: rename p_s_tb to tb reiserfs: rename p_._ variables reiserfs: rename [cn]_* variables reiserfs: xattr_create is unused with xattrs disabled Jens Axboe (21): block: don't create bio_vec slabs of less than the inline number cciss: add BUILD_BUG_ON() for catching bad CommandList_struct alignment block: remove various blk_queue_*() setting functions in blk_init_queue_node() block: get rid of unused blkdev_free_rq() define Move the default_backing_dev_info out of readahead.c and into backing-dev.c btrfs: get rid of current_is_pdflush() in btrfs_btree_balance_dirty Get rid of pdflush_operation() in emergency sync and remount block: change the request allocation/congestion logic to be sync/async based Add WRITE_SYNC_PLUG and SWRITE_SYNC_PLUG block: fsync_buffers_list() should use SWRITE_SYNC_PLUG jbd: use WRITE_SYNC_PLUG instead of WRITE_SYNC jbd2: use WRITE_SYNC_PLUG instead of WRITE_SYNC block: enabling plugging on SSD devices that don't do queuing block: Add flag for telling the IO schedulers NOT to anticipate more IO block: switch sync_dirty_buffer() over to WRITE_SYNC block: elevator quiescing helpers cciss: fix residual count for block pc requests cfq-iosched: change dispatch logic to deal with single requests at the time cfq-iosched: kill two unused cfqq flags block: remove unused REQ_UNPLUG cfq-iosched: don't let idling interfere with plugging Jeremy Fitzhardinge (112): x86/pvops: remove pte_flags pvop x86: add pte_set_flags/clear_flags for pte flag manipulation x86: unify asm/io.h: IO_SPACE_LIMIT xen: move remaining mmu-related stuff into mmu.c x86/pvops: add a paravirt_ident functions to allow special patching x86: fix paravirt clobber in entry_64.S x86/paravirt: selectively save/restore regs around pvops calls x86/paravirt: add register-saving thunks to reduce caller register pressure x86/paravirt: implement PVOP_CALL macros for callee-save functions x86/paravirt: use callee-saved convention for pte_val/make_pte/etc x86/paravirt: fix missing callee-save call on pud_val x86: split loading percpu segments from loading gdt xen: setup percpu data pointers x86/paravirt: don't restore second return reg x86/vmi: fix interrupt enable/disable/save/restore calling convention. x86/paravirt: return full 64-bit result xen: fix 32-bit build resulting from mmu move xen: setup percpu data pointers xen: make direct versions of irq_enable/disable/save/restore to common code xen: use direct ops on 64-bit x86: unify pte_none x86: unify pte_same x86: unify pte_present x86: unify pud_present x86: unify pgd_present x86: unify pmd_present x86: unify pmd_none x86: unify pgd_page_vaddr x86: unify pud_page_vaddr x86: include pgtable_SIZE.h earlier x86: unify pud_page x86: unify pgd_page x86: unify pud_index x86: unify pud_offset x86: unify pmd_page_vaddr x86: unify pmd_page x86: unify pmd_index x86: unify pmd_offset x86: remove redundant pfn_pmd definition x86: unify pmd_pfn x86: unify pmd_pfn x86: unify pte_index x86: unify pte_offset_kernel x86: unify pud_large x86: unify pgd_bad x86: unify pgd_bad x86: unify pmd_bad x86: unify pages_to_mb x86: unify pud_none x86: unify pgd_none x86: unify io_remap_pfn_range x86: add and use pgd/pud/pmd_flags x86: make pgd/pud/pmd/pte_none consistent x86: asm/io.h: unify virt_to_phys/phys_to_virt x86: asm/io.h: unify ioremap prototypes x86: Fix compile error in arch/x86/kernel/early_printk.c x86: add handle_irq() to allow interrupt injection x86: unify do_IRQ() xen: set irq_chip disable xen: use our own eventchannel->irq path xen: pack all irq-related info together xen: remove irq bindcount xen: make sure that softirqs get handled at the end of event processing x86: use early_ioremap in __acpi_map_table x86: always explicitly map acpi memory acpi: remove final __acpi_map_table mapping before setting acpi_gbl_permanent_mmap x86: make apic_* operations inline functions x86: unstatic mp_find_ioapic so it can be used elsewhere x86: add mp_find_ioapic_pin x86: unstatic ioapic entry funcs Merge commit 'remotes/tip/x86/paravirt' into x86/untangle2 x86: rename *-defs.h to *-_types.h for consistency Split pgtable.h into pgtable_types.h and pgtable.h x86: Split pgtable_32.h into pgtable_32.h and pgtable_32_types.h x86: Split pgtable_64.h into pgtable_64_types.h and pgtable_64.h x86: Include pgtable_32|64_types.h in pgtable_types.h x86: create _types.h counterparts for page*.h x86: move 2 and 3 level asm-generic defs into page-defs x86: move defs around to allow paravirt.h to just include page_types.h x86: define pud_flags and pud_large properly to allow non-PAE builds x86: move pte types into pgtable*.h x86: use _types.h headers in asm where available x86: move more pagetable-related definitions into pgtable*.h Merge commit 'tip/x86/headers' into x86/untangle2 x86, xen: short-circuit tests for dom0 x86, xen: degrade BUG to WARN when multicall fails x86, xen: do multicall callbacks with interrupts disabled acpi: add some missing section markers x86-32: use non-lazy io bitmap context switching x86: unify chunks of kernel/process*.c x86: add forward decl for tss_struct xen: deal with virtually mapped percpu data x86: remove vestigial fix_ioremap prototypes x86: un-__init fill_pud/pmd/pte x86: clean up old gcc warnings x86-32: use specific __vmalloc_start_set flag in __virt_addr_valid x86: pre-initialize boot_cpu_data.x86_phys_bits to avoid system_state tests x86-32: make sure virt_addr_valid() returns false for fixmap addresses x86: make section delimiter symbols part of their section x86: add brk allocation for very, very early allocations x86-32: use brk segment for allocating initial kernel pagetable x86: use brk allocation for DMI x86: allow extend_brk users to reserve brk space x86, paravirt: prevent gcc from generating the wrong addressing mode x86-32: make sure we map enough to fit linear map pagetables x86-32: remove ALLOCATOR_SLOP from head_32.S x86/brk: make the brk reservation symbols inaccessible from C x86/brk: put the brk reservations in their own section x86/32: no need to use set_pte_present in set_pte_vaddr x86: with the last user gone, remove set_pte_present Revert "x86: create a non-zero sized bm_pte only when needed" x86/dmi: fix dmi_alloc() section mismatches Jeremy Kerr (10): powerpc/spufs: Use correct return value for spu_handle_mm_fault powerpc/spufs: Clear purge status before setting up isolated mode powerpc/spufs: Constify context contents and coredump callback constants powerpc/spufs: Check file offset before calculating write size in fixed-sized files powerpc/spufs: Fix incorrect buffer offset in regs write powerpc: Fix page_ins details in lppaca comments powerpc: Add dispatch trace log fields to lppaca powerpc: Add virtual processor dispatch trace log powerpc/cell: Fix iommu exception reporting powerpc: Add write barrier before enabling DTL flags Jeremy Theler (1): Staging: comedi: add adq12b driver Jerome Marchand (1): block: fix inconsistency in I/O stat accounting code Jes Sorensen (4): KVM: ia64: stack get/restore patch KVM: ia64: expose registers in struct kvm_regs KVM: ia64: dynamic nr online cpus [IA64] Fix kstat_this_cpu build breakage Jesper Dangaard Brouer (8): ipv4: Fix rp_filter description in net/ipv4/Kconfig. ipv4: Clean whitespaces in net/ipv4/Kconfig. Doc: Fix typos in ip-sysctl.txt about rp_filter. Doc: Cleanup whitespaces in ip-sysctl.txt Doc: Refer to ip-sysctl.txt for strict vs. loose rp_filter mode Doc: Fix missing whitespaces in RCU documentation. Doc: Fix wrong API example usage of call_rcu(). Doc: Fix spelling in RCU/rculist_nulls.txt. Jesper Juhl (1): kernel/cgroup.c: kfree(NULL) is legal Jesper Nilsson (3): ipv6: Plug sk_buff leak in ipv6_rcv (net/ipv6/ip6_input.c) CRISv32: Remove extraneous space between -I and the path. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask-for-cris into for-next Jesse Barnes (6): powerpc/PCI: include pci.h in powerpc MSI implementation drm/i915: check for -EINVAL from vm_insert_pfn drm/i915: add VGA hotplug support for 945+ drm: Use pgprot_writecombine in GEM GTT mapping to get the right bits for !PAT. drm: fix EDID backward compat check drm: remove unused "can_grow" parameter from drm_crtc_helper_initial_config Jesse Brandeburg (19): e1000e: drop lltx, remove unnecessary lock igb: remove dead code in transmit routine e1000e: add aer support e1000e: remove workaround for e1000 hardware ixbge: fix bug when using large pages and jumbo frames e1000e: fix unmap bug e1000: fix unmap bug ixgbe: Fix interrupt configuration for 82599 ixgbe: fix bug with napi add before request_irq ixgbe: Fix the Tx clean logic to return proper status ixgbe: Cleanup on the Rx init path ixgbe: Add a few safety nets for register writes and descriptor cleanups ixgbe: Cleanup some whitespace issues, fixup and add some comments ixgbe: Fixup the watchdog interrupt scheduling on 82599 e1000: fix close race with interrupt e1000e: fix loss of multicast packets e1000e: fix close interrupt race e1000e: update version number e1000: fix loss of multicast packets Jim Owens (1): Btrfs: remove unused ftrace include Jiri Kosina (7): x86: remove byte locks HID: do not try to compile PM code with CONFIG_PM unset HID: hid_reset_resume() needs to be defined only when CONFIG_PM is set HID: bring back possibility to specify vid/pid ignore on module load HID: support for Kensington slimblade device HID: add support for Kye/Genius Ergo 525V Merge branch 'autosuspend' into for-next Jiri Pirko (4): 8139cp: allow to set mac address on running device 8139too: allow to set mac address on running device bonding: select current active slave when enslaving device for mode tlb and alb audit: EXECVE record - removed bogus newline Jiri Slaby (18): IWL: fix WARN typo x86_32: summit_32, use BAD_APICID x86_32: summit_32, de-inline functions ipw2200, fix ipw io functions x86_32: apic/bigsmp_32, de-inline functions x86_32: apic/es7000_32, cpu_mask_to_apicid cleanup x86_32: apic/es7000_32, fix cpu_mask_to_apicid x86_32: apic/summit_32, fix cpu_mask_to_apicid x86_32: apic/es7000_32, fix section mismatch x86_32: apic/summit_32, fix section mismatch x86_32: apic/numaq_32, fix section mismatch ath5k: fix hw rate index condition ath5k: constify stuff ath5k: don't change mac in eeprom_read_mac on error PCI quirk: don't mark one netmos as class other HID: remove compat stuff tty: moxa, fix refcounting in moxa_poll_port mxser: remove tty_port_tty_get from mxser_check_modem_status Joakim Tjernlund (1): ucc_geth: Convert to net_device_ops Jochen Friedrich (2): V4L/DVB (10452): Add Freescale MC44S803 tuner driver V4L/DVB (10453): af9015: add MC44S803 support Jochen Hein (1): trivial: Update contact info for Jochen Hein Jody McIntyre (1): tracing: Documentation / sample code fixes for tracepoints Joe Carnuccio (2): [SCSI] qla2xxx: Add Flash-Access-Control support for recent ISPs. [SCSI] qla2xxx: Add EDC-update support. Joe Eykholt (2): [SCSI] fcoe: Add a header file defining the FIP protocol for FCoE. [SCSI] fcoe, libfcoe: Add support for FIP. FCoE discovery and keep-alive. Joe Perches (4): sctp/ipv6.c: use ipv6_addr_copy dlm: use ipv6_addr_copy dlm: comment typo fixes KVM: SVM: Fix typo in has_svm() Joel A. Fowler (1): ctcm: fix minor findings from code analysis tool Joerg Roedel (26): dma-debug: add Kconfig entry dma-debug: add header file and core data structures dma-debug: add hash functions for dma_debug_entries dma-debug: add allocator code dma-debug: add initialization code dma-debug: add kernel command line parameters dma-debug: add debugfs interface dma-debug: add core checking functions dma-debug: add checking for map/unmap_page/single dma-debug: add add checking for map/unmap_sg dma-debug: add checking for [alloc|free]_coherent dma-debug: add checks for sync_single_* dma-debug: add checks for sync_single_range_* dma-debug: add checks for sync_single_sg_* dma-debug: x86 architecture bindings dma-debug: Documentation update dma-debug: add checks for kernel text and rodata dma-debug: add a check dma memory leaks dma-debug/x86: register pci bus for dma-debug leak detection dma-debug: make memory range checks more consistent KVM: SVM: Allow read access to MSR_VM_VR KVM: MMU: handle compound pages in kvm_is_mmio_pfn KVM: MMU: remove redundant check in mmu_set_spte KVM: MMU: remove assertion in kvm_mmu_alloc_page KVM: MMU: Fix another largepage memory leak x86/dma: unify definition of pci_unmap_addr* and pci_unmap_len macros Johannes Berg (82): ALSA: snd-aoa: handle older machines ALSA: snd-aoa: handle master-amp if present ssb/b43: add new N PHY device b43: detect N PHY revision/radio mac80211: clean up set_key callback mac80211: remove user_power_level from driver API mac80211: clarify alignment docs, fix up alignment mac80211: clean up channel type config mac80211: validate SIOCSIWPOWER arguments better mac80211: move dynamic PS timeout to hardware config mac80211: extend/document powersave API cfg80211: add PM hooks mac80211: constify ieee80211_if_conf.bssid wireless: restrict to 32 legacy rates mac80211: Add capability to enable/disable beaconing mac80211: add interface list lock mac80211: don't try to powersave/config disabled interfaces mac80211: remove HW_SIGNAL_DB mac80211: convert to net_device_ops mac80211: convert master interface to netdev_ops zd1211rw: do not ratelimit no-ops mac80211: disable IBSS beacon before join zd1211rw: honour enable_beacon conf mac80211: properly validate/translate IW_AUTH_MFP values mac80211: reject extra IEs for probe request when hw_scan mac80211: fix beacon enable more mac80211: remove bssid argument from prepare_for_handlers mac80211: remove stray aggregation debugfs definition mac80211: fix RX aggregation timeouts mac80211: restructure HT code mac80211: restrict aggregation to supported interface modes mac80211: hardware should not deny going back to legacy mac80211: document TX aggregation (and small cleanup) mac80211: fix race in TX aggregation mac80211: fix aggregation timer lockups mac80211: clean up BA session teardown mac80211: RX aggregation: clean up stop session mac80211: further cleanups to stopping BA sessions cfg80211/nl80211: scanning (and mac80211 update to use it) mac80211: dont add BSS when creating IBSS cfg80211: free_priv for BSS info cfg80211: allow users to request removing a BSS cfg80211: add more flexible BSS lookup mac80211: use cfg80211s BSS infrastructure mac80211: calculate wstats_flags on the fly mac80211: fix IBSS auth mac80211: split managed/ibss code a little more timer: implement lockdep deadlock detection mac80211: disallow moving netns mac80211: fix aggregation for hardware with ampdu queues mac80211: split IBSS/managed code cfg80211/mac80211: fill qual.qual value/adjust max_qual.qual mac80211: add missing kernel-doc nl80211: remove admin requirement from station get cfg80211: clean up signal type mac80211/cfg80211: move iwrange handler to cfg80211 mac80211: Fix quality reporting for wireless stats mac80211: remove ieee80211_num_regular_queues mac80211: reduce max number of queues mac80211: fix warnings in ieee80211_if_config mac80211: stop queues across suspend/resume wireless: radiotap updates nl80211: export supported commands mac80211: acquire sta_lock for station suspend/resume ieee80211: document DS bit usage nl80211: rework locking mac80211: kill IEEE80211_CONF_SHORT_SLOT_TIME mac80211: resume properly, add suspend/resume test cfg80211: accept no-op interface mode changes mac80211: remove mixed-cell and userspace MLME code mac80211: rate control status only for controlled packets mac80211: fix RX path cfg80211: fix locking in nl80211_set_wiphy mac80211: rewrite fragmentation mac80211: fix A-MPDU queue assignment mac80211: rework the pending packets code mac80211: clean up __ieee80211_tx args mac80211: unify and fix TX aggregation start mac80211: add skb length sanity checking mac80211: fix aggregation to not require queue stop mac80211/iwlwifi: move virtual A-MDPU queue bookkeeping to iwlwifi toshiba-acpi: remove MAINTAINERS entry Johannes Weiner (28): x86: optimise page fault entry, cleanup irq: use GFP_KERNEL for action allocation in request_irq() USB: use kzfree() [S390] use kzfree() vmscan: rename sc.may_swap to may_unmap vmscan: clip swap_cluster_max in shrink_all_memory() vmscan: respect higher order in zone_reclaim() mm: move pagevec stripping to save unlock-relock mm: don't free swap slots on page deactivation ramfs-nommu: use generic lru cache ecryptfs: use kzfree() dm crypt: use kzfree xtensa: remove redefinition of XCHAL_MMU_ASID_BITS xtensa: beat Kconfig into shape xtensa: use correct stack pointer for stack traces xtensa: fix init_bootmem_node() argument order xtensa: don't make bootmem bitmap larger than required xtensa: cope with ram beginning at higher addresses xtensa: nommu support xtensa: variant-specific code xtensa: variant irq set callbacks xtensa: s6000 variant core definitions xtensa: s6000 variant xtensa: let platform override KERNELOFFSET xtensa: platform: s6105 xtensa: use generic sched_clock() xtensa: remove platform rtc hooks xtensa: ccount clocksource John Daiker (4): b43: checkpatch.pl cleanups airo_cs: checkpatch.pl cleanups atmel: checkpatch.pl cleanups ray_cs: checkpatch.pl and Lindent cleanups John Dykstra (1): tcp: Discard segments that ack data not yet sent John Linn (1): powerpc/virtex/spi: Xilinx SPI driver not releasing memory John Stultz (1): time: ntp: fix bug in ntp_update_offset() & do_adjtimex(), fix John W. Linville (2): airo: correct improper initialization of local variable iwlagn: default to MAX_UCODE_BEACON_INTERVAL in iwl_adjust_beacon_interval Jon Grierson (2): Staging: comedi: add adl_pci7296 driver Staging: comedi: add ni_65xx driver Jonas Andersson (1): ASoC: wm8510 pll settings Jonas Larsson (2): Add Merisc board support Add RTC support for Merisc boards Jonathan Brassow (12): dm exception store: separate type from instance dm raid1: add is_remote_recovering hook for clusters dm exception store: introduce registry dm exception store: move dm_target pointer dm exception store: move chunk_fields dm exception store: move cow pointer dm snapshot: remove dm_snap header use dm snapshot: remove dm_snap header dm snapshot: use DMEMIT macro for status dm snapshot: move ctr parsing to exception store dm snapshot: move status to exception store dm snapshot: persistent fix dtr cleanup Jonathan Cameron (1): Regulator: Push lock out of _notifier_call_chain + add voltage change event. Jonathan Corbet (5): Rename struct file->f_ep_lock Use f_lock to protect f_flags Move FASYNC bit handling to f_op->fasync() Rationalize fasync return values Fix a lockdep warning in fasync_helper() Joonyoung Shim (1): ASoC: twl4030 - Fix build error Jorg Schummer (1): mmc: delayed_work was never cancelled Jose Alberto Reguero (1): V4L/DVB (10330): af9015: New remote RM-KS for Avermedia Volar-X Josef 'Jeff' Sipek (1): xfs: cleanup error handling in xfs_swap_extents Josef Bacik (4): Btrfs: free space cache cleanups Btrfs: clean up find_free_extent Btrfs: kill the block group alloc mutex Btrfs: kill the pinned_mutex Josef Jiru (1): Staging: rt2870: add Linksys WUSB600N device id Joseph Cihula (1): x86: disable stack-protector for __restore_processor_state() Josh Boyer (2): powerpc: Sanitize stack pointer in signal handling code powerpc: Make LOWMEM_CAM_NUM depend on FSL_BOOKE Josh Stone (1): net: Add dependent headers to trace/skb.h JosĂ© Luis SĂ¡nchez (2): Staging: comedi: add acl7225b driver Staging: comedi: add pcl730 driver Jouni Hogander (3): [ARM] OMAP3: PM: Emu_pwrdm is switched off by hardware even when sdti is in use [ARM] OMAP34XX: Add miscellaneous definitions related to 34xx USB: TWL: disable VUSB regulators when cable unplugged Jouni Malinen (59): mac80211: 802.11w - STA flag for MFP mac80211: 802.11w - CCMP for management frames mac80211: 802.11w - Add BIP (AES-128-CMAC) mac80211: 802.11w - Use BIP (AES-128-CMAC) mac80211: 802.11w - WEXT parameter for setting mgmt cipher mac80211: 802.11w - WEXT configuration for IGTK mac80211: 802.11w - Configuration of MFP disabled/optional/required mac80211: 802.11w - SA Query processing mac80211: 802.11w - Do not force Action frames to disable encryption mac80211: 802.11w - Drop unprotected robust management frames if MFP is used mac80211: 802.11w - Implement Association Comeback processing mac80211: 802.11w - Optional software CCMP for management frames mac80211: 802.11w - Add driver capability flag for MFP ath9k: Fix set_key error codes ath9k: Setup MFP options for CCMP mac80211_hwsim: Report driver as MFP capable mac80211: Mark ieee80211_process_sa_query_req() static mac80211: Fix radiotap header it_present on big endian CPUs nl80211: Fix documentation errors ath9k: Use a defined value for pci_set_power_state() nl80211: New command for adding extra IE(s) into management frames mac80211: Fix drop-unencrypted for management frames mac80211: Fix MFP Association Comeback to use Timeout Interval IE nl80211: Optional IEs into scan request nl80211: Provide access to STA TX/RX packet counters ath9k: Unlock sc->mutex on error path nl80211: Avoid AP mode BUG_ON hang with invalid lock assert ath9k: Add module parameter to disable hardware crypto ath9k: Fix hw crypto configuration for TKIP in AP mode ath9k: Document keycache operations ath9k: Remove unused key xoring ath9k: Clean up setkey operations ath9k: Cleanup multiple VIF processing ath9k: Set BSSID mask based on configured interfaces ath9k: Add data structure for supporting virtual radio/wiphy operation ath9k: Add support for multiple secondary virtual wiphys ath9k: Configure RX filter for multi-BSSID broadcast ath9k: Virtual wiphy pause/unpause functionality ath9k: Add routines for switching between active virtual wiphys ath9k: Make start/stop operations aware of virtual wiphys ath9k: Register larger listen interval ath9k: Pause other virtual wiphys on channel change ath9k: Check virtual wiphy state on tx() ath9k: Add workaround to recover from failed channel changes ath9k: Special processing for channel changes during scan ath9k: Add a simple virtual wiphy scheduler ath9k: Add a debugfs interface for controlling virtual wiphys mac80211: Fix WMM ACM parsing and AC downgrade operation ath9k: Fix FIF_PROMISC_IN_BSS processing in station mode ath9k: Add support for multiple virtual AP interfaces mac80211: Fix a typo in assoc vs. reassoc check mac80211: Fix reassociation by not clearing previous BSSID nl80211: Event notifications for MLME events nl80211: Add MLME primitives to support external SME mac80211: Fix memleak in nl80211 authentication on deinit nl80211: Remove NL80211_CMD_SET_MGMT_EXTRA_IE nl80211: Add more through validation of MLME command parameters nl80211: Check that netif_runnin is true in cfg80211 code nl80211: Check iftype in cfg80211 code Juan Grigera (1): Staging: comedi: add pcl816 driver Juan JesĂºs GarcĂ­a de Soria Lucena (1): V4L/DVB (11328): Add AVerMedia A310 USB IDs to CE6230 driver. Juha Yrjola (1): omap_hsmmc: Implement scatter-gather emulation Julia Lawall (19): [SCSI] libfc: Correct use of ! and & PCI: introduce missing kfree USB: Move definitions from usb.h to usb/ch9.h USB: ub: use USB API functions rather than constants USB: Remove redundant test in pxa27x_udc and ftdi_sio USB: drivers: use USB API functions rather than constants drivers/watchdog: use USB API functions rather than constants Staging: agnx: Move a dereference below a NULL test Staging: go7007: Move a dereference below a NULL test Staging: go7007: introduce missing kfree Staging: meilhaus: Correct use of ! and & Staging: meilhaus: Use DEFINE_SPINLOCK Staging: rspiusb: use USB API functions rather than constants Staging: otus: use USB API functions rather than constants Staging: rt2860,rt2870: Correct use of ! and & Staging: comedi: Correct use of ! and & Staging: comedi: Use DEFINE_SPINLOCK Staging: comedi: introduce missing kfree Staging: comedi: Move a dereference below a NULL test Jun'ichi Nomura (1): dm: path selector use module refcount directly Justin Bronder (1): Staging: b3dfg: Prepare b3dfg for submission upstream. KAMEZAWA Hiroyuki (10): vmscan: fix it to take care of nodemask cgroup: CSS ID support cgroup: fix frequent -EBUSY at rmdir memcg: use CSS ID memcg: hierarchical stat memcg: fix shrinking memory to return -EBUSY by fixing retry algorithm memcg: fix OOM killer under memcg cgroups: use css id in swap cgroup for saving memory v5 memcg: remove redundant message at swapon /proc/pid/maps: don't show pgoff of pure ANON VMAs KOSAKI Motohiro (16): sparseirq: make for_each_irq_desc() more robust tracing: current tip/master can't enable ftrace tracing: fix deadlock when setting set_ftrace_pid ftrace: fix documentation typo s/trace_max_latency/tracing_max_latency/ ftrace: tracing header should put '#' at the beginning of a line tracing: Don't use tracing_record_cmdline() in workqueue tracer doc: add trace_buf_size description to kernel-parameters.txt tracing: Don't assume possible cpu list have continuous numbers x86, mce: use round_jiffies() instead round_jiffies_relative() tracing: Don't use tracing_record_cmdline() in workqueue tracer fix mm: introduce for_each_populated_zone() macro mm: don't call mark_page_accessed() in do_swap_page() mm: add comment why mark_page_accessed() would be better than pte_mkyoung() in follow_page() mm: remove pagevec_swap_free() memcg: remove mem_cgroup_calc_mapped_ratio() memcg: remove mem_cgroup_reclaim_imbalance() remnants Kalle Valo (15): mac80211: make wake/stop_queue_by_reason() functions static mac80211: remove multicast check from check_tim() mac80211: use ps-poll when dynamic power save mode is disabled at76c50x-usb: add driver at76c50x-usb: add link to the TODO list at76c50x-usb: use dev_name() instead of struct device.bus_id mac80211: don't drop nullfunc frames during software scan mac80211: decrease execution of the associated timer mac80211: track beacons separately from the rx path activity mac80211: disable power save when scanning cfg80211: add feature to hold bss mac80211: add beacon filtering support Staging: at76_usb: mention mac80211 port in TODO file Staging: at76_usb: convert to use linux/ieee80211.h Staging: Add stlc45xx, wi-fi driver for stlc4550/4560 Karen Xie (5): [SCSI] cxgb3i: fix function descriptions [SCSI] cxgb3i: subscribe to error notification from cxgb3 driver [SCSI] cxgb3i: re-initialize ddp settings after chip reset [SCSI] cxgb3i: close all tcp connections upon chip reset [SCSI] cxgb3i: merge cxgb3i_ddp into cxgb3i module Karsten Wiese (1): r8169: reset IntrStatus after chip reset Kay Sievers (35): net: struct device - replace bus_id with dev_name(), dev_set_name() wimax: struct device - replace bus_id with dev_name(), dev_set_name() sh: struct device - replace bus_id with dev_name(), dev_set_name() PCI: struct device - replace bus_id with dev_name(), dev_set_name() mmc: struct device - replace bus_id with dev_name(), dev_set_name() edac: struct device - replace bus_id with dev_name(), dev_set_name() spi: struct device - replace bus_id with dev_name(), dev_set_name() video: struct device - replace bus_id with dev_name(), dev_set_name() zorro: struct device - replace bus_id with dev_name(), dev_set_name() mmc: struct device - replace bus_id with dev_name(), dev_set_name() mtd: struct device - replace bus_id with dev_name(), dev_set_name() pci: struct device - replace bus_id with dev_name(), dev_set_name() rapidio: struct device - replace bus_id with dev_name(), dev_set_name() s390: struct device - replace bus_id with dev_name(), dev_set_name() serial: struct device - replace bus_id with dev_name(), dev_set_name() sh: struct device - replace bus_id with dev_name(), dev_set_name() tc: struct device - replace bus_id with dev_name(), dev_set_name() pcmcia: struct device - replace bus_id with dev_name(), dev_set_name() rtc: struct device - replace bus_id with dev_name(), dev_set_name() net: struct device - replace bus_id with dev_name(), dev_set_name() drm: struct device - replace bus_id with dev_name(), dev_set_name() v4l: struct device - replace bus_id with dev_name(), dev_set_name() amba: struct device - replace bus_id with dev_name(), dev_set_name() dio: struct device - replace bus_id with dev_name(), dev_set_name() dma: struct device - replace bus_id with dev_name(), dev_set_name() eisa: struct device - replace bus_id with dev_name(), dev_set_name() gpio: struct device - replace bus_id with dev_name(), dev_set_name() mca: struct device - replace bus_id with dev_name(), dev_set_name() mfd: struct device - replace bus_id with dev_name(), dev_set_name() wimax: struct device - replace bus_id with dev_name(), dev_set_name() usb: struct device - replace bus_id with dev_name(), dev_set_name() driver core: get rid of struct device's bus_id string array vcs: hook sysfs devices into object lifetime instead of "binding" qeth: struct device - replace bus_id with dev_name(), dev_set_name() [MTD] struct device - replace bus_id with dev_name(), dev_set_name() Kazuo Moriwaka (1): trivial: jbd header comment typo fix for JBD_PARANOID_IOFAIL Ken Kawasaki (1): axnet_cs: fix phy_id detection for bogus Asix chip. Kenji Kaneshige (15): PCI: pciehp: fix possible endless loop in pcie_isr PCI: pciehp: enable software notification on empty slots PCI: pciehp: make cmd_busy flag one bit PCI/ACPI: move _OSC code to pci_root.c PCI/ACPI: rename pci_osc_control_set() PCI/ACPI: fix wrong assumption in acpi_pci_get_bridge_handle PCI/ACPI: fix wrong assumption in acpi_find_root_bridge_handle PCI hotplug: fix wrong assumption in acpi_get_hp_params_from_firmware PCI hotplug: fix wrong assumption in acpi_get_hp_hw_control_from_firmware PCI: fix wrong assumption in pci_find_upstream_pcie_bridge PCI: fix wrong assumption in pci_read_bridge_bases PCI: fix wrong assumption in pci_get_interrupt_pin PCI: fix wrong assumption in pci_common_swizzle PCI: pci_is_root_bus helper PCI: fix kernel oops on bridge removal Kentaro Takeda (8): Add in_execve flag into task_struct. Memory and pathname management functions. Common functions for TOMOYO Linux. File operation restriction part. Domain transition handler. LSM adapter functions. Kconfig and Makefile MAINTAINERS info Kevin Cernekee (2): [MTD] driver model updates (part 2) [MTD] sysfs support should not depend on CONFIG_PROC_FS Kevin Hilman (7): [ARM] OMAP2: Implement CPUfreq frequency table based on PRCM table ASoC: Fix DaVinci module unload error [MTD] [NAND] davinci: drop usage of cpu_is_* macro [WATCHDOG] davinci: convert to ioremap() + io[read|write] IDE: palm_bk3710: use ioremap instead of arch-specific IO_ADDRESS() memory_accessor: new interface for reading/writing persistent memory memory_accessor: implement the new memory_accessor interface for I2C EEPROM Kim Kyuwon (2): omap_hsmmc: Initialize hsmmc controller registers when resuming leds: add BD2802GU LED driver Kirill A. Shutemov (1): struct linux_binprm: drop unused fields Klaus Flittner (1): V4L/DVB (11290): Add Elgato EyeTV DTT to dibcom driver Klaus-Dieter Wacker (3): Use kthread instead of kernel_thread lcs: invalid return codes from hard_start_xmit. qeth: unregister MAC addresses during recovery. Koji Sato (8): nilfs2: disk format and userland interface nilfs2: integrated block mapping nilfs2: B-tree based block mapping nilfs2: direct block mapping nilfs2: disk address translator nilfs2: checkpoint file nilfs2: segment usage file nilfs2: ioctl operations Kolekar, Abhijeet (15): iwl3945: Change IWLWIFI_VERSION constant name iwl3945: include iwl-core.h iwl3945: replace iwl_3945_cfg with iwl_cfg iwl3945: move structures from iwl-3945.h to iwl-dev.h iwl3945: remove duplicate structures from iwl-3945.h iwl3945: replace iwl3945_broadcast_addr with iwl_bcast_addr iwl3945: use iwl_mod_params for 3945 iwl3945: cleanup and remove duplicate code iwl3945: add load ucode op iwl3945: add apm ops iwl3945: add set_pwr_src iwl3945: simplify iwl3945_pci_probe iwl3945: release resources before shutting down iwl3945: use iwl_get_hw_mode iwl3945: adding utils ops Krishna Kumar (1): net: Optimize skb_tx_hash() by eliminating a comparison Kristian Høgsberg (3): drm: claim PCI device when running in modesetting mode. drm: Drop unused and broken dri_library_name sysfs attribute. drm/i915: Read the right SDVO register when detecting SVDO/HDMI. Kristoffer Ericson (4): [ARM] 5375/1: PATCH - update jornada720.c to reflect driver additions fbdev: update s1d13xxxfb to differ between revisions and production ids backlight: Add HP Jornada 700 series LCD driver backlight: Adds HP Jornada 700 series backlight driver Kruchinin Daniil (1): Staging: comedi: add unioxx5 driver Krzysztof HaÅ‚asa (7): WAN: Generic HDLC now uses IFF_WAN_HDLC private flag. WAN: Allow hw HDLC drivers to override dev->get_stats. WAN: Convert generic HDLC drivers to netdev_ops. IXP4xx: workaround for PCI prefetch problems near 64 MB boundary. IXP4xx: add Ethernet and NPE support for IXP43x CPU. IXP4xx: cpu_is_ixp4*() now recognizes all IXP4xx processors. IXP4xx: PCI ixp4xx_scan_bus() is __devinit. Krzysztof Helt (45): ALSA: wss-lib: move AD1845 frequency setting into wss-lib ALSA: sscape: fix incorrect timeout after microcode upload ALSA: wss-lib: remove "pops" before each played sound ALSA: cmi8330: add OPL3 support ALSA: sscape: use common MPU401 macros ALSA: do not create OPL3 timers if there is no OPL3 irq wired ALSA: ad1816a: enable hardware timer ALSA: Turtle Beach Multisound Classic/Pinnacle driver ALSA: sscape: update Kconfig description about SoundScape cards ALSA: gus: update debug messages ALSA: cmi8330: add MPU-401 support ALSA: ess1688: fix OPL3 port setting ALSA: msnd: add module description and license for the snd-msnd-lib ALSA: sscape: drop redundant fields from soundscape struct ALSA: cs4236: cs4232 and cs4236 driver merge to solve PnP BIOS detection sound: Remove documentation for OSS CS4232 driver ALSA: opl3sa2 fix irq releasing and short name of card cirrusfb: convert printks to dev_foo cirrusfb: fix Laguna chipset memory detection and clock setting cirrusfb: add Laguna additional overflow register cirrusfb: add mmio registers for Laguna chipsets cirrusfb: do not calculate line length twice cirrusfb: use 5-6-5 RGB for 16bpp mode cirrusfb: various improvements cirrusfb: Laguna chipset 8bpp fix cirrusfb: check_var improvements cirrusfb: various Laguna fixes cirrusfb: acceleration improvements cirrusfb: add imageblit function cirrusfb: fix error paths in cirrusfb_xxx_register() cirrusfb: GD5446 fixes cirrusfb: use 24bpp instead of 32bpp cirrusfb: fix clock doubling cirrusfb: add accelerator constant cirrusfb: set MCLK in one place cirrusfb: GD5434 (aka SD64) support fixed cirrusfb: fix threshold register mask for Laguna chips cirrusfb: fix interlaced modes fbdev: remove cyblafb driver fb: hide hardware cursor in graphics mode (Mach64) atyfb: speed up Mach64 cursor tridentfb: delete acceleration Kconfig option ALSA: opl3sa2: add ZV port control tdfxfb: move I2C functionality into the tdfxfb tdfxfb: make use of DDC information about connected monitor Krzysztof KosiÅ„ski (1): tc1100-wmi: Fix state reporting Kumar Gala (27): powerpc/fsl-booke: Cleanup init/exception setup to be runtime powerpc/fsl: Ensure PCI_QUIRKS are enabled for FSL_PCI powerpc/85xx: Fixed PCI IO region sizes in mpc8572ds*.dts powerpc/85xx: Added 36-bit physical device tree for mpc8572ds board powerpc/fsl-booke: Add new ISA 2.06 page sizes and MAS defines powerpc/book-3e: Introduce concept of Book-3e MMU powerpc/fsl-booke: Fix compile warning powerpc: Unify opcode definitions and support powerpc: Fix warnings from make headers_check powerpc: Add support for using doorbells for SMP IPI powerpc/fsl-booke: Add support for tlbilx instructions powerpc/85xx: Update smp support to handle doorbells and non-mpic init gianfar: pass the proper dev to DMA ops powerpc/pci: Default to dma_direct_ops for pci dma_ops powerpc: setup default archdata for {of_}platform via bus_register_notifier powerpc: expect all devices calling dma ops to have archdata set powerpc/mm: Remove unused register usage in SW TLB miss handling powerpc/mm: Used free register to save a few cycles in SW TLB miss handling powerpc/mm: e300c2/c3/c4 TLB errata workaround powerpc/83xx: Update ranges in gianfar node to match other dts powerpc/85xx: Use fsl,mpc85.. as prefix for memory ctrl & l2-cache nodes gianfar: Remove unused header ucc_geth: Remove unused header powerpc: Move SPEFSCR defines to common header powerpc/math-emu: Change types to work on ppc64 Fix highmem PPC build failure powerpc: Add support for CoreInt delivery of interrupts on MPIC Kuninori Morimoto (19): sh: Add support for SH7786 CPU subtype. sh: Urquell board support. sh: urquell: Add smc91x support and update defconfig accordingly. sh: Add OHCI USB support for SH7786 V4L/DVB (10616): tw9910: color format check is added on set_fmt V4L/DVB (10666): ov772x: move configuration from start_capture() to set_fmt() V4L/DVB (10667): ov772x: setting method to register is changed. V4L/DVB (10668): ov772x: bit mask operation fix on ov772x_mask_set. V4L/DVB (10669): ov772x: Add image flip support V4L/DVB (10670): tw9910: bit mask operation fix on tw9910_mask_set. V4L/DVB (10671): sh_mobile_ceu: SOCAM flags are not platform dependent V4L/DVB (11028): ov772x: use soft sleep mode in stop_capture sh: Remove buggy definition from SH7786 pinmux_data[] sh: urquell: enable LAN device sh: Tidy up sh7786 pinmux table. sh: ap325rxa: Add ov772x support, again. sh: ap325 and Migo-R use new sh_mobile_ceu_info flags V4L/DVB (11324): ov772x: wrong pointer for soc_camera_link is modified V4L/DVB (11327): ov772x: add edge contrl support Kusanagi Kouichi (1): ALSA: hda: Add digital beep generator support for Realtek codecs. Kyle Guinn (3): V4L/DVB (10365): Add Mars-Semi MR97310A format V4L/DVB (10366): gspca - mr97310a: New subdriver. V4L/DVB (10369): gspca - mr97310a: Fix camera initialization copy/paste bugs. Kyle McMartin (7): debug_objects: add boot-parameter toggle to turn object debugging off again parisc: select BUG always Merge branch 'rusty-cpumask-parisc' into parisc parisc: fix build when ARCH_HAS_KMAP parisc: Move kernel Elf_Fdesc define to parisc: move dereference_function_descriptor to process.c V4L/DVB (11318): fix misspelling of kconfig option Kyungmin Park (1): [MTD] [OneNAND] Add write-while-program support Lachlan McIlroy (6): [XFS] Update maintainers Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge branch 'for-linus' of git+ssh://git.melbourne.sgi.com/git/xfs Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/fs/xfs/xfs Lai Jiangshan (25): ring_buffer: reset write when reserve buffer fail ftrace: fix trace_output trace_workqueue: use percpu data for workqueue stat ring_buffer: fix typing mistake ring_buffer: fix ring_buffer_read_page() x86: use percpu data for 4k hardirq and softirq stacks sched: TIF_NEED_RESCHED -> need_reshed() cleanup vsprintf: add binary printf tracing: infrastructure for supporting binary record tracing: add trace_bprintk() ftrace: use seq_read ftrace: remove struct list_head from struct dyn_ftrace kallsyms, tracing: output more proper symbol name ftrace: protect running nmi (V3) ftrace: show virtual PID tracing: use union for multi-usages field trace_stat: don't call seq_printf() in seq_operation->start() trace_stat: keep original order trace_workqueues: fix empty line's output init,cpuset: fix initialize order rcu: rcu_barrier VS cpu_hotplug: Ensure callbacks in dead cpu are migrated to online cpu tracing: move scripts/trace/power.pl to scripts/tracing/power.pl workqueue: avoid recursion in run_workqueue() cpu hotplug: remove unused cpuhotplug_mutex_lock() tracing: fix incorrect return type of ns2usecs() Lalit Chandivade (4): [SCSI] qla2xxx: Correct ISP abort semantics for NVRAM, VPD, and flash update. [SCSI] qla2xxx: Add reset capabilities for application support. [SCSI] qla2xxx: Remove implicit ISP-abort after a flash update. [SCSI] qla2xxx: Export flash-block-size for application support. Larry Finger (5): b43: Eliminate compilation warning in b43_op_set_key rtl8187: Fix locking of private data rtl8187: Increase receive queue depth rtl8187: Fix driver to return TX retry info for RTL8187L kaweth: Fix locking to be SMP-safe Laurent Pinchart (9): cpm2: Round the baud-rate clock divider to the nearest integer. V4L/DVB (10293): uvcvideo: replace strn{cpy,cat} with strl{cpy,cat}. V4L/DVB (10294): uvcvideo: Add support for the Alcor Micro AU3820 chipset. V4L/DVB (10295): uvcvideo: Retry URB buffers allocation when the system is low on memory. V4L/DVB (10296): uvcvideo: Fix memory leak in input device handling V4L/DVB (10650): uvcvideo: Initialize streaming parameters with the probe control value V4L/DVB (10651): uvcvideo: Ignore empty bulk URBs V4L/DVB (10652): uvcvideo: Add quirk to override wrong bandwidth value for Vimicro devices V4L/DVB (11292): uvcvideo: Add support for Syntek cameras found in JAOtech Smart Terminals Laurent Vivier (3): m68k: Add install target m68k: mac - Add a new entry in mac_model to identify the floppy controller type. m68k: mac - Add SWIM floppy support Lauri Leukkunen (1): ARM OMAP3: Initial support for Nokia RX-51, v3 Lee Schermerhorn (1): mm: define a UNIQUE value for AS_UNEVICTABLE flag Len Brown (27): ACPI: fix CONFIG_ACPI=n build ACPI: simplify processor lines in Makefile ACPI: get_throttling_state() cannot be larger than state_count video: build fix Merge branch 'bjorn-initcall-cleanup' into release Merge branch 'bjorn-cleanups' into release Merge branch 'driver-ops-cleanup' into release Merge branch 'dynamic-ssdt' into release Merge branch 'pmtimer-overflow' into release Merge branch 'thermal' into release Merge branch 'hp-wmi' into release Merge branch 'battery' into release Merge branch 'psd' into release Merge branch 'video' into release Merge branch 'acer' into release Merge branch 'thinkpad-acpi' into release Merge branch 'sony-laptop' into release Merge branch 'acpi-modparam' into release Merge branch 'async-battery' into release Merge branch 'acpi_enforce_resources' into release Merge branches 'bugzilla-12461' and 'bugzilla-9998' into release Merge branch 'constify' into release Merge branch 'dell-wmi' into release Merge branch 'pnpacpi' into release Merge branch 'x2apic' into release Merge branch 'misc' into release Merge branch 'linus' into release Len Sorensen (1): m68knommu: Fix support for console port other than ttyS0 on mcf.c Lennert Buytenhek (19): mv643xx_eth: unify ethtool ops for phy'd and phy-less interfaces mv643xx_eth: rework interrupt coalescing, and export via ethtool mv643xx_eth: implement ethtool rx/tx ring size query and resizing mv643xx_eth: export rx csum get/set methods via ethtool mv643xx_eth: allow enabling/disabling tx checksumming via ethtool mv643xx_eth: implement Large Receive Offload [ARM] Kirkwood: enable both XOR engines on the 6281 RD board [ARM] mv78xx0: distinguish between different chip steppings [ARM] mv78xx0: force eth2/eth3 to PHYless mode on pre-A0 silicon [ARM] mv78xx0: enable eth2/eth3 on the mv78xx0 A0 development board mv643xx_eth: make LRO unconditional mv643xx_eth: convert to net_device_ops mv643xx_eth: move a couple of init actions from ->open() to port probe mv643xx_eth: set sane default receive coalescing timeout [ARM] mv78xx0: Add Marvell RD-78x00-mASA Reference Design support mwl8k: Marvell TOPDOG wireless driver dsa: set ->iflink on slave interfaces to the ifindex of the parent dsa: add support for the Marvell 88E6095/6095F switch chips dsa: add switch chip cascading support Leubner, Achim (1): [SCSI] aacraid driver update Li Peng (1): drm/i915: Fix LVDS dither setting Li Xiaodong (1): documentation: fix unix_dgram_qlen description Li Yang (2): gianfar: reallocate skb when headroom is not enough for fcb gianfar: only check headroom when FCB is needed Li Zefan (37): tracing/ftrace: add missing unlock in register_stat_tracer() cpuacct: add a branch prediction cpuacct: reduce one NULL check in fast-path blktrace: fix possible memory leak blktrace: make blk_tracer_enabled a bool flag blktrace: remove blk_probe_mutex blktrace: don't increase blk_probes_ref if failed to setup blk trace blktrace: report EBUSY correctly blktrace: remove sysfs_blk_trace_enable_show/store() blktrace: avoid accessing NULL bdev->bd_disk blktrace: mark ddir_act[] const blktrace: fix wrong calculation of RWBS blktrace: fix t_error() blktrace: print human-readable act_mask blktrace: fix timestamp in binary output blktrace: fix a race when creating blk_tree_root in debugfs blktrace: fix the original blktrace blktrace: fix off-by-one bug blktrace: make classic output more classic blktrace: fix blk_probes_ref chaos blktrace: fix memory leak when freeing struct blk_io_trace blktrace: extract duplidate code blktrace: print out BLK_TN_MESSAGE properly trace: make argument 'mem' of trace_seq_putmem() const memdup_user(): introduce cgroups: more documentation for remount and release_agent cgroups: show correct file mode cgroups: don't change release_agent when remount failed debug cgroup: remove unneeded cgroup_lock devcgroup: avoid using cgroup_lock cpuset: fix possible races in cpu/memory hotplug cgroups: add 'data' field to struct cgroup_scanner cpuset: rewrite update_tasks_nodemask() cpuset: avoid changing cpuset's mems when errno returned cpuset: remove struct cpuset_hotplug_scanner blktrace: small cleanup in blk_msg_write() blktrace: fix pdu_len when tracing packet command requests Li, Shaohua (1): fastboot: remove duplicate unpack_to_rootfs() Liam Girdwood (1): regulator: email - update email address and regulator webpage. Lierdakil (1): V4L/DVB (10388): gspca - pac207: Webcam 093a:2474 added. Lin Ming (3): ACPICA: Check for non-zero address before being converted to GAS ACPICA: Clear PM register write-only bits on reading ACPI: cpufreq: use new bit register access function Linus Torvalds (153): Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'kvm-updates/2.6.30' of git://git.kernel.org/pub/scm/virt/kvm/kvm Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'for-2.6.30' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'sched-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'irq-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'header-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'bkl-removal' of git://git.lwn.net/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-quota-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 Merge branch 'drm-intel-next' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel i915: fix wrong 'size_t' format string Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge branch 'percpu-cpumask-x86-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/arjan/linux-2.6-async-for-30 Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'futexes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'bzip2-lzma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'bkl-removal' of git://git.lwn.net/linux-2.6 Merge branch 'x86-stage-3-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'reiserfs-updates' from Jeff Mahoney Merge branch 'iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 Merge branch 'proc-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc Merge branch 'locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-lguest-and-virtio Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'for-linus' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge branch 'x86/setup' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip qeth: properly delete empty files. Merge branch 'x86-setup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/linux-hdreg-h-cleanup Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/rcu-doc-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/rtc-parisc Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'for-linus' of git://git.open-osd.org/linux-open-osd Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm Merge git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-fscache Merge git://git.infradead.org/iommu-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6 Merge branch 'ext3-latency-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge git://git.kernel.org/pub/scm/linux/kernel/git/czankel/xtensa-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse Merge branch 'locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'ipi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'stacktrace-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Make non-compat preadv/pwritev use native register size Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc Merge branch 'printk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core/debugobjects' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-module-and-param Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask Merge branch 'bzip2-lzma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip Merge branch 'tracing-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge branch 'avr32-arch' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'for-linus' of git://repo.or.cz/cris-mirror Merge branch 'for-next' of git://git.o-hand.com/linux-mfd Merge branch 'audit.b62' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-backlight Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge branch 'for-2.6.30' of git://linux-nfs.org/~bfields/linux Merge branch 'kmemtrace-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip kernel/sysctl.c: avoid annoying warnings Merge branch 'for-linus' of git://neil.brown.name/md Merge git://git.infradead.org/iommu-2.6 Merge git://git.infradead.org/mtd-2.6 Merge branch 'linux-next' of git://git.infradead.org/ubi-2.6 Merge branch 'linux-next' of git://git.infradead.org/ubifs-2.6 ext3: make default data ordering mode configurable Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-module-and-param Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 branch tracer, intel-iommu: fix build with CONFIG_BRANCH_TRACER=y Merge branch 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge branch 'i2c-for-2630-v2' of git://aeryn.fluff.org.uk/bjdooks/linux Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-2.6.30' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 Fix build errors due to CONFIG_BRANCH_TRACER=y Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'irq/threaded' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core/softlockup' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Linux 2.6.30-rc1 Linus Walleij (1): [ARM] 5420/1: MMCI devinit and devexit macros Lior Dotan (5): Staging: slicoss: use request_firmware Staging: SLICOSS: remove the static firmware header files Staging: slicoss: add binary firmware to firmware directory Staging: SLICOSS: free resources on entry_probe error path Staging: SLICOSS: use gfp_kernel where possible Liu Yu (7): powerpc/math-emu: Fix efp dependence powerpc/fsl-booke: declare tlbcam_index for use in c KVM: ppc: Fix e500 warnings and some spelling problems KVM: ppc: Move to new TLB invalidate interface KVM: ppc: Add emulation of E500 register mmucsr0 KVM: ppc: e500: Fix the bug that mas0 update to wrong value when read TLB entry KVM: ppc: e500: Fix the bug that KVM is unstable in SMP Lopez Cruz, Misael (5): ASoC: Add GPIO support for jack reporting interface ASoC: Add DAPM machine widgets to SDP3430 driver ASoC: Add headset jack detection for SDP3430 machine driver ASoC: Move headset jack registration to device initialization for SDP3430 ASoC: Declare Headset as Mic and Headphone widgets for SDP3430 Lorenzo Nava (1): b43: fix b43_plcp_get_bitrate_idx_ofdm return type Luca Cappa (1): hp_accel: axis conversion for hp compaq 8710w Luca Tettamanti (2): ACPI: acpi_enforce_resource=strict by default hwmon: Add Asus ATK0110 support Lucas Nussbaum (1): sctp: Allow to disable SCTP checksums via module parameter Luck, Tony (1): ia64: fix section mismatch swiotlb_dma_init -> swiotlb_init Luis Henriques (4): sched: fix typos in documentation sched: small optimisation of can_migrate_task() sched: jiffies not printed per CPU sched: remove unused fields from struct rq Luis R. Rodriguez (81): mac80211: add HT conf helpers ath9k: use hw->conf on ath_setcurmode() ath9k: remove cache of rate preference when using 11g protection ath9k: Rename ath_setcurmode() to ath_cache_conf_rate() ath9k: consolidate arguments on hw reset ath9k: make request to get the noisefloor threshold band specific ath9k: use ieee80211_conf on ath9k_hw_iscal_supported() ath9k: make use of conf_is_ht*() in the rest of the driver iwlwifi: make use of conf_is_ht*() helpers mac80211: no need for ht.enabled ath9k: Make ANI CCK and OFDM error triggers band specific ath9k: remove mode specific default noise floor values ath9k: remove ath9k_hw_chan2wmode() ath9k: remove ath9k_hw_check_chan() ath9k: remove superfluous check on changing channel ath9k: fix sparse warnings cfg80211: call reg_notifier() once cfg80211: allow multiple driver regulatory_hints() cfg80211: fix typo on message after intersection cfg80211: add wiphy_apply_custom_regulatory() cfg80211: export freq_reg_info() cfg80211: process user requests only after previous user/driver/core requests cfg80211: ignore consecutive equal regulatory hints cfg80211: rename fw_handles_regulatory to custom_regulatory cfg80211: move check for ignore_reg_update() on wiphy_update_regulatory() cfg80211: pass more detailed regulatory request information on reg_notifier() cfg80211: Allow for strict regulatory settings mac80211: allow mac80211 drivers to get to struct ieee80211_hw from wiphy cfg80211: allow users to help a driver's compliance ath9k: simplify regulatory code ath9k: fix debug print on regd ath9k: remove useless ath9k driver version information cfg80211: do not pass -EALREADY to userspace on regdomain change request ath9k: replace usage of internal wireless_modes for conf ath9k: move check for radar freqs into a helper ath9k: remove passive scan on 5 GHz if country IE knows better mac80211: do not TX injected frames when not allowed cfg80211: add get reg command ath9k: fix reg_notifier() flags used upon a country IE ath9k: add comments for ath9k_hw_configpcipowersave() ath9k: add udelay() for AR5416 on ath9k_hw_configpcipowersave() cfg80211: rename cfg80211_registered_device's idx to wiphy_idx cfg80211: add wiphy_idx_valid to check for wiphy_idx sanity cfg80211: rename cfg80211_drv_mutex to cfg80211_mutex nl80211: disallow user requests prior to regulatory_init() cfg80211: add regulatory_hint_core() to separate the core reg hint cfg80211: propagate -ENOMEM during regulatory_init() cfg80211: add assert_cfg80211_lock() to ensure proper protection cfg80211: make regulatory_request use wiphy_idx instead of wiphy cfg80211: protect first access of last_request on 11d hint under mutex cfg80211: remove likely from an 11d hint case cfg80211: free rd on unlikely event on 11d hint cfg80211: move all regulatory hints to workqueue cfg80211: comments style cleanup cfg80211: allow drivers that agree on regulatory to agree cfg80211: rename regdom_changed to regdom_changes() and use it cfg80211: enable active-scan / beaconing on Ch 1-11 for world regdom cfg80211: enable 5 GHz world roaming channels cfg80211: Add AP beacon regulatory hints ath9k: follow beacon hints on reg_notifier when world roaming cfg80211: make __regulatory_hint() static cfg80211: pass the regulatory_request struct in __regulatory_hint() cfg80211: do not kzalloc() again for a new request on __regulatory_hint cfg80211: pass the regulatory_request to ignore_request mac80211_hwsim: add support for 5 GHz cfg80211: Enable passive scan on channels 12-14 for world roaming cfg80211: fix max tx power for world regdom on 5 GHz to 20dBm cfg80211: remove REGDOM_SET_BY_INIT cfg80211: move enum reg_set_by to nl80211.h cfg80211: add regulatory netlink multicast group mac80211_hwsim: add regulatory testing options ath9k: downgrade xmit queue full message to xmit debug ath9k: make few eeprom and calib items static ath9k: remove dummy PCI "retry timeout" fix mac80211_hwsim: let the reg workqueue breathe when regtest is set cfg80211: force last_request to be set for OLD_REG if regdom is EU cfg80211: fix incorrect assumption on last_request for 11d cfg80211: make regdom module parameter available oustide of OLD_REG cfg80211: remove code about country IE support with OLD_REG ath9k: fix dma mapping leak of rx buffer upon rmmod cfg80211: default CONFIG_WIRELESS_OLD_REGULATORY to n Lukas Karas (1): V4L/DVB (11408): gspca - m5602-s5k83a: Add led support to the s5k83a sensor. Luotao Fu (2): pxa2xx-ac97: fix displaying GSR after reset timeout leds: simple driver for pwm driven LEDs Ma Ling (5): drm/i915: Use documented PLL timing limits for G4X platform drm/i915: Use a different PLL timing search function on G4X. drm: read EDID extensions from monitor drm: detect hdmi monitor by hdmi identifier (v3) drm/i915: avoid hanging on to a stale pointer to raw_edid. Maciej Cencora (1): drm/radeon: add regs required for occlusion queries support Maciej Grela (1): USB: usb-storage: added missing MODULE_LICENSE("GPL") for usb-storage ums-* modules Maciej Rutecki (1): ahci: Blacklist HP Compaq 6720s that spins off disks during ACPI power off Maciej Sosnowski (1): igb: switch to new dca API Madhulika Madishetty (1): AMCC PPC 460SX redwood SoC platform initial framework Maen Suleiman (1): mmc: SDIO driver for Marvell SoCs Magnus Damm (52): clockevents: let set_mode() setup delta information smc91x: struct net_device_ops sh: make gpio_get/set_value() O(1) sh: lockless gpio_get_value() sh: lockless gpio_set_value() sh: use gpiolib sh: rework clocksource and sched_clock sh: tmu disable support sh: fix no sys_timer case sh: CMT clockevent platform driver sh: CMT platform data for sh7723/sh7722/sh7366/sh7343 sh: shared register saving code for sh3/sh4/sh4a sh: rework register restore code for sh3/sh4/sh4a sh: remove EXPEVT vector from stack on sh3/sh4/sh4a sh: prefetch early exception data on sh4/sh4a. serial: sh-sci: console drainage rtc: sh-rtc: Add Single IRQ Support sh: fix P4 iounmap() pass-through sh: multiple vectors per irq - base sh: multiple vectors per irq - sh7750 sh: multiple vectors per irq - sh7780 sh: multiple vectors per irq - sh7785 sh: hibernation support sh: Show sleep state with Migo-R LEDs input: add suspend wakeup support to sh_keysc input: sh_keysc suspend can use to_platform_device() sh: improve sh7785lcr power off code irq: add remove_irq() for freeing of setup_irq() irqs irq: match remove_irq() args with setup_irq() irq: export remove_irq() and setup_irq() symbols sh: SuperH Mobile suspend support sh: add ap325 lcd power off support video: sh_mobile_lcdcfb suspend/resume support sh: simplify kexec vbr code sh: rework kexec segment code sh: add kexec jump support sh: disallow kexec virtual entry sh: sh-rtc carry interrupt rework sh: sh-rtc invalid time rework sh: sh-rtc wakeup support tmio_mmc: Fix one off, use resource_size() in probe() tmio_mmc: Fix use after free in remove() V4L/DVB (10304): buf-dma-contig: fix USERPTR free handling V4L/DVB (11029): video: use videobuf_waiton() in sh_mobile_ceu free_buffer() pm: rework includes, remove arch ifdefs pm: cleanup includes clocksource: sh_cmt: use remove_irq() and remove clockevent workaround sh: intc: install enable, disable and shutdown callbacks sh: intc: set_irq_wake() support input: sh_keysc: use enable/disable_irq_wake() rtc: rtc-sh: use set_irq_wake() input: migor_ts: add wakeup support Malcolm Parsons (1): xfs: fix various typos Mallikarjuna R Chilakala (2): ixgbe: Patch to fix driver panic while freeing up tx & rx resources ixgbe: Fix potential memory leak/driver panic issue while setting up Tx & Rx ring parameters Mandeep Singh Baines (7): softlockup: decouple hung tasks check from softlockup detection softlockup: fix to allow compiling with !DETECT_HUNG_TASK softlockup: fix potential race in hung_task when resetting timeout softlockup: remove unused definition for spawn_softlockup_task softlockup: check all tasks in hung_task softlockup: convert read_lock in hung_task to rcu_read_lock softlockup: remove timestamp checking from hung_task Manish Katiyar (2): nfsd : Define NFSD only when FILE_LOCKING is enabled ext2: Zero our b_size in ext2_quota_read() Mans Rullgard (1): NSM: Fix unaligned accesses in nsm_init_private() Manuel Lauss (4): MIPS: Alchemy: unify CPU model constants. MIPS: Alchemy: provide cpu feature overrides. MIPS: Alchemy: MIPS hazard workarounds are not required. MIPS: Alchemy: PB1200: use SMC91X platform data. Marc Eshel (5): nfsd41: define nfs41 error codes nfsd41: introduce nfs4_client cl_sessions list nfsd41: release_session when client is expired nfsd41: sessionid hashing nfsd41: provide support for minor version 1 at rpc level Marc Schneider (1): V4L/DVB (11338): af9015: add support for TrekStor DVB-T USB Stick Marcel Holtmann (31): Bluetooth: Preparation for usage of SOL_BLUETOOTH Bluetooth: Add global deferred socket parameter Bluetooth: Add support for deferring RFCOMM connection setup Bluetooth: Add support for deferring L2CAP connection setup Bluetooth: Reject incoming SCO connections without listeners Bluetooth: Fix SCO state handling for incoming connections Bluetooth: Add enhanced security model for Simple Pairing Bluetooth: Replace L2CAP link mode with security level Bluetooth: Replace RFCOMM link mode with security level Bluetooth: Pause RFCOMM TX when encryption drops Bluetooth: Disconnect L2CAP connections without encryption Bluetooth: Restrict application of socket options Bluetooth: Update version numbers Bluetooth: Submit bulk URBs along with interrupt URBs Bluetooth: Don't check encryption for L2CAP raw sockets Bluetooth: Add SCO fallback for eSCO connection attempts Bluetooth: Use general bonding whenever possible Bluetooth: Set authentication requirements if not available Bluetooth: Fix race condition with L2CAP information request Bluetooth: Fix double L2CAP connection request Bluetooth: Don't enforce authentication for L2CAP PSM 1 and 3 Bluetooth: Request L2CAP fixed channel list if available Bluetooth: Add CID field to L2CAP socket address structure Bluetooth: Ask upper layers for HCI disconnect reason Bluetooth: Fix authentication requirements for L2CAP security check Bluetooth: Set authentication requirement before requesting it Bluetooth: Fix poll() misbehavior when using BT_DEFER_SETUP Bluetooth: Change RFCOMM to use BT_CONNECT2 for BT_DEFER_SETUP Bluetooth: Disallow usage of L2CAP CID setting for now Bluetooth: Fix RFCOMM usage of in-kernel L2CAP sockets Bluetooth: Permit BT_SECURITY also for L2CAP raw sockets Marcelo Tosatti (4): KVM: VMX: initialize TSC offset relative to vm creation time KVM: PIT: provide an option to disable interrupt reinjection KVM: MMU: drop zeroing on mmu_memory_cache_alloc KVM: make irq ack notifications aware of routing table Marcin Obara (1): Staging: add heci driver Marcin Slusarz (6): phylib: convert state_queue work to delayed_work udf: reduce stack usage of udf_load_pvoldesc udf: reduce stack usage of udf_get_filename udf: implement mode and dmode mounting options udf: fix default mode and dmode options handling [MTD] fix use after free in register_mtd_blktrans Marco Aurelio da Costa (1): i2c-algo-pca: Add PCA9665 support Marek Vasut (3): [ARM] pxa: PalmT5 initial support [ARM] pxa: PalmLD initial support [ARM] pxa: fix the bad assumption that PCMCIA sockets always start with 0 Mario Schwalbe (2): backlight: Add support for MacBook 5, MacBook Air 2, and MacBook Pro 5 backlight: mbp_nvidia_bl - Add a debug switch Mariusz Kozlowski (12): Staging: comedi: usbduxfast: remove kernel version checks Staging: comedi: usbduxfast: add comedi debug to Kconfig Staging: comedi: usbduxfast: fix checkpatch issues plus some style cleanups etc. Staging: comedi: usbduxfast: annotate __init and __exit functions Staging: comedi: usbduxfast: remove .bss variable initialization Staging: comedi: usbduxfast: don't initialize semaphores on init Staging: comedi: usbduxfast: balance semaphores up/down in attach error path Staging: comedi: usbdux: remove .bss variable initialization Staging: comedi: usbdux: don't initialize semaphores on init Staging: comedi: usbdux: annotate __init and __exit functions Staging: comedi: remove LINUX_VERSION_CODE checks Staging: comedi: remove unnecessary #include Mark Brown (104): ALSA: Reduce boilerplate for new jack types ASoC: Constify pin names for DAPM pin status APIs ASoC: Add jack reporting interface ASoC: Implement WM8350 headphone jack detection Merge branch 'for-2.6.29' into for-2.6.30 Merge branch 'for-2.6.29' into for-2.6.30 ASoC: Ignore output frequency for WM9713 PLL ASoC: Implement support for CLK_POUT as MCLK on Zylonite ASoC: Staticise PCM operations tables Merge branch 'for-2.6.29' into for-2.6.30 ASoC: Fix merge with PXA tree ASoC: Remove unneeded e7x0 inclusion of pxa-regs.h and hardware.h ASoC: Configure SSP port PLL for Zylonite ASoC: Fix spurious codec driver dependencies Merge branch 'for-2.6.29' into for-2.6.30 ASoC: Include header file in cs4270 and wm9705 ASoC: Fix L3 bus handling in Kconfig ASoC: Push the codec runtime storage into the card structure Merge branch 'for-2.6.29' into for-2.6.30 Merge branch 'for-2.6.29' into for-2.6.30 Merge branch 'for-2.6.29' into for-2.6.30 Merge branch 'for-2.6.29' into for-2.6.30 Merge branch 'for-2.6.29' into for-2.6.30 ASoC: Remove version display from the WM8731 driver ASoC: Clean up WM8731 bias level configuration ASoC: Improve diagnostics for AT91SAM9G20-EK probe ASoC: Check machine type before loading on AT91SAM9G20-EK ASoC: Actively manage MCLK for AT91SAM9G20-EK ASoC: Rename AT91SAMG20-EK for applications ASoC: Shuffle WM8731 SPI and I2C device registration ASoC: Refactor WM8731 device registration ASoC: Remove version display from the WM8753 driver ASoC: Fix build for corgi and poodle ASoC: Implement SPI device unregistration for WM8731 ASoC: Check for errors when writing WM8731 reset register ASoC: Add device init/exit annotations to new-style Wolfson CODEC drivers ASoC: Disable WM8731 line bypass by default [ARM] 5399/1: [AT91] Configure MCLK and SSC for AT91SAMG20-EK ASoC: Report I/O errors from WM8753 reset ASoC: Only unregister drivers we registered for WM8753 ASoC: Improve WM9713 voice DAC shutdown procedure ASoC: Fix Zylonite voice interface stereo configurations ASoC: Shuffle WM8753 device registration code ASoC: Convert WM8753 to register via normal device probe ASoC: Only write back non-default registers when resuming WM8753 ASoC: Add SND_SOC_DAPM_PIN_SWITCH controls for exposing DAPM pins Merge commit 's3c-iis-header' into HEAD ASoC: Refresh JIVE driver ASoC: Factor out DAPM widget power check into separate function ASoC: Fix memory allocation for snd_soc_dapm_switch names ASoC: Update Kconfig for Samsung CPUs to reflect S3C64xx support ASoC: Staticise workqueue function for GPIO jack detection ASoC: Re-remove hand-rolled pr_debug() macros ASoC: Fix logging severity for some S3C error messages ASoC: Remove unneeded forward reference to WM8753 SPI implementation ASoC: Convert PXA AC97 driver to probe with the platform device Merge commit 'takashi/topic/asoc' into for-2.6.30 ASoC: Fix up merge with the ARM tree [ARM] Revert extraneous changes from the S3C audio header move Merge branch 's3c-iis-header' into for-2.6.30 ASoC: Add initial driver for the WM8400 CODEC ASoC: Remove version display from WM8580 driver ASoC: Fix formats for s3c24xx-i2s register prints ASoC: Merge dai_ops factor out [ARM] Revert futher extraneous changes from the S3C header move Merge branch 's3c-iis-header' into for-2.6.30 ASoC: Move WM8580 to normal I2C device probe mx31: Add device definitions for the i.MX3x I2C controllers mx31ads: Fix build for missing mx31.h mx31ads: Make unexported data static mx31ads: Initial support for Wolfson Microelectronics 1133-EV1 module ASoC: Fix non-networked I2S mode for PXA SSP ASoC: Fix Zylonite for non-networked SSP mode ASoC: Fix some missing dai_ops conversions ASoC: Each PXA AC97 DAI needs a separate ops Merge branch 'pxa-ssp' into for-2.6.30 ASoC: Further optimise WM8400 bias configuration sequence ASoC: Add separate AVDD for WM8400 ASoC: Add FLL support for WM8400 regulator: Pass regulator init data as explict argument when registering regulator: Allow init data to be supplied for bq24022 regulator: Allow init_data to be passed to fixed voltage regulators regulator: Make fixed voltage regulators visible in Kconfig regulator: Mark attributes table for virtual regulator static regulator: Hoist struct regulator_dev out of core to fix notifiers regulator: Suggest use of datasheet supply or pin names for consumers regulator: Allow regulators to set the initial operating mode regulator: Fix get_mode() for WM835x DCDCs regulator: Implement list_voltage() for WM8400 DCDCs and LDOs regulator: Don't warn on omitted voltage constraints regulator: Implement list_voltage for WM835x LDOs and DCDCs regulator: Allow boot_on regulators to be disabled by clients regulator: Don't warn if we failed to get a regulator regulator: Don't increment use_count for boot_on regulators regulator: Support disabling of unused regulators by machines rtc: convert wm8350 use new alarm and update operations ASoC: Add some documentation for the ASoC jack API ASoC: Don't defer resume work for AC97 codecs ASoC: Set parent for AC97 devices we register ASoC: Implement suspend and resume operations for WM9705 mfd: Use bulk read to fill WM8350 register cache mfd: Support active high IRQs on WM835x mfd: Use the value of the final spin when reading the AUXADC i2c: i2c-s3c2410: Initialise Samsung I2C controller early Mark Einon (2): Staging: rt2860: Fix remaining build warnings Staging: rt2860: Remove dependency on CFLAG RT2860 Mark Ellis (1): USB: ipaq: handle 4 endpoint devices Mark Fasheh (9): ocfs2: Introduce dir lookup helper struct ocfs2: Add a name indexed b-tree to directory inodes ocfs2: Store dir index records inline ocfs2: Introduce dir free space list ocfs2: Increase max links count ocfs2: Add total entry count to dx_root_block ocfs2: Enable indexed directories ocfs2: re-order ocfs2_empty_dir checks ocfs2: fix leaf start calculation in ocfs2_dx_dir_rebalance() Mark H. Weaver (1): netfilter: nf_conntrack_tcp: fix unaligned memory access in tcp_sack Mark Hills (5): ALSA: snd-usb-caiaq: Send the correct command when setting controls ALSA: snd-usb-caiaq: Set default input mode of A4DJ ALSA: snd-usb-caiaq: Do not expose hardware input mode 0 of A4DJ ALSA: snd-usb-caiaq: Remove duplicate A8DJ control ALSA: snd-usb-caiaq: Increase version number to 1.3.12 Mark Lord (27): sata_mv: cleanup chipset GENeration FLAGS sata_mv: rearrange mv_start_dma() and friends sata_mv: restructure mv_qc_issue sata_mv: update ata_qc_from_tag sata_mv: mv_fill_sg fixes v2 sata_mv: introduce support for ATAPI devices sata_mv: optimize use of mv_edma_cfg sata_mv: remove leftovers [libata] sata_mv: cache frequently-accessed registers [libata] sata_mv: Enable use of (basic) DMA for ATAPI on GEN_IIE chips [libata] sata_mv: Tighten up interrupt masking in mv_qc_issue() [libata] sata_mv: Add a new mv_sff_check_status() function to sata_mv. [libata] Export ata_pio_queue_task() so that it can be used from sata_mv. [libata] sata_mv: Implement direct FIS transmission via mv_qc_issue_fis(). sata_mv: cosmetic preparations for IRQ coalescing sata_mv: implement IRQ coalescing (v2) sata_mv: optimize IRQ coalescing for 8-port chips sata_mv: fix LED blinking for SoC+NCQ [libata] More robust parsing for IDENTIFY DEVICE multi_count field sata_mv: revert SoC irq breakage sata_mv: fix irq mask races sata_mv: replace 0x1f with ATA_PIO4 (v2) sata_mv: workaround errata PCI#7 sata_mv: workaround errata SATA#26 sata_mv: cosmetic renames sata_mv: workaround errata SATA#13 sata_mv: shorten register names Mark McLoughlin (1): virtio_net: add link status handling Mark Nelson (1): powerpc/wdrtas: Update wdrtas_get_interval to use rtas_data_buf Mark Vels (1): trivial: PWM: fix of #endif comment Markus Bollinger (1): ALSA: pcxhr - add support for gpio ports and minor bug fix Markus Grabner (1): Staging: add line6 usb driver Markus Kempf (1): Staging: comedi: add ii_pci20kc driver Markus Metzger (8): x86, ftrace, hw-branch-tracer: support hotplug cpus x86, ftrace, hw-branch-tracer: dump trace on oops x86, ftrace, hw-branch-tracer: reset trace buffer on close x86, ftrace, hw-branch-tracer: change trace format x86, ftrace, hw-branch-tracer: documentation x86, ds, bts: cleanup DS configuration x86, ftrace: fix section mismatch in hw-branch-tracer x86, ptrace: remove CONFIG guards around declarations Martin Fuzzey (1): V4L/DVB (10945): pwc : fix LED and power setup for first open Martin K. Petersen (5): [SCSI] scsi_debug: DIF/DIX support [SCSI] Remove SUGGEST flags [SCSI] sd: Make revalidate less chatty block: add private bio_set for bio integrity allocations MD data integrity support Martin Michlmayr (4): [ARM] Orion: Fix some typos in the DNS-323 support code [ARM] Kirkwood: Hook up I2C [ARM] Kirkwood: More consistency regarding MPP naming [ARM] Kirkwood: Add support for QNAP TS-119/TS-219 Turbo NAS Martin Peschke (1): [SCSI] zfcp: add measurement data for average qdio queue utilisation Martin Petermann (1): [SCSI] zfcp: erp failed status bit will not be set Martin Schwidefsky (6): [S390] clock sync mode flags [S390] module function call optimization [S390] eliminate cpuinfo_S390 structure [S390] eliminate ipl_device from lowcore [S390] cleanup lowcore.h mm: do_xip_mapping_read: fix length calculation Martyn Welch (7): powerpc/86xx: Board support for GE Fanuc SBC310 powerpc/86xx: Default configutation for GE Fanuc's SBC310 powerpc/86xx: Extend GE Fanuc GPIO driver for the SBC310 powerpc/86xx: Correct local bus registers in GE Fanuc SBC610 dts file powerpc/86xx: Run sbc310 USB fixup code only on the appropriate platform. powerpc/86xx: Board support for GE Fanuc's PPC9A powerpc/86xx: Default configuration for GE Fanuc's PPC9A Masakazu Mokuno (2): PS3: gelic: convert the ethernet part to net_device_ops PS3: gelic: wireless: convert the wireless part to net_device_ops Masami Hiramatsu (10): tracing, Text Edit Lock - SMP alternatives support x86: implement atomic text_poke() via fixmap x86: expand irq-off region in text_poke() x86: kretprobe-booster interrupt emulation code fix kprobes: cleanup aggr_kprobe related code kprobes: move EXPORT_SYMBOL_GPL just after function definitions kprobes: cleanup comment style in kprobes.h kprobes: rename kprobe_enabled to kprobes_all_disarmed kprobes: support per-kprobe disabling kprobes: support kretprobe and jprobe per-probe disabling Masatake YAMATO (1): trivial: fix a pdlfush -> pdflush typo in comment Mathieu Desnoyers (2): tracing, Text Edit Lock - Architecture Independent Code tracing, Text Edit Lock - kprobes architecture independent support Matias Zabaljauregui (2): lguest: use KVM hypercalls lguest: use bool instead of int Matt Carlson (14): tg3: Fix 5906 link problems tg3: Drop non-VLAN rx pkts larger than the MTU tg3: Update ethtool set_settings error checks tg3: Refine tg3_vlan_rx_register() tg3: Eliminate nvram routine forward declarations tg3: Invert nvram_read() and nvram_read_swab() tg3: Correct NVRAM stream endian notations tg3: Eliminate tg3_nvram_read_swab() tg3: Refactor firmware version routines tg3: Add legacy bootcode version decoding tg3: Add DASH firmware version reporting tg3: Add version reporting for hardware selfboot tg3: Update copyright and version Update TG3 MAINTAINERS entry Matt Fleming (2): sh: Relax inline assembly constraints sh: Use the atomic_t "counter" member Matt Kraai (1): USB: skeleton: Use dev_info instead of info Matt LaPlante (2): trivial: fix typos/grammar errors in fs/Kconfig trivial: fix typos/grammar errors in Kconfig texts Matthew Garrett (16): thermal: use integers rather than strings for thermal values ACPI: move thermal trip handling to generic thermal layer [CPUFREQ] Change link order of x86 cpufreq modules [CPUFREQ] Make cpufreq-nforce2 less obnoxious Allow relatime to update atime once a day Add a strictatime mount option Make relatime default sony-laptop: Add support for new Sony platform API sony-laptop: Enable EC on newer hardware sony-laptop: Add support for extra keyboard events sony-laptop: Add rfkill support on new models sony-laptop: Add support for extended hotkeys thermal: support forcing support for passive cooling ACPI: Populate DIDL before registering ACPI video device on Intel dell-wmi: new driver for hotkey control serial: Update PNP IDs Matthew Ranostay (7): Add PCI DFI vendor ID ALSA: hda: add reference board SND_PCI_QUIRK ALSA: hda: 92hd71xxx disable unmute support for codecs that don't have input amps ALSA: hda: Added stac378x digital slave out struct ALSA: hda: Add STAC_DELL_S14 quirk ALSA: Add 92HD81B1C device id ALSA: hda - Add VREF powerdown sequence for another board Matthew Wilcox (12): [SCSI] Add VPD helper [SCSI] ses: Use new scsi VPD helper [SCSI] sd: Refactor sd_read_capacity() [SCSI] sd: Try READ CAPACITY 16 first for SBC-2 devices Rewrite MSI-HOWTO PCI MSI: Replace 'type' with 'is_msix' PCI MSI: msi_desc->dev is always initialised PCI MSI: Use mask_pos instead of mask_base when appropriate PCI MSI: Refactor interrupt masking code PCI MSI: Add support for multiple MSI sysctl: fix suid_dumpable and lease-break-time sysctls ata: Add TRIM infrastructure Matthias Fuchs (1): rtc: add EPSON RX8025 support to DS1307 RTC driver Matthias Schwarzott (5): V4L/DVB (10662): remove redundant memset after kzalloc V4L/DVB (10822): Add support for Zarlink ZL10036 DVB-S tuner. V4L/DVB (10823): saa7134: add DVB support for Avermedia A700 cards V4L/DVB (10948): flexcop-pci: Print a message in case the new stream watchdog detects a problem V4L/DVB (11386): saa7134: Add analog RF tuner support for Avermedia A700 DVB-S Hybrid+FM card Matthias Welwarsky (2): sony-laptop: new style events typo fixes sony-laptop: fix event reporting for new style events Matthias-Christian Ott (1): [CPUFREQ] p4-clockmod reports wrong frequency. Mattia Dongili (3): sony-laptop: merge Type4 into Type3 sony-laptop: Make sony_pic_set_wwanpower not take mutexes sony-laptop: update copyright Mauro Carvalho Chehab (62): V4L/DVB (10211): vivi: Implements 4 inputs on vivi V4L/DVB (10298): remove err macro from few usb devices V4L/DVB (10305): videobuf-vmalloc: Fix: videobuf memory were never freed V4L/DVB (10394): KWorld ATSC 115 all static V4L/DVB (10404): saa7134-core: remove oss option, since saa7134-oss doesn't exist anymore V4L/DVB (10405): saa7134-core: loading saa7134-alsa is now the default V4L/DVB (10504): tda827x: Be sure that gate will be open/closed at the proper time V4L/DVB (10505): tda8290: Print an error if i2c_gate is not provided V4L/DVB (10506): saa7134: move tuner init code to saa7134-cards V4L/DVB (10507): saa7134: Fix analog mode on devices that need to open an i2c gate V4L/DVB (10508): saa7134: Cleanup: remove unused waitqueue from struct V4L/DVB (10509): saa7134-video: two int controls lack a step V4L/DVB (10511): saa7134: get rid of KBL V4L/DVB (10512): tda1004x: Fix eeprom firmware load on boards with 16MHz Xtal V4L/DVB (10514): em28xx: Add support for Kaiomy TVnPC U2 stick V4L/DVB (10515): Adds IR table for the IR provided with this board and includes it at V4L/DVB (10516): em28xx: Add support for Easy Cap Capture DC-60 V4L/DVB (10570): v4l2-framework: documments videobuf usage on drivers V4L/DVB (10571): v4l2-framework.txt: Fixes the videobuf init functions V4L/DVB (10654): em28xx: VideoMate For You USB TV box requires tvaudio V4L/DVB (10738): Get rid of video_decoder.h header were uneeded V4L/DVB(10738a): remove include/linux/video_encoder.h V4L/DVB (10769): Update dependencies of the modules converted to V4L2 V4L/DVB (10771): tea575x-tuner: convert it to V4L2 API V4L/DVB (10835): Kconfig: Add some missing selects for a required frontends V4L/DVB (10836): Kconfig: replace DVB_FE_CUSTOMIZE to DVB_FE_CUSTOMISE V4L/DVB (10837): Kconfig: only open the customise menu if selected V4L/DVB (10838): get rid of the other occurrences of DVB_FE_CUSTOMIZE typo V4L/DVB (10840): em28xx-dvb: Remove an unused header V4L/DVB (10842): Adds some missing frontend selects for saa7134 and dvb-usb V4L/DVB (10870): v4l2-ioctl: get rid of video_decoder.h V4L/DVB (10896): /frontends/Kconfig: Move af9013 Kconfig option to its proper place V4L/DVB (10897): Fix Kbuild MEDIA_TUNER_CUSTOMIZE dependencies V4L/DVB (10870a): remove all references for video_decoder.h V4L/DVB (10907): avoid loading the entire videodev.h header on V4L2 drivers V4L/DVB (10951): xc5000: Fix CodingStyle errors introduced by the last patch V4L/DVB (10908): videobuf-core: also needs a minimal subset of V4L1 header V4L/DVB (11108): get_dvb_firmware: Add option to download firmware for cx231xx V4L/DVB (11109): au0828: Fix compilation when VIDEO_ADV_DEBUG = n V4L/DVB (11110): au8522/au0828: Fix Kconfig dependencies V4L/DVB (11111): dvb_dummy_fe: Fix compilation breakage V4L/DVB (11127): Kconfig: replace all occurrences of CUSTOMIZE to CUSTOMISE V4L/DVB (11136): get_dvb_firmware: Add download code for cx18 firmwares V4L/DVB (11137): get_dvb_firmware: add cx23885 firmwares V4L/DVB (11138): get_dvb_firmware: add support for downloading the cx2584x firmware for pvrusb2 V4L/DVB (11225): v4lgrab: fix compilation warnings V4L/DVB (11226): avoid warnings for request_ihex_firmware on dabusb and vicam V4L/DVB (11227): ce6230: avoid using unitialized var V4L/DVB (11308): msp3400: use the V4L2 header since no V4L1 code is there V4L/DVB (10953): cx25840: Fix CodingStyle errors introduced by the last patch V4L/DVB (10955): cx231xx: CodingStyle automatic fixes with Lindent V4L/DVB (10956): cx231xx: First series of manual CodingStyle fixes V4L/DVB (10957a): cx231xx: Fix compilation breakage V4L/DVB (11130): cx231xx: fix an inverted logic at vidioc_streamoff V4L/DVB (11131): cx231xx: avoid trying to access unfilled dev struct V4L/DVB (11132): cx231xx: usb probe cleanups V4L/DVB (11133): cx231xx: don't print pcb config debug messages by default V4L/DVB (11134): cx231xx: dmesg cleanup V4L/DVB (11135): cx231xx: use usb_make_path() for bus_info V4L/DVB (11250): cx231xx: Fix Kconfig help items V4L/DVB (11360): em28xx: use usb_interface.dev for v4l2_device_register cx231xx: Convert to snd_card_create() Maxime Bizon (1): [ARM] Kirkwood: invalidate L2 cache before enabling it Michael Buesch (40): b43: Fixup set_key handling b43: Use 64bit atomic register access for TSF b43/ssb: Add SPROM8 extraction and LP-PHY detection b43: Change schedule for old-fw support removal b43: Automatically probe for opensource firmware b43: Fix phy_g.c compiler warning b43: Dynamically control log verbosity b43: Add LP-PHY register definitions b43: Add LP-PHY baseband init for >=rev2 b43: Add LP 2062 radio init ssb: Add PMU support b43: Port spec bugfixes for the LP baseband init b43: (b2062) Fix crystal frequency calculations b43: Add parts of LP-PHY TX power control b43: Move DMA stop sanity check b43: Fix DMA buffer size handling b43: Optimize DMA buffers b43: Add slot count compiletime assertion b43: Fix radio host flags b43: Honor the no-slow-clock boardflag b43: Enable PCI slow clock workaround, if needed. mac80211: Add software scan notifiers b43: Implement sw scan callbacks b43: Convert usage of b43_phy_set() b43: Convert usage of b43_phy_mask() b43: Convert usage of b43_phy_maskset() b43: Convert usage of b43_radio_set() b43: Convert usage of b43_radio_mask() b43: Convert usage of b43_radio_maskset() b43: Remove bogus integer truncation warnings ssb: Add SPROM fallback support b43: Pass more RX flags to mac80211 b43: Fix compilation for devices without PCI core b43: Mask PHY TX error interrupt, if not debugging ssb: remove EXPERIMENTAL dependencies. b43: Add BCM4307 PCI-ID bcm47xx: fix GPIO API return codes spi-gpio: allow operation without CS signal b44: Fix sizes passed to b44_sync_dma_desc_for_{device,cpu}() b44: Use kernel DMA addresses for the kernel DMA API Michael Chan (1): bnx2: Use request_firmware() Michael Ellerman (28): x86: Remove never-called arch_setup_msi_irq() powerpc: Remove unused ppc64_terminate_msg() powerpc: Allow debugging of LMBs with lmb=debug lmb: Rework lmb_dump_all() output powerpc/pseries: Fix MSI-X interrupt querying powerpc/pseries: Add support for ibm,req#msi-x powerpc/pseries: Check for MSI-X also in rtas_msi_pci_irq_fixup() powerpc/pseries: Return the number of MSIs we could allocate powerpc/pseries: Return req#msi(-x) if request is larger powerpc/pseries: Implement a quota system for MSIs powerpc: Deindentify identify_cpu() powerpc: Make sure we copy all cpu_spec features except PMC related ones powerpc: Remove unused asm-offsets entries for cpu_spec powerpc: Print linux_banner in prom_init powerpc/pseries: Reject discontiguous/non-zero based MSI-X requests powerpc/pseries: The pseries MSI code depends on EEH powerpc/cell: Fix Axon MSI driver dependencies powerpc/pseries: The RPA PCI hotplug driver depends on EEH PCI/MSI: Use #ifdefs instead of weak functions PCI/MSI: Allow arch code to return the number of MSI-X available PCI MSI: Add example request loop to MSI-HOWTO.txt powerpc/cell: Make axonram depends on BLOCK powerpc/msi: Mark the MSI bitmap selftest code as __init powerpc: Turn on self-tests in ppc64_defconfig MAINTAINERS: add hvc_console powerpc: Print information about mapping hw irqs to virtual irqs powerpc/ftrace: Fix #if that should be #ifdef powerpc/ftrace: Fix printf format warning Michael Hennerich (7): Blackfin arch: add a check to make sure only Blackfin GPIOs may generate IRQs Blackfin arch: enable the platfrom PATA driver with CF Cards Blackfin arch: Privide BF537-STAMP platform data of ADP5520 Multifunction driver Blackfin arch: Blacklist Hibernate (PM_SUSPEND_MEM) on BF561 as well blackfin: BF538/9 serial uart support Blackfin SPI Driver: Fix erroneous SPI Clock divisor calculation Blackfin SPI Driver: Add GPIO controlled SPI Slave Select support Michael Hillmann (1): Staging: comedi: add ke_counter driver Michael Holzheu (5): [S390] zfcpdump: Prevent zcore from beeing built as a kernel module. [S390] s390dbf: Remove redundant initilizations. [S390] s390dbf: Remove needless check for NULL pointer. [S390] ipl: Improve checking logic and remove switch defaults. [S390] Ensure that ipl panic notifier is called late. Michael K. Johnson (1): x86, setup: mark %esi as clobbered in E820 BIOS call Michael Krufky (36): V4L/DVB (10415): dib0700: add data debug to dib0700_i2c_xfer_new V4L/DVB (10416): tveeprom: update to include Hauppauge tuners 151-155 V4L/DVB (10417): sms1xxx: add missing usb id 2040:2011 V4L/DVB (10746): sms1xxx: enable rf switch on Hauppauge Tiger devices V4L/DVB (10747): sms1xxx: move definition of struct smsdvb_client_t into smsdvb.c V4L/DVB (10749): sms1xxx: move smsusb_id_table into smsusb.c V4L/DVB (10751): sms1xxx: fix checkpatch.pl violations introduced by previous changeset V4L/DVB (10752): sms1xxx: load smsdvb module automatically based on device id V4L/DVB (10753): siano: convert EXPORT_SYMBOL to EXPORT_SYMBOL_GPL V4L/DVB (10772): siano: prevent duplicate variable declaration V4L/DVB (10779): mxl5007t: remove analog tuning code V4L/DVB (10780): mxl5007t: remove function mxl5007t_check_rf_input_power V4L/DVB (10781): mxl5007t: mxl5007t_get_status should report if tuner is locked V4L/DVB (10782): mxl5007t: warn when unknown revisions are detected V4L/DVB (10783): mxl5007t: fix devname for hybrid_tuner_request_state V4L/DVB (10784): mxl5007t: update driver for MxL 5007T V4 V4L/DVB (10876): tda18271: add support for AGC configuration via tuner callback V4L/DVB (10877): saa7134: add analog support for Hauppauge HVR1110r3 boards V4L/DVB (10898): remove build-time dependencies on dib7000m V4L/DVB (10899): remove build-time dependencies on dib7000p V4L/DVB (10900): remove build-time dependencies on dib3000mc V4L/DVB (10901): cleanup linewraps in dib7000p.h V4L/DVB (10902): cleanup linewraps in dib7000m.h V4L/DVB (10903): cleanup linewraps in dib3000mc.h V4L/DVB (10904): remove dib0070_ctrl_agc_filter from dib0070.h V4L/DVB (10905): dib0700: enable DVB_FE_CUSTOMISE for dibcom frontends V4L/DVB (10923): saa7134: fix typo in product name V4L/DVB (10924): saa7134: enable serial transport streaming interface V4L/DVB (10925): add support for LG Electronics LGDT3305 ATSC/QAM-B Demodulator V4L/DVB (10926): saa7134: enable digital tv support for Hauppauge WinTV-HVR1120 V4L/DVB (10927): dib0700: add support for Hauppauge ATSC MiniCard V4L/DVB (10968): lgdt3305: add email address to MODULE_AUTHOR V4L/DVB (10969): lgdt3305: add missing space in comment V4L/DVB (10970): lgdt3305: add MODULE_VERSION V4L/DVB (10984): lgdt3305: avoid OOPS in error path of lgdt3305_attach V4L/DVB (11251): tuner: prevent invalid initialization of t->config in set_type Michael Neuling (4): powerpc: Add alignment handler for new lfiwzx instruction powerpc: Fix load/store float double alignment handler powerpc: Disable VSX or current process in giveup_fpu/altivec powerpc: Fix ptrace compat wrapper for FPU register access Michael Schmitz (2): m68k: section mismatch fixes: DMAsound for Atari m68k: section mismatch fixes: Atari SCSI Michael Schwingen (1): ALSA: hda - add support for "Maxdata Favorit 100XS" (Intel HDA/ALC260) Michael Tokarev (1): tun: Check supplemental groups in TUN/TAP driver. Michael Trimarchi (1): sh: Fix up DSP context save/restore. Michal Dobes (7): Staging: comedi: add amcc_s5933 header file Staging: comedi: add adl_pci9118 driver Staging: comedi: add adv_pci1710 driver Staging: comedi: add pcl724 driver Staging: comedi: add pcl821 driver Staging: comedi: add pcl818 driver Staging: comedi: add adv_pci_dio driver Michal Januszewski (2): uvesafb: fix selecting mode with the vbemode option uvesafb: documentation update Michel Lachaine (2): Staging: comedi: add adl_pci7432 driver Staging: comedi: add adl_pci8164 driver Mikael Pettersson (1): [ARM] 5435/1: fix compile warning in sanity_check_meminfo() Mike Christie (13): [SCSI] iser: have iser use its own logging [SCSI] libiscsi: replace scsi_debug logging with session/conn logging [SCSI] libiscsi_tcp: replace tcp_debug/scsi_debug logging with session/conn logging [SCSI] iscsi_tcp: replace scsi_debug/tcp_debug logging with iscsi conn logging [SCSI] libiscsi: don't cap queue depth in iscsi modules [SCSI] iscsi class: fix lock dep warning on logout [SCSI] iscsi lib: have lib create work queue for transmitting IO [SCSI] iscsi lib: remove qdepth param from iscsi host allocation [SCSI] libiscsi: pass session failure a session struct [SCSI] iscsi class: remove host no argument from session creation callout [SCSI] libiscsi: fix possbile null ptr session command cleanup [SCSI] cxgb3i: re-read ddp settings information after chip reset [SCSI] cxgb3i: call ddp release function directly Mike Frysinger (31): ASoC: Blackfin: cleanup sport handling in ASoC Blackfin AC97 code ASoC: Blackfin: drop unnecessary dma casts ASoC: Blackfin: move gpio_err behind the define that is only user of it ASoC: Blackfin: fix typo in MUTE definition [MTD] [NAND] Blackfin NFC Driver: do not clobber DMAC1_PERIMUX [MTD] [NAND] Blackfin NFC Driver: mark bf5xx_nand_add_partition() as __devinit [MTD] [NAND] Blackfin NFC Driver: drop pointless casts with set_dma_callback() Blackfin arch: include linux headers that this one uses definitions from fro sport drivers Blackfin arch: bf51x processors also have 8 timers Blackfin arch: convert BF5{18,27,48}_FAMILY to CONFIG_BF{51,52,54}x Blackfin arch: clean up sports header file Blackfin arch: add link-time asserts to make sure on-chip regions dont overflow bin_elf_fdpic: check the return value of clear_user blackfin: Use unsigned long for flags with irq functions Blackfin SPI Driver: remove useless Blackfin SPI Driver: use len_in_bytes when we care about the number of bytes transferred Blackfin SPI Driver: pass DMA overflow error to the higher level Blackfin SPI Driver: unify duplicated code in dma read/write paths Blackfin SPI Driver: drop bogus cast and touchup dma label Blackfin SPI Driver: add a few more DMA debug messages Blackfin SPI Driver: do not check for SPI errors if DMA itself did not flag any Blackfin SPI Driver: use the properl BIT_CTL_xxx defines Blackfin SPI Driver: SPI slave select code cleanup Blackfin SPI Driver: get dma working for SPI flashes Blackfin SPI Driver: add timeout while waiting for SPIF in dma irq handler Blackfin SPI Driver: tweak magic spi dma sequence to get it working on BF54x Blackfin SPI Driver: use bfin_spi_ prefix on all functions Blackfin SPI Driver: fix NULL pointer crash Change KCONFIG name KGDB_SERIAL_CONSOLE check for module Adjust path to gpio headers Mike Galbraith (1): sched: add avg_overlap decay Mike Isely (65): V4L/DVB (10236): pvrusb2: Stop advertising VBI capability - it isn't there V4L/DVB (10237): pvrusb2: Generate a device-unique identifier V4L/DVB (10238): pvrusb2: Change sysfs serial number handling V4L/DVB (10239): pvrusb2: Fix misleading comment caused by earlier commit V4L/DVB (10258): pvrusb2: Issue VIDIOC_INT_INIT to v4l2 modules when they first attach V4L/DVB (10259): pvrusb2: Code module name directly in printk V4L/DVB (10303): pvrusb2: Use usb_make_path() to determine device bus location V4L/DVB (11154): pvrusb2: Split i2c module handling from i2c adapter V4L/DVB (11155): pvrusb2: Set up v4l2_device instance V4L/DVB (11156): pvrusb2: Changes to further isolate old i2c layer V4L/DVB (11157): pvrusb2: whitespace trivial tweaks V4L/DVB (11158): pvrusb2: New device attribute mechanism to specify sub-devices V4L/DVB (11159): pvrusb2: Providing means to stop tracking an old i2c module V4L/DVB (11160): pvrusb2: whitespace tweaks V4L/DVB (11161): pvrusb2: Set i2c autoprobing to be off by default V4L/DVB (11162): pvrusb2: Tie up loose ends with v4l2-subdev setup V4L/DVB (11163): pvrusb2: Lay foundation for triggering sub-device updates V4L/DVB (11164): pvrusb2: Tie-in sub-device log requests V4L/DVB (11165): pvrusb2: Tie in debug register access to sub-devices V4L/DVB (11166): pvrusb2: Implement status fetching from sub-devices V4L/DVB (11167): pvrusb2: Tie in various v4l2 operations into the sub-device mechanism V4L/DVB (11168): pvrusb2: Define value for a null sub-device ID V4L/DVB (11169): pvrusb2: Note who our video decoder sub-device is, and set it up V4L/DVB (11170): pvrusb2: Clean-up / placeholders inserted for additional development V4L/DVB (11171): pvrusb2: Tie in sub-device decoder start/stop V4L/DVB (11172): pvrusb2: Cause overall initialization to fail if sub-driver(s) fail V4L/DVB (11173): pvrusb2: Fix backwards function header comments V4L/DVB (11174): pvrusb2: Implement reporting of connected sub-devices V4L/DVB (11175): pvrusb2: Implement sub-device specific update framework V4L/DVB (11176): pvrusb2: Tie in wm8775 sub-device handling V4L/DVB (11177): pvrusb2: Tie in saa7115 sub-device handling V4L/DVB (11178): pvrusb2: Make audio sample rate update into a sub-device broadcast V4L/DVB (11179): pvrusb2: make sub-device specific update function names uniform V4L/DVB (11180): pvrusb2: Tie in msp3400 sub-device support V4L/DVB (11181): pvrusb2: Fix silly 80 column issue V4L/DVB (11182): pvrusb2: Tie in cx25840 sub-device support V4L/DVB (11183): pvrusb2: Implement more sub-device loading trace and improve error handling V4L/DVB (11184): pvrusb2: Define default i2c address for wm8775 sub-device V4L/DVB (11185): pvrusb2: Fix uninitialized counter V4L/DVB (11186): pvrusb2: Fix bugs involved in listing of sub-devices V4L/DVB (11187): pvrusb2: Allow sub-devices to insert correctly V4L/DVB (11188): pvrusb2: Sub-device update must happen BEFORE state dirty bits are cleared V4L/DVB (11189): pvrusb2: Deal with space-after-comma coding style idiocy V4L/DVB (11190): pvrusb2: Broadcast tuner type change to sub-devices V4L/DVB (11191): pvrusb2: Define default I2C address for cx25840 sub-device V4L/DVB (11192): pvrusb2: Implement trace print for stream on / off action V4L/DVB (11193): pvrusb2: Correct some trace print inaccuracies V4L/DVB (11194): pvrusb2: Implement mechanism to force a full sub-device update V4L/DVB (11195): pvrusb2: Issue required core init broadcast to all sub-devices V4L/DVB (11196): pvrusb2: Define default I2C addresses for msp3400 and saa7115 sub-devices V4L/DVB (11197): pvrusb2: Fix incorrectly named sub-device ID V4L/DVB (11198): pvrusb2: Define default I2C address for CS53L32A sub-device V4L/DVB (11199): pvrusb2: Convert all device definitions to use new sub-device declarations V4L/DVB (11200): pvrusb2: Make a bunch of dvb config structures const (trivial) V4L/DVB (11201): pvrusb2: Fix space-after-comma idiocy V4L/DVB (11202): pvrusb2: Fix slightly mis-leading header in debug interface output V4L/DVB (11203): pvrusb2: Implement better reporting on attached sub-devices V4L/DVB (11204): pvrusb2: Remove old i2c layer; we use v4l2-subdev now V4L/DVB (11205): pvrusb2: Remove ancient IVTV specific ioctl functions V4L/DVB (11206): pvrusb2: Add sub-device for demod V4L/DVB (11207): pvrusb2: Add composite and s-video input support for OnAir devices V4L/DVB (11208): pvrusb2: Use v4l2_device_disconnect() V4L/DVB (11332): pvrusb2: Fix incorrect reporting of default value for non-integer controls V4L/DVB (11333): pvrusb2: Report def_val items in sysfs symbolically, consistent with cur_val V4L/DVB (11334): pvrusb2: Fix uninitialized tuner_setup field(s) Mike Mason (1): powerpc/eeh: Only disable/enable LSI interrupts in EEH Mike Miller (2): cciss: kernel scan thread for MSA2012 cciss: change to discover first memory BAR Mike Rapoport (22): [ARM] pxa/em-x270: updates for 2.6.29 [ARM] pxa: update xm_x2xx_defconfig [ARM] pxa/em-x270: update MMC/SDIO implementation [ARM] pxa/em-x270: introduce macors to to simplify da9030 subdev initialization [ARM] pxa/em-x270: add battery charger [ARM] pxa/em-x270: prepare addition of eXeda machine to em-x270.c [ARM] pxa: add eXeda platform support [ARM] pxa: prepare xm_x2xx_defconfig for split [ARM] pxa: add em_x270_defconfig for EM-X270 and eXeda libertas: if_spi: add ability to call board specific setup/teardown methods [ARM] pxa: add DM9000_PLATF_NO_EEPROM flag to CM-X... platforms [MTD] [NAND] pxa3xx_nand: use resource_size instead of 'r->end - r->start + 1' [MTD] [NAND] pxa3xx_nand: allow building as module [MTD] [NAND] pxa3xx_nand: add ability to keep controller settings defined by OBM/bootloader regulator: add unset_regulator_supplies to fix regulator_unregister rtc-v3020: coding style cleanup [ARM] 5442/1: pxa/cm-x255: fix reverse RDY gpios in PCMCIA driver rtc-v3020: add ability to access v3020 chip with GPIOs spi_bfin5xx: remove unused IS_DMA_ALIGNED macro SPI: add dma_alignment field to spi_master pxa2xx_spi: set spi_master.dma_alignment = 8 spi_imx: set spi_master.dma_alignment = 4 Mike Snitzer (3): ext4: Remove stale block allocator references from ext4.h dm log: use standard kernel module refcount dm log: remove struct dm_dirty_log_internal Mike Travis (21): cpumask: update irq_desc to use cpumask_var_t cpumask: fix bug in use cpumask_var_t in irq_desc SGI UV cpumask: use static temp cpumask in flush_tlb x86: cleanup remaining cpumask_t code in mce_amd_64.c x86: reduce stack usage in init_intel_cacheinfo cpumask: use cpumask_var_t in dcdbas.c cpumask: reduce stack usage in find_lowest_rq Xen: reduce memory required for cpu_evtchn_mask irq: change references from NR_IRQS to nr_irqs irq: use WARN() instead of WARN_ON(). irq: allocate irq_desc_ptrs array based on nr_irqs irq: initialize nr_irqs based on nr_cpu_ids kstat: modify kstat_irqs_legacy to be variable sized cpumask, irq: non-x86 build failures irq: update all arches for new irq_desc irq: update all arches for new irq_desc, fix x86: fix build warning when CONFIG_NUMA not defined. sched: fix warning on ia64 x86: cleanup early setup_percpu references cpufreq: use work_on_cpu in acpi-cpufreq.c for drv_read and drv_write x86: put trigger in to detect mismatched apic versions. Mikhail Zolotaryov (1): powerpc 4xx EMAC driver: device name reported on timeout is not correct Miklos Szeredi (7): lockd: clean up blocking lock cases of nlsmvc_lock() fuse: allow kernel to access "direct_io" files fuse: allow private mappings of "direct_io" files uml: fix compile error from net_device_ops conversion uml: fix link error from prefixing of i386 syscalls with ptregs_ uml: fix warnings in kernel_execve splice: fix deadlock in splicing to file Mikulas Patocka (17): dm: preserve bi_io_vec when resubmitting bios dm raid1: switch read_record from kmalloc to slab to save memory dm io: make sync_io uninterruptible dm snapshot: refactor __find_pending_exception dm snapshot: avoid dropping lock in __find_pending_exception dm snapshot: avoid having two exceptions for the same chunk dm: bio list add bio_list_add_head dm: remove unnecessary work queue type field dm: remove unnecessary work queue context field dm: remove unnecessary struct dm_wq_req dm: rename __split_bio dm: move bio_io_error into __split_and_process_bio dm: merge __flush_deferred_io into caller dm: allow uninterruptible wait for pending io dm: merge pushback and deferred bio lists dm: move wait queue declaration dm: set queue ordered mode Milind Arun Choudhary (1): proc: fix sparse warnings in pagemap_read() Miloslav Trmac (2): Audit: fix handling of 'strings' with NULL characters audit: ignore terminating NUL in AUDIT_USER_TTY messages Milton Miller (4): powerpc/numa: Avoid possible reference beyond prop. length in find_min_common_depth() powerpc/numa: Remove redundant find_cpu_node() powerpc/pseries: Remove write only variable in PCI DLPAR powerpc/pci: Move hose_list and pci_address_to_pio to pci-common Mimi Zohar (11): integrity: IMA hooks integrity: IMA as an integrity service provider integrity: IMA display integrity: IMA policy integrity: IMA policy open Integrity: IMA file free imbalance Integrity: IMA update maintainers integrity: shmem zero fix integrity: audit update integrity: ima scatterlist bug fix integrity: ima iint radix_tree_lookup locking fix MinChan Kim (2): vmap: remove needless lock and list in vmap mm: shrink_all_memory(): use sc.nr_reclaimed Ming Lei (7): USB: ch341 serial: fix port number changed after resume driver core: check bus->match without holding device lock platform driver: fix incorrect use of 'platform_bus_type' with 'struct device_driver' driver core: remove polling for driver_probe_done(v5) driver core: move platform_data into platform_device driver core: fix passing platform_data Driver core: implement uevent suppress in kobject Mingming Cao (5): quota: Add quota reservation support quota: Add quota reservation claim and released operations quota: Use inode->i_blkbits to get block bits quota: Move EXPORT_SYMBOL immediately next to the functions/varibles ext4: quota reservation for delayed allocation Mithlesh Thukral (31): Staging: sxg: New SXG_SGL design and MAC Header changes Staging: sxg: Typedef removal - pending work Staging: sxg: Commenting style fixes - Pending work Staging: sxg: Indentation fixes - mostly 80 char lines Staging: sxg: Receive code and data structure cleanups Staging: sxg: Ethtool framework and Receive code path changes Staging: sxg: SXG SGL related cleanup in data structures and code Staging: sxg: Locking related changes. Fix locking levels Staging: sxg: Add Ethtool functionality enhancement and misc cleanups Staging: sxg: Firmware updates Staging: sxg: Fix to load card on low memory machines Staging: sxg: Add multicast support for Sahara SXG driver Staging: sxg: Add NAPI feature to Sahara SXG Driver Staging: sxg: Cleanup the SXG driver of unused space and functions Staging: sxg: Add Jumbo frames support to Sahara SXG Driver Staging: sxg: Removed unnecessary checks while taking Transmit Locks Staging: sxg: Make SXG driver use MSI-X interrupts if possible Staging: sxg: Add Checksum Offload support for Sahara SXG driver Staging: sxg: Fix memory leak in case of allocation failure Staging: sxg: Add firmware files for Rev B card Staging: sxg: Add Rev B support in the Sahara SXG driver Staging: sxg: Remove unused Rev A microcode files Staging: sxg: Add checksum control option through ethtool interface Staging: sxg: Fix memory leak caused by double allocation of rings Staging: sxg: Fix the module in Kconfig file for Sahara SXG driver Staging: sxg: Fix interface bug not working after open is called second time. Staging: sxg: Read the correct MAC address from the card for Rev B cards Staging: sxg: Fix a warning dump emitted by rtnl_watchdog during LTP tests Staging: sxg: Add watchdog timer for managing Link states for SXG driver Staging: sxg: Add support to download the firmware using request_firmware() Staging: sxg: slicoss: Specify the license for Sahara SXG and Slicoss drivers Mohamed Abbas (6): iwlagn: fix warning when set WEP key iwlagn: use changed in mac_config iwl3945: use changed in iwl3945_mac_config iwlagn: allow power level setting all the times iwlcore: dont commit power command if interface is not up iwlwifi: support 11h Moni Shoua (2): IB/mlx4: Fix dispatch of IB_EVENT_LID_CHANGE event IB/mthca: Fix dispatch of IB_EVENT_LID_CHANGE event Moritz Muehlenhoff (64): Staging: wlan-ng: Remove use of __WLAN_ATTRIB_PACK__ Staging: wlan-ng: Remove use of WLAN_ADDR_LEN Staging: wlan-ng: Remove stray comments in header files Staging: wlan-ng: Cleanup wlan_compat.h more Staging: wlan-ng: Remove DBFENTER/DBFEXIT macros Staging: wlan-ng: Use generic byteorder macros Staging: wlan-ng: Replace BITx with the generic BIT(x) Staging: wlan-ng: Move URB_ASYNC_UNLINK and USB_QUEUE_BULK out of wlan_compat.h Staging: wlan-ng: Remove WLAN_LOG_INFO Staging: wlan-ng: Remove wlan_max()/wlan_min() Staging: wlan-ng: Replace WLAN_LOG_NOTICE with printk() Staging: wlan-ng: Replace WLAN_LOG_ERROR() with printk() Staging: wlan-ng: Replace WLAN_LOG_WARNING() with printk() Staging: wlan-ng: Replace wlan_isprint() with generic isprint() Staging: wlan-ng: Remove dead/unused code from p80211types.h Staging: wlan-ng: Remove dead/unused code from p80211hdr.h Staging: wlan-ng: Remove dead/unused code from p80211meta.h Staging: wlan-ng: Remove dead/unused code from hfa384x.h Staging: wlan-ng: Remove dead/unused code from p80211msg.h Staging: wlan-ng: Remove dead/unused code from p80211netdev.h Staging: wlan-ng: Remove dead/unused code from p80211conv.c Staging: wlan-ng: Remove dead/unused code from p80211conv.h Staging: wlan-ng: Remove dead/unused code from p80211req.c Staging: wlan-ng: Replace SSWAP() with the generic swap(). Also remove a Staging: wlan-ng: Remove more dead/unused code from p80211types.h Staging: wlan-ng: Remove dead/unused code from prism2sta.c Staging: wlan-ng: Remove dead code from prism2mgmt.c Staging: wlan-ng: Remove dead code from hfa384x_usb.c Staging: wlan-ng: Remove unused header file p80211metamib.h Staging: wlan-ng: Remove dead/unused code from p80211metadef.h Staging: wlan-ng: Remove dead/unused code from p80211ioctl.h Staging: wlan-ng: Remove dead/unused code from hfa384x.h and p80211metamsg.h Staging: wlan-ng: Remove more dead/unused code from hfa384x.h Staging: wlan-ng: Remove WLAN_INCLUDE_DEBUG and some related, mostly unused Staging: wlan-ng: Move netdevice_t typedef into p80211netdev.h Staging: wlan-ng: Move wlan_mkprintstr() and wlan_hexchar() macros into prism2sta.c Staging: wlan-ng: Replace WLAN_LOG_DEBUG() with printk(KERN_DEBUG Staging: wlan-ng: p80211req.h: Coding style cleanups Staging: wlan-ng: p80211req.c: Coding style cleanups Staging: wlan-ng: prism2mgmt.h: Coding style cleanups Staging: wlan-ng: hfa384x.h: Coding style cleanups Staging: wlan-ng: p80211wext.c: Coding style cleanups Staging: wlan-ng: p80211meta.h: Coding style cleanups Staging: wlan-ng: p80211ioctl.h: Coding style cleanups Staging: wlan-ng: p80211metastruct.h: Coding style cleanups Staging: wlan-ng: p80211hdr.h: Coding style cleanups Staging: wlan-ng: p80211conv.h: Coding style cleanups Staging: wlan-ng: p80211conv.c: Coding style cleanups Staging: wlan-ng: p80211types.h: Coding style cleanups Staging: wlan-ng: p80211msg.h: Coding style cleanups Staging: wlan-ng: p80211netdev.h: Coding style cleanups Staging: wlan-ng: p80211mgmt.h: Coding style cleanups Staging: wlan-ng: prism2mib.c: Coding style cleanups Staging: wlan-ng: prism2usb.c: Coding style cleanups Staging: wlan-ng: prism2sta.c: Coding style cleanups Staging: wlan-ng: p80211netdev.c: Coding style cleanups Staging: wlan-ng: hfa384x_usb.c: Coding style cleanups Staging: wlan-ng: prism2mgmt.c: Coding style cleanups Staging: wlan-ng: Remove dead code from prism2mib.c Staging: wlan-ng: Remove more dead code from hfa384x_usb.c Staging: wlan-ng: Remove unnecessary checks for NULL before calling kfree() Staging: wlan-ng: Remove dead code from p80211netdev.c Staging: wlan-ng: Remove the now empty wlan_compat.h Staging: wlan-ng: Replace local byteorder macros MĂ¡rton NĂ©meth (2): V4L/DVB (10633): DAB: fix typo V4L/DVB (11293): uvcvideo: Add zero fill for VIDIOC_ENUM_FMT Nam Phạm ThĂ nh (1): V4L/DVB (10242): pwc: add support for webcam snapshot button Nathan Fontenot (2): powerpc/numa: Cleanup hot_add_scn_to_nid powerpc/pseries: Failed reconfig notifier chain call cleanup Nathan Williams (1): solos: Automatically determine number of ports Neil Horman (8): crypto: ansi_cprng - Force reset on allocation crypto: ansi_cprng - Panic on CPRNG test failure when in FIPS mode crypto: ansi_cprng - Add maintainer Network Drop Monitor: Add trace declaration for skb frees Network Drop Monitor: Adding kfree_skb_clean for non-drops and modifying end-of-line points for skbs Network Drop Monitor: Adding drop monitor implementation & Netlink protocol Network Drop Monitor: Adding Build changes to enable drop monitor kexec: add dmesg log symbols to /proc/vmcoreinfo lists NeilBrown (43): NFS: flush cached directory information slightly more readily. md: Fix is_mddev_idle test (again). md: Allow write-intent bitmaps to have chunksize < PAGE_SIZE md: never clear bit from the write-intent bitmap when the array is degraded. md: write bitmap information to devices that are undergoing recovery. md: move LEVEL_* definition from md_k.h to md_u.h md: move most content from md.h to md_k.h md: move lots of #include lines out of .h files and into .c md: move md_k.h from include/linux/raid/ to drivers/md/ md: occasionally checkpoint drive recovery to reduce duplicate effort after a crash md: be more consistent about setting WriteMostly flag when adding a drive to an array md/raid5: simplify interface for init_stripe and get_active_stripe md/raid5: change raid5_compute_sector and stripe_to_pdidx to take a 'previous' argument md/raid6: remove expectation that Q device is immediately after P device. md/raid5: simplify raid5_compute_sector interface md/raid5: Add support for new layouts for raid5 and raid6. md/raid5: finish support for DDF/raid6 md: make sure new_level, new_chunksize, new_layout always have sensible values. md/raid5: refactor raid5 "run" md: md_unregister_thread should cope with being passed NULL md: enable suspend/resume of md devices. md: add ->takeover method to support changing the personality managing an array md: add ->takeover method for raid5 to be able to take over raid1 md/raid5: allow layout/chunksize to be changed on an active 2-drive raid5. md: add takeover support for raid4 -> raid5 conversion. md: add takeover support for converting raid6 back into raid5 md/raid5: drop qd_idx from r6_state md/raid5: enhance raid5_size to work correctly with negative delta_disks md: add explicit method to signal the end of a reshape. md/raid5: change reshape-progress measurement to cope with reshaping backwards. md: allow number of drives in raid5 to be reduced Documentation/md.txt update md/raid5: clearly differentiate 'before' and 'after' stripes during reshape. md/raid5: prepare for allowing reshape to change chunksize. md/raid5: prepare for allowing reshape to change layout md/raid5: reshape using largest of old and new chunk size md/raid5: allow layout and chunksize to be changed on active array. md: don't display meaningless values in sysfs files resync_start and sync_speed md/raid5: be more careful about write ordering when reshaping. md: remove CONFIG_MD_RAID_RESHAPE config option. md/raid5: minor code cleanups in make_request. md/raid5 revise rules for when to update metadata during reshape md/raid1 - don't assume newly allocated bvecs are initialised. Nick Andrew (1): trivial: Fix misspelling of firmware Nick Kossifidis (13): ath5k: Update EEPROM code ath5k: More EEPROM code updates ath5k: Minor QCU updates ath5k: PHY code cleanup ath5k: Update gain_F calibration code and add documentation ath5k: Update RF Buffer handling ath5k: Update initvals ath5k: Update reset code ath5k: Disable BMISS interrupts ath5k: Don't call reset on config_interface ath5k: Choose the right initvals for RF2425 ath5k: Convert chip specific calibration data to a generic format ath5k: Add tx power calibration support Nick Piggin (12): [XFS] remove old vmap cache [XFS] use scalable vmap API x86: optimise x86's do_page_fault (C entry point for the page fault path) x86: make UV support configurable lockdep: annotate reclaim context (__GFP_NOFS) generic IPI: simplify barriers and locking powerpc: Estimate G5 cpufreq transition latency slob: fix lockup in slob_free() fs: move bdev code out of buffer.c fs: avoid I_NEW inodes mm: page_mkwrite change prototype to match fault fs: fix page_mkwrite error cases in core code and btrfs Nicola Soranzo (2): V4L/DVB (10525): em28xx: Coding style fixes and a typo correction V4L/DVB (10555): em28xx: CodingStyle fixes Nicolas Pitre (24): Merge branch 'for-np' of git://git.wormnet.eu/alex/ts78xx into orion/master [ARM] Orion: make gpio /input/output validation separate [ARM] Kirkwood: MPP initialization code [ARM] Kirkwood: SDIO driver registration for DB6281 and RD6281 [ARM] Kirkwood: add NAND support to the DB88F6281 board [ARM] Kirkwood: remove unneeded includes from board setup files [ARM] Kirkwood: register internal devices in a common place [ARM] fixmap support [ARM] kmap support [ARM] mem_init(): make highmem pages available for use highmem: atomic highmem kmap page pinning [ARM] introduce dma_cache_maint_page() [ARM] make page_to_dma() highmem aware [ARM] Feroceon: add highmem support to L2 cache handling code [ARM] xsc3: add highmem support to L2 cache handling code [ARM] ignore high memory with VIPT aliasing caches [ARM] add CONFIG_HIGHMEM option Merge commit '305b07680f' into orion/master [ARM] Kirkwood: SheevaPlug USB Power Enable setup [ARM] Kirkwood: SheevaPlug LED support [ARM] Kirkwood: update defconfig [ARM] update mach-types [ARM] Kirkwood: fail the probe if internal RTC does not work [ARM] Kirkwood: small L2 code cleanup Niels de Vos (1): trivial: MTD: remove EOL from MODULE_DESCRIPTION Nikanth Karthikesan (4): loop: support barrier writes loop: fix circular locking in loop_clr_fd() vfs: check bh->b_blocknr only if BH_Mapped is set Update /debug/tracing/README Nobuhiro Iwamatsu (10): sh: multiple vectors per irq - sh7763 sh: Restore RTC IRQ setting for SH7763 setup. sh: dma-sh updates for multi IRQ and new SH-4A CPUs. sh: Revert CONFIG_NR_ONCHIP_DMA_CHANNELS to MAX_DMA_CHANNELS sh: Disable get_dma_error_irq for non-SH4 targets. sh: Fix compile error by operands(mov.l) in sh3/entry.S sh: Move IRQ multi definition of DMAC to defconfig sh: espt-giga board support sh: sh7763rdp: Change IRQ number for sh_eth of sh7763rdp sh: Add MMU dependency for kexec NĂ©meth MĂ¡rton (1): leds: remove experimental flag from leds-clevo-mail Octavian Purdila (2): powerpc/oprofile: G4 oprofile has variable number of counters powerpc/oprofile: Enable support for ppc750 processors OldÅ™ich JedliÄka (1): V4L/DVB (10632): Added support for AVerMedia Cardbus Hybrid remote control Oleg Nesterov (22): posix timers: fix RLIMIT_CPU && fork() get_mm_hiwater_xxx: trivial, s/define/inline/ do_wait: fix waiting for the group stop with the dead leader signals: remove 'handler' parameter to tracehook functions signals: protect init from unwanted signals more ptrace: kill __ptrace_detach(), fix ->exit_state check ptrace: simplify ptrace_exit()->ignoring_children() path ptrace: reintroduce __ptrace_detach() as a callee of ptrace_exit() ptrace: fix possible zombie leak on PTRACE_DETACH reparent_thread: don't call kill_orphaned_pgrp() if task_detached() reparent_thread: fix the "is it traced" check reparent_thread: fix a zombie leak if /sbin/init ignores SIGCHLD forget_original_parent: split out the un-ptrace part forget_original_parent: do not abuse child->ptrace_entry tracehook_notify_death: use task_detached() helper ptrace_detach: the wrong wakeup breaks the ERESTARTxxx logic ptrace_untrace: fix the SIGNAL_STOP_STOPPED check pids: document task_pgrp/task_session is not safe without tasklist/rcu pids: improve get_task_pid() to fix the unsafe sys_wait4()->task_pgrp() pids: refactor vnr/nr_ns helpers to make them safe pids: kill signal_struct-> __pgrp/__session and friends exit_notify: kill the wrong capable(CAP_KILL) check Olga Kornievskaia (1): svcrpc: take advantage of tcp autotuning Oliver Endriss (1): V4L/DVB (10843): saa7146: Clean-up i2c error handling Oliver Neukum (11): USB: suspend/resume support for option driver USB: suspend/resume for opticon driver USB: serial: introduce a flag into the usb serial layer to tell drivers that their URBs are killed due to suspension USB: serial generic resume function fix USB: serial: export symbol of usb_serial_generic_resume USB: serial: use generic method if no alternative is provided in usb serial layer USB: serial: remove recourse to generic method HID: autosuspend support for USB HID HID: fix USB HID devices after STD with autosuspend HID: autosuspend -- fix lockup of hid on reset HID: fix race between usb_register_dev() and hiddev_open() Or Gerlitz (1): IB/iser: Remove hard setting of path MTU Oskar Schirmer (3): xtensa: enforce slab alignment to maximum register width xtensa: add flat support i2c: xtensa s6000 i2c driver Owain G. Ainsworth (2): i915/drm: Remove two redundant agp_chipset_flushes i915/drm: Remove two redundant agp_chipset_flushes Oystein Svendsen (1): Staging: comedi: add das6402 driver PJ Waskiewicz (13): ixgbe: Add hardware specific initialization code for 82599 devices ixgbe: Add DCB for 82599, remove BCN support ixgbe: Add 82599 device id's, hook it up into the main driver. ixgbe: Fix get_supported_physical_layer() due to new 82599 PHY types ixgbe: Fix an accounting problem when the Rx FIFO is full ixgbe: Disable DROP_EN for Rx queues ixgbe: Two small fixes for 82599 when bringing the device down and for WoL ixgbe: Add documentation for the driver ixgbe: Fix PCI bus reporting on driver load for 82598 after 82599 merge ixgbe: Correctly report Wake On LAN for 82599 KX4 devices ixgbe: Allow Priority Flow Control settings to survive a device reset ixgbe: Fix DCB netlink layer for 82599 to enable Priority Flow Control ixgbe: Fix 82598 MSI-X allocation on systems with more than 8 CPU cores Pablo Mejia (1): Staging: comedi: add aio_aio12_8 driver Pablo Neira Ayuso (12): netlink: change return-value logic of netlink_broadcast() netlink: add NETLINK_BROADCAST_ERROR socket option netfilter: nf_conntrack: account packets drop by tcp_packet() netlink: change nlmsg_notify() return value logic netfilter: conntrack: increase drop stats if sequence adjustment fails netfilter: ctnetlink: cleanup master conntrack assignation netfilter: ctnetlink: cleanup conntrack update preliminary checkings netfilter: ctnetlink: move event reporting for new entries outside the lock netfilter: xtables: add cluster match nefilter: nfnetlink: add nfnetlink_set_err and use it in ctnetlink netlink: add NETLINK_NO_ENOBUFS socket flag netfilter: xtables: fix IPv6 dependency in the cluster match Pallipadi, Venkatesh (4): VM, x86, PAT: Change is_linear_pfn_mapping to not use vm_pgoff VM, x86, PAT: add a new vm flag to track full pfnmap at mmap x86, PAT, PCI: Change vma prot in pci_mmap to reflect inherited prot ACPI: cap off P-state transition latency from buggy BIOSes Pascal Terjan (1): V4L/DVB (10825): Add ids for Yuan PD378S DVB adapter Pascal de Bruijn (1): ALSA: hda - Add function id to proc output Pat Erley (1): Add mesh point functionality to ath9k Patrick Boettcher (2): V4L/DVB (11284): Fix i2c code of flexcop-driver for rare revisions V4L/DVB (11285): Remove unecessary udelay Patrick McHardy (3): netfilter: ctnetlink: fix rcu context imbalance netfilter: fix xt_LED build failure netfilter: {ip,ip6,arp}_tables: fix incorrect loop detection Patrick Ohly (11): clocksource: allow usage independent of timekeeping.c timecompare: generic infrastructure to map between two time bases net: new user space API for time stamping of incoming and outgoing packets net: infrastructure for hardware time stamping net: socket infrastructure for SO_TIMESTAMPING ip: support for TX timestamps on UDP and RAW sockets net: pass new SIOCSHWTSTAMP through to device drivers igb: access to NIC time igb: stub support for SIOCSHWTSTAMP igb: use timecompare to implement hardware time stamping net: kernel panic in dev_hard_start_xmit: remove faulty software TX time stamping Paul Bolle (1): gigaset: return -ENOTTY for unimplemented functions Paul Collins (1): HID: constify arrays of struct apple_key_translation Paul Fertser (1): ASoC: Fix WM8753 DAIs unregistering Paul Fulghum (1): synclink_gt: add clock options Paul Mackerras (2): Merge branch 'next' of master.kernel.org:/pub/scm/linux/kernel/git/galak/powerpc into merge powerpc: Fix oops when loading modules Paul Menage (2): cgroups: fix cgroup.h comments cpusets: allow cpusets to be configured/built on non-SMP systems Paul Moore (6): lsm: Relocate the IPv4 security_inet_conn_request() hooks netlabel: Label incoming TCP connections correctly in SELinux selinux: Remove the "compat_net" compatibility code lsm: Remove the socket_post_accept() hook netlabel: Cleanup the Smack/NetLabel code to fix incoming TCP connections audit: Fix possible return value truncation in audit_get_context() Paul Mundt (46): sh: Fix up GENERIC_GPIO build for ARCH_WANT_OPTIONAL_GPIO cases. sh: mach-highlander and mach-rsk require gpiolib. Merge branch 'sh/stable-updates' sh: Use SYS_SUPPORTS_CMT for managing CMT timer dependencies. sh: Fix up MTU2 support for SH7203. sh: Don't enable GENERIC_TIME for the CMT clockevent driver yet. sh: Restrict old CMT timer code to SH-2/SH-2A. Merge branch 'sh/stable-updates' sh: Disable unsupportable prefetching on SH-3. sh: Fix up SH-X3 general exception handler build. sh: SH7786 is an SH-X3 core, select CPU_SHX3. sh: Set a sensible default for the SH7786 pclk. sh: intc: Make missing unique IRQ mask warning more verbose. sh: multiple vectors per irq - sh7203. sh: multiple vectors per irq - sh7263. sh: multiple vectors per irq - sh7201. sh: multiple vectors per irq - sh7206. rtc: rtc-sh: Bump version up to reflect single IRQ support changes. sh: multiple vectors per irq - sh7619. sh: multiple vectors per irq - mxg. sh: multiple vectors per irq - sh770x. sh: multiple vectors per irq - sh7705. sh: multiple vectors per irq - sh7710. sh: multiple vectors per irq - sh7720. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge branch 'sh/stable-updates' sh: Define ARCH_SHMOBILE for SH-Mobile CPUs. sh: Generate uImage by default on Urquell board. sh: Consolidate SH-Mobile CPU code in arch/sh/kernel/cpu/shmobile/. sh: dma: Make PVR2 DMA configurable. sh: dma: Make G2 DMA configurable. sh: Support for extended ASIDs on PTEAEX-capable SH-X3 cores. sh: tlb-pteaex: Kill off legacy PTEA updates. sh: Update debugfs ASID dumping for 16-bit ASID support. sh: Flush only the needed range when unmapping a VMA. sh: kexec: Drop SR.BL bit toggling. sh: kexec jump: fix for ftrace. sh: Fix up -Wformat-security whining. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 sh: migor: Fix up CEU use flags. sh: Select ARCH_HIBERNATION_POSSIBLE. sh: Add a command line option for disabling I/O trapping. sh: Wire up ARCH_HAS_DEFAULT_IDLE for cpuidle. sh: Kill off broken direct-mapped cache mode. sh: update defconfigs. sh: Fix up number of on-chip DMA channels on SH7091. Paul Walmsley (35): [ARM] OMAP2/3: Add non-CORE DPLL rate set code and M, N programming [ARM] OMAP: Fix sparse, checkpatch warnings in OMAP2/3 PRCM/PM code [ARM] OMAP24xx clock: add missing SSI L4 interface clock [ARM] OMAP3: move USBHOST SAR handling from clock framework to powerdomain layer [ARM] OMAP3 clock: fix 96MHz clocks [ARM] OMAP: Make dpll4_m4_ck programmable with clk_set_rate() [ARM] OMAP2/3 clockdomains: combine pwrdm, pwrdm_name into union in struct clockdomain [ARM] OMAP2/3 clockdomains: add CM and PRM clkdms [ARM] OMAP3 clock: move sys_clkout2 clk to core_clkdm [ARM] OMAP3 PRCM: add DPLL1-5 powerdomains, clockdomains; mark clocks [ARM] OMAP3 powerdomains: remove RET from SGX power states list [ARM] OMAP2/3 clockdomains: autodeps should respect platform flags [ARM] OMAP3 clock: fix DPLL jitter correction and rate programming [ARM] OMAP3 clock: DPLL{1,2}_FCLK clksel can divide by 4 [ARM] OMAP3 clock: convert dpll_data.idlest_bit to idlest_mask [ARM] OMAP3 clock: remove unnecessary dpll_data dereferences [ARM] OMAP3 clock: optimize DPLL rate rounding algorithm [ARM] OMAP3 clock: avoid invalid FREQSEL values during DPLL rate rounding [ARM] OMAP3 clock: disable DPLL autoidle while waiting for DPLL to lock [ARM] OMAP2/3 clock: clean up mach-omap2/clock.c [ARM] OMAP2 PRCM: clean up CM_IDLEST bits [ARM] OMAP2 SDRC: move mach-omap2/memory.h into mach/sdrc.h [ARM] OMAP2 SDRC: rename memory.c to sdrc2xxx.c [ARM] OMAP2 SDRC: separate common OMAP2/3 code from OMAP2xxx code [ARM] OMAP2 SDRC: add SDRAM timing parameter infrastructure [ARM] OMAP3 clock: add omap3_core_dpll_m2_set_rate() [ARM] OMAP2/3 clock: use standard set_rate fn in omap2_clk_arch_init() [ARM] OMAP2/3 clock: don't use a barrier after clk_disable() [ARM] OMAP2xxx clock: consolidate DELAYED_APP clock commits; fix barrier [ARM] OMAP2/3 clock: convert remaining MPU barriers into OCP barriers [ARM] OMAP clock: drop clk_get_usecount() [ARM] OMAP2/3 clock: don't tinker with hardirqs when they are supposed to be disabled [ARM] OMAP3: update ES level flags to discriminate between post-ES2 revisions [ARM] OMAP3 powerdomains: make USBTLL SAR only available on ES3.1 and beyond [ARM] 5422/1: ARM: MMU: add a Non-cacheable Normal executable memory type Paulius Zaleckas (12): ppp_generic: Simplify tx_dropped stats hso: remove claiming and releasing of USB interface hso: remove hso_free_device() ARM: tlbflush.h: introduce TLB_BTB flag ARM: Add support for FA526 v2 MAINTAINERS: Add myself as Faraday ARM core variant maintainer ARM: Add Gemini architecture v3 MAINTAINERS: add myself as Gemini architecture maintainer Gemini: gpiolib based GPIO support v2 Gemini: Add support for Teltonika RUT100 [ARM] 5437/1: Add documentation for "nohlt" kernel parameter V4L/DVB (11350): Add camera (CSI) driver for MX1 Pavel Machek (7): HID: make HID_DEBUG defaults consistent trivial: document ext3 semantics of 'ro' option a bit better hp_accel: small documentation updates hp_accel: adev is poor name of exported symbol hp_accel: add two more axis information nbd: add locking to nbd_ioctl nbd: trivial cleanups Pavel Roskin (1): bmac: remove unused variable bp in bmac_misc_intr() Pekka Enberg (61): kmemtrace: remove unnecessary casts kmemtrace: allow kmemtrace to be enabled after boot kmemtrace: remove config option for enabling tracing at boot SLUB: Use ->objsize from struct kmem_cache_cpu in slab_free() ext4: allocate ->s_blockgroup_lock separately SLUB: Do not pass 8k objects through to the page allocator x86: move __VMALLOC_RESERVE to pgtable_32.c x86: use roundup() instead of PAGE_ALIGN() in find_early_table_space() x86: add sanity checks to init_32.c x86: make sure initmem is writable on 64-bit x86: unify free_init_pages() and free_initmem() x86: set_highmem_pages_init() cleanup x86: move devmem_is_allowed() to common mm/init.c x86: set_highmem_pages_init() cleanup, #2 x86: move free_initrd_mem() to common mm/init.c x86: init_memory_mapping() trivial cleanups x86: add gbpages support to 32-bit init_memory_mapping() x86: find_early_table_space() unification x86: move pgd_base out of init_memory_mapping() x86: ifdef 32-bit specific setup in init_memory_mapping() x86: remove unnecessary save_mr() sanity check x86: rename after_init_bootmem to after_bootmem in mm/init_32.c x86: unify kernel_physical_mapping_init() call in init_memory_mapping() x86: add table start and end sanity checks to 32-bit init_memory_mapping() x86: ifdef 32-bit and 64-bit setup in init_memory_mapping() x86: ifdef 32-bit and 64-bit pfn setup in init_memory_mapping() x86: ifdef 32-bit and 64-bit NR_RANGE_MR for save_mr() unification x86: add stub init_gbpages() for 32-bit init_memory_mapping() x86: move init_memory_mapping() to common mm/init.c x86: fix up some bad global variable names in mm/init.c x86: unify kernel_physical_mapping_init() function signatures x86: move function and variable declarations to asm/init.h x86: fix uninitialized variable in init_memory_mapping() x86: rename do_not_nx to disable_nx in mm/init_64.c Merge branches 'topic/slob/cleanups', 'topic/slob/fixes', 'topic/slub/core', 'topic/slub/cleanups' and 'topic/slub/perf' into for-linus Remove struct typedefs from fs/udf/ecma_167.h et al. Fix the udf code not to pass structs on stack where possible. kmemtrace, fs, security: move alloc_secdata() and free_secdata() to linux/security.h kmemtrace, security: fix linux/key.h header file dependencies kmemtrace, befs: fix slab.h dependency problem kmemtrace, squashfs: fix slab.h dependency problem in squasfs kmemtrace, kbuild: fix slab.h dependency problem in lib/decompress_inflate.c kmemtrace, kbuild: fix slab.h dependency problem in lib/decompress_bunzip2.c kmemtrace, kbuild: fix slab.h dependency problem in lib/decompress_unlzma.c kmemtrace, mm: fix slab.h dependency problem in mm/failslab.c kmemtrace: trace kfree() calls with NULL or zero-length objects Staging: w35und: remove unused header files Staging: w35und: remove unnecessary os_common.h header file Staging: w35und: remove crazy commented out includes Staging: w35und: unify mto.h and mto_f.h header files Staging: w35und: convert code to use ETH_ALEN Staging: w35und: remove useless macro from common.h Staging: w35und: kill WBDEBUG and remove common.h header file Staging: w35und: typedef removal Staging: w35und: remove hw_data_t typedef Staging: w35und: Remove MTO_FUNC_INPUT macro obfuscation Staging: w35und: remove unused bssdscpt.h header Staging: w35und: remove ds_tkip.h header Staging: w35und: remove gl_80211.h header Staging: rt2860: remove kernel version compatibility wrappers nilfs2: clean up indirect function calling conventions Pekka Paalanen (3): doc: mmiotrace.txt, buffer size control change trace: mmiotrace to the tracer menu in Kconfig mmiotrace: count events lost due to not recording Perry J. Piplani (1): Staging: comedi: add dmm32at driver Pete Wyckoff (1): [SCSI] iscsi tcp: bidi capable Pete Zaitcev (2): usblp: continuously poll for status USB: usbmon: Add binary API v1 Peter Korsgaard (1): powerpc: convert dts-bindings/fsl/dma.txt to dts-v1 syntax Peter Ma (2): avr32: add RTS/CTS/CLK pin selection for the USARTs avr32: add hardware handshake support to atmel_serial Peter Oberparleiter (2): [S390] cio: incorrect status check in interrogate function [S390] cio: prevent workqueue deadlock Peter P Waskiewicz Jr (8): ixgbe: Refactor MSI-X allocation mechanism ixgbe: Update copyright dates, bump the driver version number ixgbe: Refactor set_num_queues() and cache_ring_register() ixgbe: Update link setup code to better support autonegotiation of speed ixgbe: Display EEPROM version in ethtool -i queries ixgbe: Update flow control state machine in link setup ixgbe: Defeature Tx Head writeback ixgbe: Fix a set_num_queues() bug that can result in num_(r|t)x_queues = 0 Peter Teoh (1): Staging: rt2870: Removal of kernel_thread() API Peter Ujfalusi (12): ASoC: TWL4030: Syncronize the reg_cache for ANAMICL after the offset cancelation ASoC: TWL4030: Code clean up for codec power up and down ASoC: TWL4030: Enable Headset Left anti-pop/bias ramp only if the Headset Left is in use ASoC: TWL4030: Physical ADC and amplifier power switch change ASoC: TWL4030: Move the twl4030_power_up and _power_down function ASoC: TWL4030: Add analog loopback support ASoC: TWL4030: Add digital loopback support ASoC: TWL4030: Make the HS ramp delay configurable ASoC: TWL4030: 96KHz playback support ASoC: TWL4030: Add constrains for second stream ASoC: TWL4030: Add actual support for 96KHz playback support ASoC: TWL4030: Compillation error fix Peter W Morreale (2): mm: fix pdflush thread creation upper bound mm: add /proc controls for pdflush threads Peter Zijlstra (48): mutex: small cleanup mutex: preemption fixes mutex: implement adaptive spinning sched: introduce avg_wakeup sched: prefer wakers sched: make plist a library facility x86: cpu_init(): remove ugly #ifdef construct around debug register clear x86: add might_sleep() to do_page_fault() lockdep: sanitize bit names lockdep: sanitize reclaim bit names lockdep: lockdep_states.h lockdep: simplify mark_held_locks lockdep: simplify mark_lock() lockdep: move state bit definitions around lockdep: generate the state bit definitions lockdep: generate usage strings lockdep: split up mark_lock_irq() lockdep: simplify the mark_lock_irq() helpers lockdep: further simplify mark_lock_irq() helpers lockdep: simplify mark_lock_irq() helpers #3 lockdep: merge the _READ mark_lock_irq() helpers lockdep: merge the !_READ mark_lock_irq() helpers lockdep: fully reduce mark_lock_irq() lockdep: remove macro usage from mark_held_locks() lockdep: add comments to mark_lock_irq() lockdep: simplify get_user_chars() lockdep: get_user_chars() redo lockdep: simplify check_prev_add_irq() lockdep: use stringify.h lockstat: warn about disabled lock debugging lockdep: build fix for !PROVE_LOCKING generic-ipi: remove kmalloc() generic-ipi: remove CSD_FLAG_WAIT x86: make vmap yell louder when it is used under irqs_disabled() sched_clock: cleanups genirq: assert that irq handlers are indeed running in hardirq context lockdep: fix incorrect state name lockdep: remove extra "irq" string lockdep: require framepointers for x86 tracing: add lockdep tracepoints for lock acquire/release sched: optimize ttwu vs group scheduling trace_clock: fix preemption bug ftrace: provide an id file for each event ftrace: ensure every event gets an id ftrace: event profile hooks lockdep: fix deadlock in lockdep_trace_alloc hrtimer: fix rq->lock inversion (again) lockdep: add stack dumps to asserts Petros Koutoupis (2): block: genhd.h comment needs updating block: genhd.h cleanup patch Phil Sutter (7): pata-rb532-cf: replace rb532_pata_finish_io() pata-rb532-cf: use ata_sff_exec_command() pata-rb532-cf: use ata_sff_data_xfer32() pata-rb532-cf: drop custom freeze and thaw [WATCHDOG] rc32434_wdt: clean-up driver [WATCHDOG] rc32434_wdt: add timeout module parameter leds: Add rb532 LED driver for the User LED Philipp Zabel (30): [ARM] pxa/magician: Update defconfig [ARM] pxa/magician: Enable backlight [ARM] pxa/magician: setup SSP1 pins for audio [ARM] pxa/magician: enable power I2C for max158xx [ARM] pxa/magician: Use SZ_64M for physmap resource [ARM] pxa/magician: use named initializers for gpio_keys setup [ARM] pxa/magician: Enable pxa27x_udc and gpio_vbus ASoC: uda1380: split set_dai_fmt into _both, _playback and _capture variants ASoC: pxa-ssp: fix SSP port request pxa/h5000: Setup I2S pins for pxa2xx-i2s pxa/spitz: Setup I2S pins for pxa2xx-i2s ASoC: pxa2xx-i2s: remove I2S pin setup ASoC: Remove version display from the UDA1380 driver ASoC: UDA1380: change decimator/interpolator register handling ASoC: Use network mode with 2 slots for 16-bit stereo in pxa-ssp/Zylonite ASoC: UDA1380: DATAI is slave only [ARM] pxa/magician: fix htc-egpio resource size [ARM] pxa/magician: select PXA_SSP for touchscreen and sound [ARM] pxa/magician: register pda_power IRQs as rising/falling edge [ARM] pxa/magician: default to backlight trigger for keypad illumination [ARM] pxa/magician: remove unused forward declaration of pasic3 ASoC: Replace remaining uses of snd_soc_cnew with snd_soc_add_controls. ASoC: pxa-ssp: Use 16-bit DMA for magician stereo ASoC: Add Magician machine support mfd: convert DS1WM to use MFD core mfd: convert PASIC3 to use MFD core pxa/magician: remove deprecated .bus_shift from PASIC3 platform_data mfd: remove unused PASIC3 bus_shift field mfd: remove DS1WM clock handling mfd: PASIC3: supply clock_rate to DS1WM via driver_data Philippe De Muyter (1): parport: netmos 9845 & 9855 1P4S fixes Philippe RĂ©tornaz (1): V4L/DVB (11035): mt9t031 bugfix Pierre Ossman (6): sdio: handle cis end marker in link field sdio: handle null tuples sdio: check that addresses are within the address space sdhci: change list address mmc: add maintainer for mvsdio driver tmio_mmc: add maintainer Qinghuang Feng (2): NFSD: cleanup for nfs3proc.c SYSFS: use standard magic.h for sysfs Rafael Ignacio Zurita (1): sh: fix the HD64461 level-triggered interrupts handling Rafael J. Wysocki (23): PCI: PCIe portdrv: Use driver data to simplify code PCI: PCIe portdrv: Aviod using service devices with wrong interrupts PCI: PCIe portdrv: Do not enable port device before setting up interrupts PCI: PCIe portdrv: Remove unnecessary function PCI: PCIe portdrv: Simplily probe callback of service drivers PCI: PCIe portdrv: Remove struct pcie_port_service_id PCI/MSI: Introduce pci_msix_table_size() PCI/PCIe portdrv: Fix allocation of interrupts PCI: PCIe portdrv: Implement pm object PM: Introduce functions for suspending and resuming device interrupts PM: Rework handling of interrupts during suspend-resume PM: Change suspend code ordering PM: Change hibernation code ordering kexec: Change kexec jump code ordering PCI PM: Use pci_set_power_state during early resume PCI PM: Move pci_restore_standard_config to pci-driver.c PCI PM: Put devices into low power states during late suspend (rev. 2) PCI PM: Make pci_set_power_state() handle devices with no PM support PCI PM: Restore config spaces of all devices during early resume PCI PM: Introduce __pci_[start|complete]_power_transition() (rev. 2) radeonfb: Use __pci_complete_power_transition() PCI PM: Make pci_prepare_to_sleep() disable wake-up if needed net/igb: Fix kexec with igb (rev. 3) Rajiv Andrade (3): TPM: sysfs functions consolidation TPM: integrity interface TPM: integrity fix Rakib Mullick (1): tracing: fix section mismatch in trace_hw_branches.c Ralf Baechle (10): MIPS: Change {set,clear,change}_c0_ to return old value. Fix build error in MIPS: Forward declare struct task_struct to avoid potencial warning. MIPS: Compat: Zero upper 32-bit of offset_high and offset_low. MIPS: Makefile: Add simple make install target. MIPS: Cavium: Add -Werror MIPS: Stop using . MIPS: Enable GENERIC_HARDIRQS_NO__DO_IRQ for all platforms MIPS: Use BUG_ON() where possible. preadv/pwritev: MIPS: Add preadv(2) and pwritev(2) syscalls. Ralph Campbell (3): IB/mad: Fix null pointer dereference in local_completions() IB/mad: initialize mad_agent_priv before putting on lists IB/mad: Fix ib_post_send_mad() returning 0 with no generate send comp Ramachandra K (1): IB/mad: Fix RMPP header RRespTime manipulation Rami Rosen (10): mac80211: remove an unnecessary assignment to info in __ieee80211_tx(). mac80211: remove an unused parameter in ieee80211_rx_mgmt_probe_req(). mac80211: remove an unused definition (MAX_STA_COUNT) in sta_info.h. mac80211: remove unused variable in ieee80211_local (dot11WEPUndecryptableCount). mac80211: remove mesh_plink_close() method. mac80211: trivial documentation fixes (enum mesh_path_flags). mac80211: trivial documentation fix (mesh_nexthop_lookup()). tcp: remove parameter from tcp_recv_urg(). net: core: remove unneeded include in net/core/utils.c. ipv4: remove unused parameter from tcp_recv_urg(). Ramkrishna Vepa (9): Neterion: Driver help file Neterion: New driver: Update Maintainer list Neterion: New driver: register set - vxge-reg.h Neterion: New driver: Hardware init & configuration Neterion: New driver: Traffic & alarm handler Neterion: New driver: Main entry points Neterion: New driver: Ethtool related Neterion: New driver: Driver version Neterion: New driver: Kconfig and Makefile Randy Dunlap (52): sysrq: fix ftrace help msg & doc. kmemtrace: fix printk format warnings kmemtrace: fix printk formats, fix jfs: needs crc32_le x86: UV: fix header struct usage ima: fix build error smack: fix lots of kernel-doc notation wireless: fix for CONFIG_NL80211=n skbuff.h: fix timestamps kernel-doc rds: fix iband RDMA dependencies ALSA: Move ALSA docbooks to be with the rest of the kernel docbooks wimax: fix i2400m printk formats [SCSI] scsi_sysfs: delete extra kernel-doc [SCSI] scsi_debug: needs CRC_T10DIF [SCSI] libfc: needs CRC32 USB: fix ehci printk formats skbuff.h: fix missing kernel-doc maple: fix Error in kernel-doc notation sched: fix errors in struct & function comments V4L/DVB (10631): zoran: fix printk format V4L/DVB (10830): dm1105: uses ir_* functions, select VIDEO_IR V4L/DVB (10846): dvb/frontends: fix duplicate 'debug' symbol V4L/DVB (11237): media/zoran: fix printk format proc: move fs/proc/inode-alloc.txt comment into a source file dma-debug: fix printk formats (i386) regulator: fix header file missing kernel-doc alpha: convert u64 to unsigned long long atyfb: fix header file trailing whitespace [IA64] Fix typo/thinko in arch/ia64/sn/kernel/sn2/sn2_smp.c Staging: sxg: fix napi interface build Staging: altera: fix printk format warnings Staging: mimio: depends on INPUT Staging: otus: fix mixed declarations Staging: android: binder: fix printk format warnings Staging: android: ram_console: fix printk format warning Staging: Android: fix more printk formats Staging: rtl8187se: fix printk format warnings Staging: rt2860: fix printk format warnings Staging: pohmelfs: fix kconfig dependencies Staging: stlc45xx: fix printk format warnings Staging: phison: fix kconfig for clean build Staging: phison: depends on PCI Staging: p9auth: fix dependency/build error Staging: line6: depends on SND Staging: line6: fix build error, select SND_RAWMIDI auditsc: fix kernel-doc notation PCI-IOV: fix missing kernel-doc docbook: fix fatal filename error docs: alphabetize entries in kernel-parameters.txt V4L/DVB (11439): UVC: uvc_status_cleanup(): undefined reference to `input_unregister_device' V4L/DVB (11440): PWC: fix build error when CONFIG_INPUT=m esp: fix section mismatch warning Ravikiran G Thirumalai (5): x86: cleanup, rename CONFIG_X86_NON_STANDARD to CONFIG_X86_EXTENDED_PLATFORM x86: improve the help text of X86_EXTENDED_PLATFORM Revert "x86: don't compile vsmp_64 for 32bit" mm: fix SHM_HUGETLB to work with users in hugetlb_shm_group mm: reintroduce and deprecate rlimit based access for SHM_HUGETLB Reinette Chatre (9): iwlwifi: update copyright year to 2009 iwlwifi: fix FAT channel config for 5000 series iwlwifi: use singlethread workqueue iwlwifi: Fix and rework Kconfig file iwlwifi: fix *pci_probe error flow iwl3945: unmap previously mapped memory iwlwifi: print contents of control register when error occurs iwlwifi: correct log level when error occurs cfg80211/nl80211: remove usage of CONFIG_NL80211 Reynes Philippe (3): powerpc/83xx: Add i2c eeprom to dts for MPC837x RDB powerpc/83xx: Add gpio to MPC837x RDB powerpc/83xx: Add lm75 to MPC837x RDB dts Richard Bytheway (1): Staging: comedi: add cb_pcimdas driver Richard Kennedy (3): ipv6: reorder struct inet6_ifaddr to remove padding on 64 bit builds drm: reorder struct drm_ioctl_desc to save space on 64 bit builds Staging: wlan-ng: block ioctls until card fully initialised Richard Purdie (2): leds: Fix leds-gpio driver multiple module_init/exit usage leds: Add suspend/resume state flags to leds-gpio Richard Walmsley (1): HID: DragonRise game controller force feedback driver Rick Farrington (1): iwlagn: reduce off channel reception for 4965 Riku Voipio (3): [ARM] mv78xx0: wire i2c support trivial: Update my email address leds: Fix &&/|| confusion in leds-pca9532.c Risto Suominen (5): ALSA: powermac - Correct HP detection and input selectors for PMac 5500 ALSA: powermac - Correct volume controls for PowerBook G3 Lombard ALSA: powermac - Correct volume controls and HP detection for PMac 8500/9500 ALSA: powermac - Allow input from mic in iBook G3 Dual-USB ALSA: Add vmaster controls for Pmac 5500, iMac G3 SL, and PBook G3 Lombard Robert Jarzmik (13): ASoC: Add initial support of Mitac mioa701 device SoC. [ARM] pxa/MioA701: add gpio_vbus driver [ARM] pxa/MioA701: Migrate after pxa27x_udc gpio_pullup functionality. ASoC: Allow choice of ac97 gpio reset line USB: gpio_vbus: add delayed vbus_session calls USB: pxa27x_udc: factor pullup code to prepare otg transceiver USB: pxa27x_udc: add vbus session handling USB: pxa27x_udc: add otg transceiver support USB: pxa27x_udc: add vbus_draw callback V4L/DVB (11319): pxa_camera: Enforce YUV422P frame sizes to be 16 multiples V4L/DVB (11320): pxa_camera: Remove YUV planar formats hole V4L/DVB (11321): pxa_camera: Redesign DMA handling V4L/DVB (11322): pxa_camera: Fix overrun condition on last buffer Robert Krakora (3): V4L/DVB (10255): em28xx: Clock (XCLK) Cleanup V4L/DVB (10518): em28xx: Fix for em28xx memory leak and function rename V4L/DVB (10519): em28xx: Fix for em28xx audio startup Robert Love (5): [SCSI] Improve SCSI_LOGGING Kconfig entry [SCSI] fcoe: Initialize all possilbe skb_queue(s) when module is loaded [SCSI] fcoe: Use percpu kernel funcs for struct fcoe_percpu_s [SCSI] fcoe: Use per-CPU kernel function for dev_stats instead of an array [SCSI] fcoe: create/destroy fcoe Rx threads on CPU hotplug events Robert Millan (1): V4L/DVB (10944): Conceptronic CTVFMI2 PCI Id Robert Richter (1): cpumask: modifiy oprofile initialization Robert Schwebel (1): Staging: comedi: add ssv_dnp driver Robin Getz (1): Blackfin arch: be less noisy when gets a gpio conflict after kernel has booted Robin Holt (5): sgi-gru: remove SGI_GRU as a valid config option for ia64 configs with SGI_UV xpc_sn2: fix max() warning about pointers of different types Factor out #ifdefs from kernel/spinlock.c to LOCK_CONTENDED_FLAGS Allow rwlocks to re-enable interrupts ia64: implement interrupt-enabling rwlocks Roel Kluin (46): phylib: unsigneds go unnoticed SH: fix start_thread and user_stack_pointer macros ath5k: notice a negative keytype ASoC: count reaches 10001, not 10000. libertas: pos[4] tested twice, 2nd should be pos[5] sound: OSS: dmabuf: too many loops sound: OSS: &&/|| typo in ad1848.c sound: OSS: missing parentheses in pas2_card.c atm: Add missing parentheses wavelan: Test arraysize before an element of the array. p54: misplaced parentheses b43: Fix LO calibration txctl reg value wireless, wavelan: spin off by 1 ALSA: snd-powermac: timeout reaches -1 [SCSI] ses: code_set == 1 is tested twice x25: '< 0' and '>= 0' test on unsigned tcp: '< 0' test on unsigned PCI hotplug: shpchp: fix bus number check to avoid false positive [JFFS2] jffs2_acl_count() tests < 0 on unsigned ctcm: avoid wraparound in length of incoming data USB: count reaches -1, tested 0 USB: more u32 conversion after transfer_buffer_length and actual_length i2c-algo-pcf: Style cleanups i2c-algo-pcf: Handle timeout correctly virtio: fix BAD_RING, START_US and END_USE macros V4L/DVB (10629): tvp514x: try_count reaches 0, not -1 V4L/DVB: calibration still successful at 10 V4L/DVB (10657): [PATCH] V4L: missing parentheses? hugetlb: chg cannot become less than 0 alpha: fix macros rtc-wm8350: retries will reach -1 rtc: test before subtraction on unsigned fbdev: newport: newport_*wait() return 0 on timeout drivers/video/omap/hwa742.c: div reaches max_clk_div arkfb: fix misplaced parentheses uvesafb: bitwise OR has higher precedence than ?: vesafb: bitwise OR has higher precedence than ?: viafb: returns 0 two too early hppfs: hppfs_read_file() may return -ERROR Staging: agnx: i reaches -1, tested 0 Staging: meilhaus: unsigned won't get negative after subtraction Staging: otus: logical/bit and confusion Staging: rtl8187se: ! x & y problem in inactive code Staging: comedi: rtd520: &&/|| typo rio: addition has higher precedence than ?: spi: limit reaches -1, tested 0 Roland Dreier (6): IB/ipath: Fix memory leak in init_shadow_tids() error path IB/ipath: Really run work in ipath_release_user_pages_on_close() IB: Remove sysfs files before unregistering device IB: Remove useless ibdev_is_alive() tests from sysfs code Merge branches 'cxgb3', 'endian', 'ipath', 'ipoib', 'iser', 'mad', 'misc', 'mlx4', 'mthca', 'nes' and 'sysfs' into for-next RDMA/nes: Fix mis-merge Ron Mercer (33): qlge: Clean up mac address and frame route settings. qlge: Increase MAC addr hw sem granularity. qlge: Change frame route hw semaphore granularity. qlge: Optimize rx buffer refill process. qlge: Use one path to (re)fill rx buffers. qlge: Add defines for firmware support. qlge: Clean up firmware reset path. qlge: Move firmware event handler. qlge: Prepare to add new device. qlge: Reduce debug print output. qlge: Add support for firmware mailbox commands. qlge: Add support for device ID 8000. qlge: Add support for getting/setting port config. qlge: Add firmware support for insert/remove SFP. qlge: Clean up link down processing. qlge: Clean up link up processing. qlge: Add worker-handler for firmware events. qlge: Clean up event handler for firmware init. qlge: Improve handling for firmware init failure. qlge: Save status from firmware crash (system err). qlge: Add support for lost firmware events. qlge: Move reset logic into asic_reset_worker func. qlge: Remove debug junk from asic reset logic. qlge: Increase filtering for inbound csum settings. qlge: Add support for GRO. qlge: Add tx multiqueue support. qlge: bugfix: Tell hw to strip vlan header. qlge: Get rid of irqsave/restore in intr disable. qlge: Clear shadow registers before use. qlge: Remove spinlock from asic init path. qlge: bugfix: Move netif_napi_del() to common call point. qlge: bugfix: Pad outbound frames smaller than 60 bytes. qlge: bugfix: Fix endian issue related to rx buffers. Russell King (87): [ARM] dma: remove dmach_t typedef [ARM] dma: factor out code looking up the DMA channel [ARM] dma: rejig DMA initialization [ARM] dma: move RiscPC specific DMA data out of dma_struct [ARM] dma: constify dma controller name and dma ops [ARM] dma: ensure that the single entry sg is properly initialized [ARM] dma: convert IOMD DMA to use sg_next() [ARM] dma: pata_icside's contiguous sg array is now redundant [ARM] dma: Use sensible DMA parameters for Acorn drivers [ARM] dma: make DMA_MODE_xxx reflect ISA DMA settings [ARM] dma: remove usage of dmamode_t from MXC platform support [ARM] dma: remove dmamode_t typedef [ARM] omap: remove VIRTUAL_CLOCK [ARM] omap: introduce clock operations structure Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel [ARM] omap: provide a NULL clock operations structure [ARM] omap: kill PARENT_CONTROLS_CLOCK [ARM] omap: add default .ops to all remaining OMAP2 clocks [ARM] omap: eliminate unnecessary conditionals in omap2_clk_wait_ready [ARM] omap: don't use clkops_omap2_dflt_wait for non-ICLK/FCLK clocks [ARM] omap: remove clk->owner [ARM] omap: rearrange clock.h structure order [ARM] omap: remove clk_deny_idle and clk_allow_idle [ARM] omap: provide a standard clk_get_parent() implementation [ARM] omap: move clock propagation into core omap clock code [ARM] omap: remove unnecessary calls to propagate_rate() [ARM] omap: move propagate_rate() calls into generic omap clock code [ARM] omap: handle RATE_CKCTL via .set_rate/.round_rate methods [ARM] omap: ensure devname is set for dummy devices [ARM] omap: allow double-registering of clocks [ARM] omap: convert OMAP1 to use clkdev [ARM] omap: convert OMAP2 to use clkdev [ARM] omap: convert OMAP3 to use clkdev [ARM] omap: remove pre-CLKDEV clk_get/clk_put [ARM] omap: provide a dummy clock node [ARM] omap: watchdog: convert clocks to match by devid and conid [ARM] omap: watchdog: provide a dummy ick for OMAP1 [ARM] omap: MMC: convert clocks to match by devid and conid [ARM] omap: MMC: provide a dummy ick for OMAP1 [ARM] omap: mcspi: new short connection id names [ARM] omap: mcbsp: convert to use fck/ick clocks directly [ARM] omap: i2c: use short connection ids [ARM] omap: i2c: remove armxor_ck [ARM] omap: i2c: remove conditional ick clocks [ARM] omap: w1: convert omap HDQ clocks to match by devid and conid [ARM] omap: spi: arrange for omap_uwire to use connection ID [ARM] omap: convert omap RNG clocks to match by devid and conid [ARM] omap: omap24xxcam: use short connection IDs for omap2 clocks [ARM] omap: hsmmc: new short connection id names [ARM] omap: clks: call recalc after any rate change [ARM] omap: create a proper tree of clocks [ARM] omap: fix usecount decrement bug [ARM] omap: fix clockdomain enable/disable ordering [ARM] omap: arrange for clock recalc methods to return the rate [ARM] omap: add support for bypassing DPLLs [ARM] dma: move IOMD and floppy DMA structures to RiscPC DMA code [ARM] dma: RiscPC: don't modify DMA SG entries Merge branch 'dma' into devel etherh: Get working again. [ARM] omap: ensure that failing power domain lookups produce errors [ARM] omap: clk_set_parent: deny changing parent if clock is enabled Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel Merge branch 'imx-fb-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx into devel Merge branch 'for-russell' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 into devel Merge branch 'omap-clks3' into devel [ARM] pass reboot command line to arch_reset() Merge branch 'master' of git://git.marvell.com/orion into devel Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Merge branch 'highmem' into devel Merge git://git.marvell.com/orion into devel [ARM] collie: fix two minor formatting nits [ARM] acorn,ebsa110,footbridge,integrator,sa1100: Convert asm/io.h to linux/io.h Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 into devel Merge branch 'next-s3c-pm' of git://aeryn.fluff.org.uk/bjdooks/linux into devel Merge branch 'next-s3c64xx-regs' of git://aeryn.fluff.org.uk/bjdooks/linux into devel Merge branch 'for-rmk' of git://gitorious.org/linux-gemini/mainline into devel Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel Merge branch 'origin' into devel Merge branch 'master' into devel [ARM] arch_reset() now takes a second parameter Merge branch 'for-rmk' of git://git.marvell.com/orion oprofile: Thou shalt not call __exit functions from __init functions Merge branch 'smsc911x-armplatforms' of git://github.com/steveglen/linux-2.6 [ARM] fix build-breaking 7a192ec commit V4L/DVB (11329): Fix buglets in v4l1 compatibility layer Rusty Russell (96): cpumask: Use topology_core_cpumask()/topology_thread_cpumask() cpumask: convert misc driver functions cpumask: convert drivers/net/sfc cpumask: convert other misc kernel functions x86: change flush_tlb_others to take a const struct cpumask work_on_cpu: don't try to get_online_cpus() in work_on_cpu. work_on_cpu: Use our own workqueue. alloc_percpu: change percpu_ptr to per_cpu_ptr alloc_percpu: add align argument to __alloc_percpu. cpumask: use topology_core_cpumask/topology_thread_cpumask instead of cpu_core_map/cpu_sibling_map cpumask: replace node_to_cpumask with cpumask_of_node. cpumask: remove dangerous CPU_MASK_ALL_PTR, &CPU_MASK_ALL.: x86 cpumask: remove the now-obsoleted pcibus_to_cpumask(): x86 cpumask: remove cpu_coregroup_map: x86 cpumask: remove obsolete topology_core_siblings and topology_thread_siblings: x86 cpumask: convert c1e_mask in arch/x86/kernel/process.c to cpumask_var_t. cpumask: convert arch/x86/kernel/nmi.c's backtrace_mask to a cpumask_var_t cpumask: x86: convert cpu_sibling_map/cpu_core_map to cpumask_var_t cpumask: convert arch/x86/kernel/cpu/mcheck/mce_64.c x86: arch_send_call_function_ipi_mask cpumask: remove x86's node_to_cpumask now everyone uses cpumask_of_node x86: unify 32 and 64-bit node_to_cpumask_map cpumask: convert node_to_cpumask_map[] to cpumask_var_t cpumask: convert struct cpuinfo_x86's llc_shared_map to cpumask_var_t x86: unify cpu_callin_mask/cpu_callout_mask/cpu_initialized_mask/cpu_sibling_setup_mask cpumask: use new cpumask functions throughout x86 cpumask: clean up summit's send_IPI functions cpumask: make Xen use the new operators. cpumask: remove cpumask_t assignment from vector_allocation_domain() cpumask: use cpumask_var_t in uv_flush_tlb_others. cpumask: remove x86 cpumask_t uses. cpumask: convert node_to_cpumask_map[] to cpumask_var_t numa, cpumask: move numa_node_id default implementation to topology.h cpumask: prepare for iterators to only go to nr_cpu_ids/nr_cpumask_bits.: cris cpumask: Use accessors code.: cris cpumask: use mm_cpumask() wrapper: cris cpumask: remove the now-obsoleted pcibus_to_cpumask(): ia64 cpumask: arch_send_call_function_ipi_mask: ia64 cpumask: prepare for iterators to only go to nr_cpu_ids/nr_cpumask_bits.: ia64 cpumask: Use accessors code.: ia64 cpumask: use mm_cpumask() wrapper: ia64 cpumask: arch_send_call_function_ipi_mask: parisc cpumask: prepare for iterators to only go to nr_cpu_ids/nr_cpumask_bits.: parisc cpumask: Use accessors code.: parisc cpumask: Use smp_call_function_many(): sparc64 cpumask: arch_send_call_function_ipi_mask: sparc cpumask: Use accessors code: sparc cpumask: Use accessors code.: sparc64 cpumask: prepare for iterators to only go to nr_cpu_ids/nr_cpumask_bits.: sparc64 cpumask: prepare for iterators to only go to nr_cpu_ids/nr_cpumask_bits.: sparc cpumask: remove cpu_coregroup_map: sparc cpumask: remove the now-obsoleted pcibus_to_cpumask(): sparc cpumask: remove dangerous CPU_MASK_ALL_PTR, &CPU_MASK_ALL.: sparc cpumask: use mm_cpumask() wrapper: sparc cpumask: fix CONFIG_CPUMASK_OFFSTACK=y cpu hotunplug crash x86, uv: fix cpumask iterator in uv_bau_init() x86: cpumask: use work_on_cpu in arch/x86/kernel/microcode_core.c x86: cpumask: update 32-bit APM not to mug current->cpus_allowed x86: cpumask: x86 mmio-mod.c use cpumask_var_t for downed_cpus cpumask: remove cpumask allocation from idle_balance cpumask: remove cpumask allocation from idle_balance, fix powerpc: Make sysfs code use smp_call_function_single cpumask: Use mm_cpumask() wrapper instead of cpu_vm_mask x86: Correct behaviour of irq affinity [S390] allow usage of string functions in linux/string.h [S390] cpumask: remove cpu_coregroup_map [S390] cpumask: prepare for iterators to only go to nr_cpu_ids/nr_cpumask_bits. [S390] cpumask: Use accessors code. [S390] cpumask: use mm_cpumask() wrapper virtio: more neatening of virtio_ring macros. lguest: fix spurious BUG_ON() on invalid guest stack. lguest: wire up pte_update/pte_update_defer lguest: barrier me harder cpumask: remove dangerous CPU_MASK_ALL_PTR, &CPU_MASK_ALL cpumask: fix seq_bitmap_*() functions. cpumask: remove node_to_first_cpu cpumask: use set_cpu_active in init/main.c cpumask: use mm_cpumask() wrapper: kernel/fork.c cpumask: remove references to struct irqaction's mask field. cpumask: use new cpumask_ functions in core code. cpumask: convert rcutorture.c cpumask: remove cpumask_t from core cpumask: remove the now-obsoleted pcibus_to_cpumask(): generic param: fix charp parameters set via sysfs module: __module_address module: remove module_text_address() module: clarify the force-loading taint message. module: remove the SHF_ALLOC flag on the __versions section. module: include other structures in module version check module: don't use stop_machine on module load arm: allow usage of string functions in linux/string.h strstarts: helper function for !strncmp(str, prefix, strlen(prefix)) module: use strstarts() Merge branch 'cpumask-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip ACPI: simplify module_param namespace Revert "module: remove the SHF_ALLOC flag on the __versions section." Ryan Finnie (1): HID: Support Apple mini aluminum keyboard Ryan Mallon (4): [ARM] 5373/2: Add gpiolib support to AT91 [ARM] 5413/1: Add ep93xx dma m2p clocks [ARM] 5414/2: ep93xx m2p dma core [ARM] 5441/1: Use pr_err on error paths in at91 pm Ryusuke Konishi (39): nilfs2: add document nilfs2: add inode and other major structures nilfs2: B-tree node cache nilfs2: buffer and page operations nilfs2: meta data file nilfs2: persistent object allocator nilfs2: inode map file nilfs2: inode operations nilfs2: file operations nilfs2: pathname operations nilfs2: operations for the_nilfs core object nilfs2: super block operations nilfs2: segment buffer nilfs2: segment constructor nilfs2: fix missed-sync issue for do_sync_mapping_range() nilfs2: recovery functions nilfs2: another dat for garbage collection nilfs2: block cache for garbage collection nilfs2: update makefile and Kconfig nilfs2: fix problems of memory allocation in ioctl nilfs2: cleanup nilfs_clear_inode nilfs2: avoid double error caused by nilfs_transaction_end nilfs2: insert explanations in gcinode file nilfs2: add maintainer nilfs2: fix gc failure on volumes keeping numerous snapshots nilfs2: fix improper return values of nilfs_get_cpinfo ioctl nilfs2: fix buggy behavior seen in enumerating checkpoints nilfs2: remove timedwait ioctl command nilfs2: use fixed sized types for ioctl structures nilfs2: remove compat ioctl code nilfs2: use unlocked_ioctl nilfs2: extend nilfs_sustat ioctl struct nilfs2: replace BUG_ON and BUG calls triggerable from ioctl nilfs2: super block operations fix endian bug nilfs2: clean up sketch file nilfs2: mark minor flag for checkpoint created by internal operation nilfs2: simplify handling of active state of segments nilfs2: introduce secondary super block nilfs2: support nanosecond timestamp Sachin S. Prabhu (1): Inconsistent setattr behaviour Sachin Sant (2): USB: FHCI: use dev_name() in place of bus_id. [S390] Fix appldata build break with !NET Sage Weil (2): Btrfs: notreelog mount option Btrfs: add flushoncommit mount option Salman Qazi (1): x86: fix performance regression in write() syscall Sam Ravnborg (1): kbuild: drop check for CONFIG_ in headers_check Samuel Ortiz (29): iwl3945: Getting rid of iwl-3945-debug.h iwl3945: Remove DRV_NAME dependenies iwl3945: Getting rid of iwl3945_eeprom_channel iwl3945: Have consistant and not redefined HW constants iwl3945: Use iwl-agn-rs.h rates definitions. iwl3945: Getting rid of iwl-3945-led.h iwl3945: Remove power related definitions from 3945 code iwl3945: iwl3945_queue and iwl3945_channel_info replacement iwl3945: sync tx queue data structure with iwlagn iwl3945: switch to the iwl-core send_card_state routine iwl3945: Change crypto parameter name iwl3945: Fix iwl3945_init_drv() iwl3945: Use iwl_txq_update_write_ptr iwlwifi: Add TFD library operations iwl3945: Use iwl-hcmd host command routines iwl3945: Use iwl-rfkill iwl3945: Define send_tx_power iwl3945: Use iwlcore scan code iwlwifi: make iwl_tx_queue->tfds void* iwl3945: Use iwlcore TX queue management routines iwl3945: Use iwl-eeprom.c routines iwl3945: Use the iwlcore geos routines iwlwifi: Remove IWL3945_DEBUG iwl3945: Getting rid of priv->antenna iwl3945: Add restart_fw module parameter iwl3945: Remaining host command cleanups iwl3945: Getting rid of the *39_rxon iwl_priv fields mfd: fix MAINTAINERS entry mfd: fix da903x warning Santosh Shilimkar (3): ARM: OMAP: Get available DMA channels from cmdline ARM: OMAP: Dispatch only relevant DMA interrupts [ARM] 5444/1: ARM: Realview: Fix event-device multiplicators in localtimer.c Santwona Behera (2): ethtool: Add RX pkt classification interface niu: Add TCAM classification configuration Sascha Hauer (55): fec: remove unused #else branches fec: remove empty functions fec: use linux/*.h instead of asm/*.h fec: do not use memcpy on physical addresses fec: use dma_alloc_coherent for descriptor ring fec: Fix KS8721BL_ICSR phy register offset fec: replace flush_dcache_range with dma_sync_single fec: Add support for Freescale MX27 FEC: Turn FEC driver into platform device driver [ARM] MXC: Use a single function for decoding a PLL [ARM] MXC: rework timer/clock initialisation [ARM] MXC: remove _clk suffix from clock names [ARM] MXC: add clkdev support [ARM] MX27 Clock rework [ARM] MX2: Add FEC platform device imxfb: add platform specific init/exit functions [ARM] pcm038: Add framebuffer support imxfb: add 18 bit support [ARM] MXC: add pwm driver for i.MX SoCs [ARM] MX2: add pwm device/resources [ARM] MX2: Add I2C devices / resources [ARM] PCM038 board: Add I2C support [ARM] mx1ads: add I2C support [ARM] iommux mx3: Add pin definitions for I2C [ARM] PCM037 Board: Add I2C support [ARM] Add Synertronixx scb9328 board support [ARM] mxc: add missing include imxfb: add mx27 support imxfb: Fix margin settings [ARM] MX35: Add register definitions for the i.MX35 [ARM] MXC: add cpu_is_ macros [ARM] add i.MX35 build support [ARM] MX35: add clock support [ARM] MX35 devices support [ARM] MX31/MX35: Add l2x0 cache support [ARM] MX31: Move static virtual mappings of AIPS1/2 to common file [ARM] pcm038: Fix pins for UART3 MX31 clkdev support Use __force in IO_ADDRESS macro to silence sparse mxcmmc: Do not pass clock name, we have only one clock for this device MX2/MX3 SDHC driver: rename platform driver MX2: Add SDHC platform_devices and resources MX31: Add sdhc resources/platform devices pcm037: Add sdhc support pcm970 baseboard: Add SDHC support i.MX1: remove fb support from mach-imx clkdev: add possibility to get a clock based on the device name imxfb: add clock support i.MX21/27: remove ifdef CONFIG_FB_IMX imxfb: Fix TFT mode V4L/DVB (11030): soc-camera: add board hook to specify the buswidth for camera sensors V4L/DVB (11031): pcm990 baseboard: add camera bus width switch setting V4L/DVB (11032): mt9m001: allow setting of bus width from board code V4L/DVB (11033): mt9v022: allow setting of bus width from board code V4L/DVB (11034): soc-camera: remove now unused gpio member of struct soc_camera_link Sathya Perla (1): be2net: cleanup rx/tx rate calculations Scott Feldman (4): enic: bug fix: return notify intr credits enic: record all bad FCS errs as frame errors enic: bug fix: tx_timeout reset path fix-ups enic: Add api for link down count and to get firmware notification status. Scott James Remnant (12): [SCSI] ch: Add scsi type modalias netfilter: auto-load ip6_queue module when socket opened netfilter: auto-load ip_queue module when socket opened [MTD] Auto-load mtdchar module when device opened. [MTD] Auto-load nftl module when device opened. V4L/DVB (10947): Auto-load videodev module when device opened. floppy: provide a PNP device table in the module. applicom: Auto-load applicom module when device opened. cyclades: Auto-load cyclades module when device opened. specialix: Auto-load specialix module when device opened. usb: Auto-load cdc_acm module when device opened. riscom8: Auto-load riscom8 module when device opened. Scott Wood (3): cpm_uart: Initialize port.dev before it's used. cpm_uart: Disable CPM udbg when re-initing CPM uart, even if not the console. powerpc/pq2fads: Update device tree for use with device-tree-aware u-boot. Sebastian Andrzej Siewior (2): x86/centaur: merge 32 & 64 bit version V4L/DVB (10655): tvp514x: make the module aware of rich people Sebastian Ott (14): [S390] cio: ccw device online store - report rc from ccw driver. [S390] cio: device scan oom fallback. [S390] cio: airq - fix array boundary [S390] cio: ccw group online store - report rcs to the caller. [S390] cio: fix sanity checks in ccwgroup driver. [S390] cio: ccw group fix unbind behaviour. [S390] cio: fix wrong buffer access in cio_ignore_write [S390] cio: fix rc generation after chsc call [S390] cio: remove unused local variable [S390] cio: wake up on failed recognition [S390] cio: introduce ccw_device_schedule_sch_unregister [S390] cio: introduce notifier for boxed state [S390] cio: disallow online setting of device in transient state [S390] cio: online_store - trigger recognition for boxed devices Sebastien Dugue (1): hrtimers: allow the hot-unplugging of all cpus Segher Boessenkool (1): fsl_pq_mdio: Fix compile failure Senthil Balasubramanian (7): ath9k: INI update for Atheros AR9280 and AR9285 chipset. ath9k: Fix AR9285 specific noise floor eeprom reads. ath9k: Add open loop control support ath9k: Get rid of unnecessary ATOMIC memory alloc during init time ath9k: RX buffers may be accessed/freed even before initialized/alloced. ath9k: INI update for AR9285 and periodic PA offset caliberation ath9k: Incorrect AR9285 version check macro Seokmann Ju (1): [SCSI] qla2xxx: Correct several PCI-EEH issues. Serge E. Hallyn (10): securityfs: fix long-broken securityfs_create_file comment keys: distinguish per-uid keys in different namespaces keys: consider user namespace in key_permission keys: skip keys from another user namespace keys: make procfiles per-user-namespace proc_sysctl: use CONFIG_PROC_SYSCTL around ipc and utsname proc_handlers namespaces: move proc_net_get_sb to a generic fs/super.c helper namespaces: mqueue ns: move mqueue_mnt into struct ipc_namespace namespaces: ipc namespaces: implement support for posix msqueues namespaces: mqueue namespace: adapt sysctl Sergei Shtylyov (14): USB: musb: rewrite host periodic endpoint allocation au1xxx-ide: auide_{in|out}sw() should be static ide: identify data word 53 bit 1 doesn't cover words 62 and 63 (take 3) ide-iops: only clear DMA words on setting DMA mode ide: add support for CFA specified transfer modes (take 3) ide-disk: use ATA_ERR ide: use ATA_HOB ide: turn set_irq() method into write_devctl() method ide: rename IDE_TFLAG_IN_[HOB_]FEATURE ide-io-std: shorten ide_{in|out}put_data() ide: call {in|out}put_data() methods from tf_{read|load}() methods (take 2) ide: move data register access out of tf_{read|load}() methods (take 2) ide: turn selectproc() method into dev_select() method (take 5) ide: inline SELECT_DRIVE() Sergey Senozhatsky (1): fb: nvidiafb recognizes geforcego 7300 chip as mobile Sergey Yanovich (1): sony-laptop: notify the hardware of a state change in wwanpower Sergio Aguirre (2): [ARM] OMAP: Add CSI2 clock struct for handling it with clock API V4L/DVB (10575): V4L2: Add COLORFX user control Shadi Ammouri (1): [ARM] Kirkwood: Marvell SheevaPlug support Shane Huang (1): i2c-piix4: Add support to SB800 SMBus changes Shannon Nelson (1): ixgbe: Move ring features into an enum, allowing easier future maintenance Shaohua Li (8): ftrace, ia64: make recordmcount distinct module compile ftrace, ia64: explictly ignore a file in recordmcount.pl ftrace, ia64: Add macro for ftrace_caller ftrace, ia64: Add recordmcount for ia64 ftrace, ia64: IA64 static ftrace support ftrace, ia64: IA64 dynamic ftrace support agp/intel: Add support for new intel chipset. drm/i915: correctly set IGD device's gtt size for KMS. Shawn Bohrer (1): 8250_pci: add support for National Instruments 843x RS232 devices Shen Feng (2): Btrfs: free inode struct when btrfs_new_inode fails documentation: update Documentation/filesystem/proc.txt and Documentation/sysctls Sheng Yang (10): PCI: Speed up device reset function KVM: Remove duplicated prototype of kvm_arch_destroy_vm KVM: Add support to disable MSI for assigned device KVM: Use irq routing API for MSI KVM: VMX: Use kvm_mmu_page_fault() handle EPT violation mmio KVM: Get support IRQ routing entry counts KVM: Correct deassign device ioctl to IOW intel-iommu: Snooping control support iommu: Add domain_has_cap iommu_ops intel-iommu: VT-d page table to support snooping control bit Shinya Kuribayashi (5): MIPS: VR5500: Enable prefetch MIPS: Mark Eins: Fix cascading interrupt dispatcher MIPS: EMMA2RH: Use handle_edge_irq() handler for GPIO interrupts MIPS: EMMA2RH: Use set_irq_chip_and_handler_name MIPS: EMMA2RH: Set UART mapbase Shyam Sundar (1): [SCSI] qla2xxx: Cleanup unused flags and #defines. Simon Farnsworth (2): solos: Slight debugging improvements solos: FPGA and firmware update support. Simon Kitching (1): initramfs: prevent initramfs printk message being split by messages from other code. Sonic Zhang (5): Blackfin arch: update default kernel configuration blackfin: Fix tty compile error in PIO mode Fix DMA rx ring buffer handling Change hardware flow control from poll to interrupt driven tty: Blackin CTS/RTS Sri Deevi (8): V4L/DVB (10950): xc5000: prepare it to be used by cx231xx module V4L/DVB (10952): cx25840: prepare it to be used by cx231xx module V4L/DVB (10954): Add cx231xx USB driver V4L/DVB (10957): cx231xx: Fix CodingStyle V4L/DVB (10958): cx231xx: some additional CodingStyle and minor fixes V4L/DVB (11038): Fix the issue with audio module & correction of Names V4L/DVB (11128): cx231xx: convert the calls to subdev format V4L/DVB (11129): cx231xx: Use generic names for each device block Srinivas Eeda (1): ocfs2: recover orphans in offline slots during recovery and mount Stanislaw Gruszka (1): ACPI: Avoid wiping out pr->performance during preregistering Stanislaw Raczynski (1): Staging: comedi: add mpc624 driver Stanley.Miao (1): arm: update omap_ldp defconfig to use smsc911x Stas Sergeev (1): x86: minor cleanup in the espfix code Stefan Haberland (1): [S390] dasd: message cleanup Stefan Richter (45): firewire: convert client_list_lock to mutex firewire: cdev: documentation fixlet firewire: cdev: tcodes input validation firewire: cdev: fix race of fw_device_op_release with bus reset firewire: cdev: address handler input validation firewire: core: remove outdated comment firewire: core: remove obsolete assertions firewire: standardize a variable name firewire: remove line breaks before function names firewire: core: remove unused definitions firewire: cdev: use list_first_entry firewire: prevent creation of multiple IR DMA contexts for the same channel firewire: cdev: fix documentation of FW_CDEV_IOC_GET_INFO firewire: cdev: reference-count client instances firewire: cdev: unify names of struct types and of their instances firewire: cdev: sort includes firewire: core: topology header fix firewire: cdev: add ioctls for manual iso resource management firewire: cdev: add ioctl to query maximum transmission speed firewire: cdev: restrict broadcast write requests to Units Space firewire: cdev: extend transaction payload size check firewire: cdev: replace some spin_lock_irqsave by spin_lock_irq firewire: cdev: shut down iso context before freeing the buffer firewire: cdev: increment fw_cdev_version, update documentation firewire: cdev: add ioctls for iso resource management, amendment firewire: cdev: simplify a schedule_delayed_work wrapper firewire: core: clean up includes firewire: core: move some functions firewire: core: remove condition which is always false firewire: normalize a variable name firewire: core: normalize a function argument name firewire: cdev: amendment to "add ioctl to query maximum transmission speed" firewire: cdev: secure add_descriptor ioctl firewire: cdev: fix race of ioctl_send_request with bus reset firewire: cdev: simplify FW_CDEV_IOC_SEND_REQUEST return value firewire: cdev: add closure to async stream ioctl firewire: core: drop unused call parameters of close_transaction firewire: core: increase bus manager grace period firewire: core: simplify broadcast channel allocation firewire: core: optimize propagation of BROADCAST_CHANNEL ieee1394: sbp2: follow up on "ieee1394: inherit ud vendor_id from node vendor_id" ieee1394: raw1394: add sparse annotations to raw1394_compat_write ieee1394: constify device ID tables DVB: firedtv: fix printk format mismatch Revert "V4L/DVB (10962): fired-avc: fix printk formatting warning." Stefan Weinhuber (2): [S390] dasd: add large volume support [S390] dasd: add High Performance FICON support Stefano Rivoir (1): Staging: comedi: add contec_pci_dio driver Steffen Klassert (1): xfrm: fix fragmentation on inter family tunnels Stephan Wienczny (1): V4L/DVB (10949): Add support for Terratec Cinergy HT PCI MKII Stephen Hemminger (197): atm: br2684 internal stats br2684: convert to net_device_ops clip: convert to internal network_device_stats lec: convert to internal network_device_stats lec: convert to net_device_ops netrom: convert to internal net_device_stats netrom: convert to net_device_ops rose: convert to internal net_device_stats rose: convert to network_device_ops appletalk: remove unneeded stubs arcnet: convert to internal stats arcnet: convert to net_device_ops com20020: convert to net_devic_ops 3c501: convert to net_device_ops 3c505: convert to net_device_ops 3c507: convert to net_device_ops 3c509: convert to net_device_ops 3c515: convert to net_device_ops 3c523: convert to net_device_ops 3c527: convert to net_device_ops 3c59x: convert to net_device_ops ibmtr: convert to internal network_device_stats ibmtr: convert to net_device_ops lanstreamer: convert to internal network stats lanstreamer: convert to net_device_ops olympic: convert to internal network device stats olympic: convert to net_device_ops tms380tr: convert to net_device_ops 3c559: convert to net_device_ops znet: convert to net_device_ops 6pack: convert to net_device_ops baycom: convert to internal net_device_stats baycom: convert to net_device_ops bpqether: convert to internal net_device_stats bpqether: convert to net_device_ops dmascc: convert to internal network device stats dmascc: convert to network_device_ops hdlcdrv: convert to internal net_device_stats hdlcdrv: convert to net_device_ops yam: convert to internal net_device_stats yam: convert to net_device_ops scc: convert to internal net_device_ops mkiss: convert to internal network device stats dmascc: convert to net_device_ops dmascc: convert to internal net_device_ops net: add ARP notify option for devices inet: Fix virt-manager regression due to bind(0) changes. sky2: remove unneede workaround sky2: handle dma mapping errors sky2: move VPD display into debug interface sky2: set VPD size netfilter: x_tables: change elements in x_tables netfilter: x_tables: remove unneeded initializations netfilter: ebtables: remove unneeded initializations netfilter: iptables: lock free counters ip: add loose reverse path filtering ip: ipip compile warning llc: fix non-const printk warning snap: handle registration error and compile warning tulip: get rid of warning for non-const string literal lapb: get rid of non-const printk warning 3c59x: get rid of non-const printk warnings ne2k-pci: fix non-constant printk warnings sis900: fix non-constant printk warnings yellowfin: fix non-constant printk warnings acenic: fix non-constant printk warnings natsemi: fix non-constant printk warnings fealnx: fix non-constant printk warnings via-rhine: fix non-constant printk warnings starfire: fix non-constant printk warnings sundance: fix non-constant printk warnings hamachi: fix non-constant printk warnings forcedeth: fix non-constant printk warnings mdio: fix non-constant printk warnings net: convert usage of packet_type to read_mostly net: fix warning about non-const string netfilter: Kconfig spelling fixes (trivial) tipc: fix non-const printf format arguments rtnetlink: add new value for DHCP added routes atm: lec use dev_change_mtu skb: expose and constify hash primitives ixgbe: fix select_queue management snap: use const for descriptor ipx: use constant for strings and desciptor atm: fix non-const printk argument eql: fix non-constant printk warning atm: convert mpc device to using netdev_ops atm: convert clip driver to net_device_ops infiniband: convert c2 to net_device_ops infiniband: convert nes driver to net_device_ops infiniband: convert ipoib to net_device_ops irda: net_device_ops ioctl fix irlan: convert to net_device_ops irda: convert irda_usb to net_device_ops irda: convert mcs driver to net_device_ops stir4200: convert to net_device_ops irda: convert w83977af_ir to net_device_ops irda: convert nsc_ircc driver to net_device_ops irda: convert ali driver to net_device_ops irda: convert vlsi driver to net_device_ops irda: convert smsc driver to net_device_ops irda: convert via-ircc to net_device_ops irda: convert sir device to net_device_ops irda: convert kingsun device to net_device_ops irda: convert ksdazzle device to net_device_ops irda: convert ks959 driver to net_device_ops usbnet: convert catc to internal net_device_stats usbnet: convert catc device to net_device_ops usbnet: convert to internal net_device stats usbnet: convert rtl driver to net_device_ops usbnet: convert hso driver to net_device_ops usbnet: convert to internal net_device_stats usbnet: support net_device_ops usbnet: convert asix driver to net_device_ops usbnet: convert dms9601 driver to net_device_ops usbnet: convert msc7830 driver to net_device_ops usbnet: convert smsc95xx driver to net_device_ops usbnet: convert rndis driver to use dev_get_stats usbnet: convert rndis driver to net_device_ops pcmcia: convert 3c589 to net_device_ops pcmcia: convert 3c574 to net_device_ops pcmcia: convert fmvj18x driver to internal net_device_stats pcmcia: convert fmvj18x driver to net_device_ops pcmcia: convert nmclan driver to net_device_ops pcnet: convert driver to net_device_ops xir2cps: convert to internal net_device stats xirc2ps: convert to net_device_ops smc91c92: convert to internal net_device_stats smc91c92: convert to net_device_ops axnet: convert to net_device_ops x25_asy: convert to internal net_device_stats x25_asy: convert to net_device_ops dlci: convert to internal net_device_stats dlci: convert to net_device_ops cycx: convert to net_device_ops lapbether: convert to internal net_device_stats labether: convert to net_device_ops sbni: use internal net_device_stats sbni: convert to net_device_ops netwave: convert to internal net_device_stats netwave: convert to net_device_ops strip: convert to net_device_ops wavelan: convert to internal net_device_stats wavelan: convert to net_device_ops airo: convert to net_device_ops atmel: convert to net_device_ops raylan: convert to net_device_ops wl3501: convert to internal net_device_stats wl3501: convert to net_device_ops zd1201: convert to internal net_device_stats zd1201: convert to net_device_ops mac80211_hwsim: convert to net_device_ops prism54: convert to net_device_ops prism54: convert to internal net_device_stats libertas: convert to internal net_device_stats libertas: convert to net_device_ops ipw2x00: convert to internal net_device_stats ipw2x00: convert infrastructure for use by net_device_ops ipw2100: convert to net_device_ops ipw2200: convert to net_device_ops hostap: convert to internal net_device_stats hostap: convert to net_device_ops netdev: expose net_device_ops compat as config option bridge: bad error handling when adding invalid ether address benet: use do_div() for 64 bit divide gianfar: fix headroom expansion code 3c503, smc-ultra: netdev_ops bugs uml: convert network device to internal network device stats uml: convert network device to netdevice ops appletalk: convert cops to internal net_device_stats appltetalk: convert cops device to net_device ops appletalk: convert LTPC to use internal net_device_stats appletalk: convert LTPC to net_device_ops IRDA: convert donauboe to net_device_ops tokenring: convert drivers to net_device_ops tokenring: convert smctr to net_device_ops wan: convert sdla driver to net_device_ops wireless: convert arlan to net_device_ops wireless: convert wavelan to net_device_ops netdev: seeq8005 convert to net_device_ops netdev: smc9194 convert to net_device_ops netdev: smc-ultra32 convert to net_device_ops netdev: smc-ultra fix netpoll lance: convert to net_device_ops netdev: ibmlana convert to net_device_ops netdev: convert eexpress to net_device_ops netdev: convert eexpro to net_device_ops netdev: convert at1700 to net_device_ops netdev: convert depca to net_device_ops netdev: convert ewrk3 to net_device_ops netdev: convert ni52 to net_device_ops netdev: convert ni65 to net_device_ops netdev: convert ac3200 to net_device_ops netdev: convert lp486e to net_device_ops netdev: convert cs89x0 to net_device_ops netdev: convert eth16i to net_device_ops net: allow multiple dev per napi with GRO Stephen Rothwell (10): sparseirq, powerpc/cell: fix unused variable warning in interrupt.c numa, cpumask: move numa_node_id default implementation to topology.h, fix powerpc/pmi: Irq handlers return irqreturn_t PCI: update fakephp for bus_id removal ACPI: update thermal for bus_id removal x86: fix mismerge in arch/x86/include/asm/timer.h tracing, powerpc: fix powerpc tree and tracing tree interaction tracing, net: fix net tree and tracing tree merge interaction percpu: __percpu_depopulate_mask can take a const mask powerpc: Wire up preadv and pwritev Steve French (11): [CIFS] Send SMB flush in cifs_fsync [CIFS] DFS no longer experimental [CIFS] Add new nostrictsync cifs mount option to avoid slow SMB flush [CIFS] reopen file via newer posix open protocol operation if available [CIFS] fix build error [CIFS] add extra null attr check [CIFS] Add definitions for remoteably fsctl calls [CIFS] Use posix open on file open when server supports it [CIFS] work around bug in Samba server handling for posix open [CIFS] Rename compose_mount_options to cifs_compose_mount_options. [CIFS] Fix memory overwrite when saving nativeFileSystem field during mount Steve Glendinning (21): smsc95xx: remove unused completion struct smsc95xx: fix function prototype of async callback smsc911x: leave RX_STOP interrupt permanently enabled smsc911x: add support for platform-specific irq flags smsc911x: register isr as IRQF_SHARED smsc911x: add external phy detection overrides smsc911x: allow mac address to be saved before device reset smsc911x: check for FFWD success before checking for timeout smsc911x: improve EEPROM loading timeout logic in open smsc911x: define status word positions as constants smsc911x: replace print_mac with %pM smsc911x: allow setting of mac address smsc9420: fix big endian rx checksum offload sh: add support for SMSC Polaris platform phy: add new LAN8710 and LAN8720 device ids to smsc phy driver smsc911x: enforce read-after-write timing restriction on eeprom access arm: convert pcm037 platform to use smsc911x arm: convert realview platform to use smsc911x arm: convert omap ldp platform to use smsc911x arm: update pcm037 defconfig to use smsc911x arm: update realview defconfigs to use smsc911x Steve Sakoman (3): ASoC: Complete Beagleboard support ARM: OMAP3: Add ADS7846 touchscreen support to Overo platform, v3 ARM: Add SMSC911X support to Overo platform (V2) Steve Wise (4): RDMA/cxgb3: sgl/pbl offset calculation needs 64 bits RDMA/cxgb3: Connection termination fixes RDMA/cxgb3: Remove modulo math from build_rdma_recv() RDMA/cxgb3: Enforce required firmware Steven Rostedt (176): ftrace: remove obsolete print continue functionality ftrace: set up trace event hash infrastructure ftrace: change trace.c to use registered events ftrace: convert unsigned index to signed trace: clean up funny line breaks in stat_seq_show trace: print ftrace_dump at KERN_EMERG log level trace: stop all recording to ring buffer on ftrace_dump ftrace: add stack trace to function tracer ftrace: move function tracer functions out of trace.c trace: add gcc printf check to trace_seq_printf trace: clean up format errors in calls to trace_seq_printf ftrace: combine stack trace in function call ftrace: remove static from function tracer functions trace: set max latency variable to zero on default ftrace: test for running of recordmcount.pl twice on an object trace: do not disable wake up tracer on output of trace ring-buffer: do not swap if recording is disabled trace: separate out rt tasks from wakeup tracer wakeup-tracer: show scheduling data in output ring-buffer: reset timestamps when ring buffer is reset trace: remove internal irqsoff disabling for trace output trace: fix logic to start/stop counting trace, lockdep: manual preempt count adding for local_bh_disable trace: fix default boot up tracer trace: let boot trace be chosen by command line trace: code style clean up trace: remove deprecated entry->cpu ring-buffer: add NMI protection for spinlocks ring-buffer: allow tracing_off to be used in core kernel code ftrace, x86: rename in_nmi variable nmi: add generic nmi tracking state ftrace: change function graph tracer to use new in_nmi ring-buffer: use generic version of in_nmi tracing: clean up splice code tracing, x86: fix constraint for parent variable preempt-count: force hardirq-count to max of 10 ring-buffer: rename label out_unlock to out_reset sched: do not account for NMIs ftrace: state that all functions are enabled in set_ftrace_filter ftrace: add do_for_each_ftrace_rec and while_for_each_ftrace_rec ftrace: rename ftrace_match to ftrace_match_records ftrace: break up ftrace_match_records into smaller components ftrace: add module command function filter selection ftrace: enable filtering only when a function is filtered on ftrace: add command interface for function selection ftrace: convert ftrace_lock from a spinlock to mutex ftrace: consolidate mutexes ftrace: trace different functions with a different tracer ring-buffer: add tracing_is_on to test if ring buffer is enabled ftrace: add traceon traceoff commands to enable/disable the buffers ftrace: show selected functions in set_ftrace_filter ftrace: add pretty print to selected fuction traces ftrace: add pretty print function for traceon and traceoff hooks ftrace: clean up coding style ftrace: rename _hook to _probe ftrace: show unlimited when traceon or traceoff has no counter tracing/function-graph-tracer: make arch generic push pop functions x86: check PMD in spurious_fault handler ftrace: allow archs to preform pre and post process for code modification ftrace, x86: make kernel text writable only for conversions ftrace: immediately stop code modification if failure is detected ftrace: break out modify loop immediately on detection of error ftrace, powerpc: replace debug macro with proper pr_deug powerpc, ftrace: fix compile error when modules not configured powerpc64: port of the function graph tracer powerpc64, tracing: add function graph tracer with dynamic tracing powerpc64, ftrace: save toc only on modules for function graph powerpc32, ftrace: save and restore mcount regs with macro powerpc32, ftrace: port function graph tracer to ppc32, static only powerpc32, ftrace: dynamic function graph tracer powerpc, ftrace: use unsigned int for instruction manipulation powerpc, ftrace: use create_branch lib function tracing: add DEFINE_TRACE_FMT to tracepoint.h tracing: add event trace infrastructure tracing: add schedule events to event trace tracing: make event directory structure tracing: rename DEFINE_TRACE_FMT to just TRACE_FORMAT tracing: wrap arguments with PARAMS tracing: add options directory and core option files tracing: add tracer dependent options to options directory tracing: add protection around open use of current_tracer tracing: use pointer error returns for __tracing_open tracing: use newline separator for trace options list tracing: replace kzalloc with kcalloc tracing: move trace point formats to files in include/trace directory tracing: add subsystem level to trace events tracing: make the set_event and available_events subsystem aware tracing: add subsystem irq for irq events tracing: add subsystem sched for sched events tracing: add interface to write into current tracer buffer tracing: add raw trace point recording infrastructure tracing: add raw fast tracing interface for trace events tracing: create the C style tracing for the sched subsystem tracing: create the C style tracing for the irq subsystem tracing: add TRACE_FIELD_SPECIAL to record complex entries tracing: add protection around modify trace event fields tracing: make trace_seq_reset global and rename to trace_seq_init tracing: add format file to describe event struct fields tracing: add ftrace headers to event format files tracing: add trace name and id to event formats tracing: add print format to event trace format files tracing: fix return value to registering events ring-buffer: reset write field for ring_buffer_read_page ring-buffer: fix ring_buffer_read_page ring-buffer: replace sizeof of event header with offsetof ring-buffer: make ring_buffer_read_page read from start on partial page tracing: add binary buffer files for use with splice tracing: add cpu_file intialization for ftrace_dump ring-buffer: fix timestamp in partial ring_buffer_page_read tracing: do not return EFAULT if read copied anything tracing: fix seq read from trace files tracing: add latency output format option tracing: remove extra latency_trace method from trace structure tracing: consolidate print_lat_fmt and print_trace_fmt tracing: have latency tracers set the latency format tracing: add tracing_on/tracing_off to kernel.h tracing: make all file_operations const tracing: move print of event format to separate file tracing: add format files for ftrace default entries tracing: typecast sizeof and offsetof to unsigned int tracing: replace TP with TP_ tracing: use generic __stringify tracing: new format for specialized trace points tracing: convert the sched trace points to the TRACE_EVENT macros tracing: convert irq trace points to new macros tracing: remove obsolete TRACE_EVENT_FORMAT macro tracing: fix printk format specifier tracing: do not allow modifying the ftrace events via the event files tracing: add back the available_events file tracing: flip the TP_printk and TP_fast_assign in the TRACE_EVENT macro tracing: document TRACE_EVENT macro in tracepoint.h tracing: update comments to match event code macros tracing: remove funky whitespace in the trace code tracing: use raw spinlocks for trace_vprintk tracing: keep ring buffer to minimum size till used tracing: expand the ring buffers when an event is activated tracing: fix trace_wait to know to wait on all cpus or just one ring-buffer: only allocate buffers for online cpus Merge branch 'tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip into trace/tip/tracing/ftrace-merge tracing: fix comments about trace buffer resizing tracing: protect ring_buffer_expanded with trace_types_lock ring-buffer: use CONFIG_HOTPLUG_CPU not CONFIG_HOTPLUG ring-buffer: remove unneeded get_online_cpus tracing: show that buffer size is not expanded tracing: make bprint event use the proper event id tracing: have event_trace_printk use static tracer tracing: export trace formats to user space tracing: fix stack tracer header tracing: explain why stack tracer is empty tracing: show event name in trace for TRACE_EVENT created events ring-buffer: document reader page design tracing: left align location header in stack_trace tracing: add comment for use of double __builtin_consant_p tracing: move binary buffers into per cpu directory softirq: no need to have SOFTIRQ in softirq name tracing: protect reader of cmdline output tracing: stop comm recording on tracing off ring-buffer: add api to allow a tracer to change clock source tracing: add global-clock option to provide cross CPU clock to traces tracing: make sched_switch stop/start light weight tracing: make power tracer start/stop methods lighter weight tracing: give easy way to clear trace buffer function-graph: consolidate prologues for output tracing: make print_(b)printk_msg_only global function-graph: calculate function depth within function graph tracer tracing: remove recording function depth from trace_printk function-graph: show binary events as comments tracing: fix memory leak in trace_stat function-graph: moved the timestamp from arch to generic code function-graph: prevent more than one tracer registering function-graph: ignore times across schedule function-graph: add option for include sleep times function-graph: allow unregistering twice ring-buffer: do not remove reader page from list on ring buffer free tracing: remove CALLER_ADDR2 from wakeup tracer function-graph: add proper initialization for init task Steven Toth (1): V4L/DVB (11296): cx23885: bugfix error message if firmware is not found Steven Whitehouse (17): dlm: Change rwlock which is only used in write mode to a spinlock GFS2: Fix remount argument parsing GFS2: Remove "double" locking in quota GFS2: Merge lock_dlm module into GFS2 GFS2: Remove unused field from glock GFS2: Fix error path ref counting for root inode GFS2: Fix deadlock on journal flush GFS2: Support generation of discard requests GFS2: Expose UUID via sysfs/uevent GFS2: Add a "demote a glock" interface to sysfs GFS2: Fix alignment issue and tidy gfs2_bitfit GFS2: Support quota/noquota mount arguments GFS2: Clean up of glops.c Fix a minor bug in the previous patch GFS2: Fix freeze issue vfs: Update fs.h to use inline functions when no file locking set vfs: Further changes from macro to inline function in fs.h Stoyan Gaydarov (7): x86: BUG to BUG_ON changes [S390] BUG to BUG_ON changes V4L/DVB (11235): changed ioctls to unlocked [IA64] BUG to BUG_ON changes BUG to BUG_ON changes Btrfs: BUG to BUG_ON changes Staging: BUG to BUG_ON changes Stuart Bennett (1): x86: mmiotrace: quieten spurious warning message Stuart Hall (1): V4L/DVB (11345): af9015: support for DigitalNow TinyTwin remote Sujith (85): mac80211: Add 802.11h CSA support ath9k: rateCodeToIndex is not used, remove it ath9k: Update short guard interval in rate control ath9k: Reorganize code in xmit.c ath9k: Remove ath_tx_stopdma and call ath9k_hw_stoptxdma directly ath9k: Merge queue draining functions ath9k: Add a helper function to wake mac80211 queues ath9k: Handle holding descriptor in TX completion properly ath9k: Revamp TX aggregation ath9k: Cleanup buffer type assignment mac80211: Add documentation bits for mac80211_rate_control_flags ath9k: Fix MCS rates registration bug for AR9285 ath9k: Fix bug in rate control capability registration ath9k: Fix bug in NF calibration ath9k: Handle chainmask for A9280 ath9k: Reconfigure beacons on getting a notification from mac80211 ath9k: Fix station access in aggregation completion ath9k: Setup short preamble properly in rate registration ath9k: Fix bug in TX DMA termination ath9k: Fix lockdep warning mac80211: Reset assoc_scan_tries after an unsuccessful scan run ath9k: Fix typo in checking for chip revision ath9k: Remove a bunch of unused macros ath9k: Cleanup get_rate() interface ath9k: Handle mac80211's RC flags for MCS rates ath9k: Add debugfs files for printing TX rate details ath9k: Lock mac80211 callbacks with a mutex ath9k: Remove all the redundant internal buffer types ath9k: Handle mac80211's FIF_CONTROL flag properly ath9k: Add retry counters to rate control debug file ath9k: Header file cleanup ath9k: Convert ANI channel to a pointer ath9k: Remove all the sc_ prefixes ath9k: Store HW version information in a separate structure ath9k: Move regulatory information to a separate structure ath9k: Remove duplicate variables ath9k: Merge ath_hal and ath_hal_5416 structures ath9k: Add callbacks hooks for EEPROM operations ath9k: Cleanup EEPROM operations ath9k: Remove all the useless ah_ variable prefixes ath9k: Store the correct max TX power level ath9k: Fix rd_ext EEPROM capability for AR9285 ath9k: Enable Fractional N mode ath9k: Enable TSF Out of Range Interrupt ath9k: Initialize AGC calibration properly ath9k: Fix bug in disabling MIB counters ath9k: Fix incorrect noise floor reading for 4k EEPROM ath9k: Decrease minimum NF threshold mac80211: Extend the rate control API with an update callback ath9k: Program the RTC registers correctly ath9k: Fix HW wait timeout ath9k: Fix antenna assignment bug in TX status processing ath9k: Initialize channel change time ath9k: Remove a few unused capability macros ath9k: Remove ath_txq_depth and get the queue depth directly ath9k: Use beacon interval directly ath9k: Remove multiple macro occurrences ath9k: Add PER to RC debug statistics ath9k: Fix bug in EEPROM chainmask retrieval ath9k: Fix PCI shutdown sequence ath9k: Add appropriate ANI values for AP mode mac80211: Notify the driver only when the beacon interval changes mac80211: Fix TKIP/WEP HT capability handling ath9k: Fill in rate_update mac80211 callback mac80211: Update IBSS beacon timestamp properly ath9k: Use new scan notifiers from mac80211 ath9k: Scrub beacon.c ath9k: Cleanup beacon stuck processing ath9k: Split beacon configuration into mode specific routines ath9k: Handle TSF properly for AP mode ath9k: Lock config_interface() callback with a mutex ath9k: Remove unused variables in struct ath_beacon_config ath9k: Initialize ANI properly ath9k: Fix bug in TX aggregation ath9k: Fix bug in reading debugfs file 'rcstat' ath9k: Add spectrum management to HW capabilities ath9k: Miscellaneous EEPROM handling cleanup ath9k: Move AR5416_VER_MASK to a common location ath9k: Introduce a helper function for setting board gain values ath9k: Change return type for set_board_values() ath9k: Fix bug in 4K EEPROM size calculation ath9k: Fill in ack signal in TX status ath9k: Fix bug in handling single stream stations ath9k: Update copyright in all the files mac80211: Tear down aggregation sessions for suspend/resume Sukadev Bhattiprolu (12): devpts: Must release s_umount on error vfs: simple_set_mnt() should return void Unroll essentials of do_remount_sb() into devpts Parse mount options just once and copy them to super block Move common mknod_ptmx() calls into caller Remove get_init_pts_sb() Merge code for single and multiple-instance mounts signals: add from_ancestor_ns parameter to send_signal() signals: protect cinit from unblocked SIG_DFL signals signals: zap_pid_ns_process() should use force_sig() signals: protect cinit from blocked fatal signals signals: SI_USER: Masquerade si_pid when crossing pid ns boundary Sunil Mushran (17): ocfs2/hb: Expose the list of heartbeating nodes via debugfs ocfs2: Move struct recovery_map to a header file ocfs2: Expose the file system state via debugfs ocfs2: Remove debugfs file local_alloc_stats ocfs2/dlm: Encapsulate adding and removing of mle from dlm->master_list ocfs2/dlm: Clean up struct dlm_lock_name ocfs2/dlm: Refactor dlm_clean_master_list() ocfs2/dlm: Create and destroy the dlm->master_hash ocfs2/dlm: Activate dlm->master_hash for master list entries ocfs2/dlm: Indent dlm_cleanup_master_list() ocfs2/dlm: Track number of mles ocfs2/dlm: Improve lockres counts ocfs2/dlm: dlm_set_lockres_owner() and dlm_change_lockres_owner() inlined ocfs2/dlm: Show the number of lockres/mles in dlm_state ocfs2/dlm: Remove struct dlm_lock_name in struct dlm_master_list_entry ocfs2/dlm: Do not purge lockres that is being migrated dlm_purge_lockres() ocfs2/dlm: Tweak mle_state output Suresh Jayaraman (1): NFS: Minor __nfs_revalidate_inode cleanup Suresh Siddha (21): x86: fix broken flush_tlb_others_ipi() x86: remove mach_apic.h, fix x86: unify genapic code, unify subarchitectures, remove old subarchitecture code, xapic fix x86: select x2apic ops in early apic probe only if x2apic mode is enabled x86, x2apic: fix lock ordering during IRQ migration x86, dmar: move page fault handling code to dmar.c x86, x2apic: enable fault handling for intr-remapping x86, dmar: routines for disabling queued invalidation and intr remapping x86, dmar: start with sane state while enabling dma and interrupt-remapping x86, intr-remapping: fix free_irte() to clear all the IRTE entries x86, x2apic: use virtual wire A mode in disable_IO_APIC() with interrupt-remapping x86, x2apic: fix clear_local_APIC() in the presence of x2apic x86, x2apic: cleanup the IO-APIC level migration with interrupt-remapping x86, x2apic: cleanup ifdef CONFIG_INTR_REMAP in io_apic code x86, ioapic: Fix non atomic allocation with interrupts disabled x86: fix broken irq migration logic while cleaning up multiple vectors x86, dmar: use atomic allocations for QI and Intr-remapping init x86: add x2apic_wrmsr_fence() to x2apic flush tlb paths x86, PAT: Remove duplicate memtype reserve in pci mmap x86, ACPI: add support for x2apic ACPI extensions ACPI: update x2apic comments Swen Schillig (6): [SCSI] zfcp: remove undefined subtype for status read response [SCSI] zfcp: prevent adapter close on initial adapter open [SCSI] zfcp: replace current ERP logging with a more convenient version [SCSI] zfcp: incorrect reaction on incoming RSCN [SCSI] zfcp: fix queue, scheduled work processing. [SCSI] zfcp: Ensure all work is cancelled on adapter dequeue Syed Mohammed Khasim (1): ARM: OMAP3: Add support for 3430 SDP, v4 TOMARI Hisanobu (1): ide-pmac: IDE cable detection on Apple PowerBook Takashi Iwai (252): ALSA: Introduce snd_card_create() ALSA: Convert to snd_card_create() in sound/isa/* ALSA: Convert to snd_card_create() in sound/pci/* ALSA: Convert to snd_card_create() in other sound/* ALSA: Update description of snd_card_create() in documents ALSA: Return proper error code at probe in sound/isa/* ALSA: Return proper error code at probe in sound/usb/* ALSA: pdaudiocf - Fix missing free in the error path ALSA: Return proper error code at probe in sound/pcmcia/* drivers/media: Convert to snd_card_create() drivers/staging: Convert to snd_card_create() for go7007 drivers/usb/gadget: Convert to snd_card_create() ALSA: opti9xx - Fix build breakage by snd_card_create() conversion ALSA: usb-audio - Cache mixer values Merge branch 'topic/asoc' into next/asoc Merge branch 'topic/usb-mixer-cache' into next/usb-audio ALSA: ca0106 - Add quirk for GA-G1975X mobo ALSA: hda - Add extra volume offset to standard volume amp macros ALSA: hda - Halve too large volume scales for STAC/IDT codecs ALSA: hda - Add debug prints for digital I/O pin detections ALSA: hda - Detect non-SPDIF digital I/O ALSA: hda - Improve auto-probing of STAC9872 codec ALSA: hda - Don't break the PCM creation loop ALSA: hda - Check HDMI jack types in the auto configuration ALSA: hda - Assign proper digital I/O type for STAC/IDT ALSA: hda - Allow digital-only I/O on ALC262 codec Merge branch 'topic/hda' into next/hda ALSA: hda - Clean up old VAIO hack codes for STAC9872 ALSA: hda - Remove old models for STAC9872 from the document Merge branch 'test/hda-vol-ofs' into next/hda ALSA: hda - Avoid to set the pin control again if already set Merge branch 'fix/hda' into topic/hda ALSA: hda - Add quirk for Gateway %1616 laptop Merge branch 'fix/hda' into topic/hda ALSA: hda - Add model=ref for Intel board with STAC9221 Merge branch 'fix/hda' into topic/hda ALSA: hda - Create "Input Source" control dynamically for STAC/IDT ALSA: hda - Fix initial verbs for mic-boosts on AD1981HD ALSA: hda - Remove invalid amp initializations for AD1988* codecs ALSA: hda - Fix invalid verbs for mic-boosts on AD1884* ALSA: hda - Fix invalid amp init for ALC268 codec ALSA: hda - Fix wrong initial verb for AD1984 thinkpad model Merge branch 'topic/snd_card_new-err' into topic/asoc ALSA: Add description of new snd-msnd-* drivers ALSA: enable build of snd-msnd-* drivers ALSA: intel8x0 - Fix build with CONFIG_SND_AC97_POWERSAVE=n ALSA: Add missing description of snd-cmi8330 module parameters ALSA: Add description of new fm_port option for snd-es1688 driver Merge branch 'fix/hda' into topic/hda ALSA: ice1724 - Dynamic MIDI TX irq control Merge branch 'fix/asoc' into topic/asoc ALSA: msnd - Fix build error with CONFIG_PNP=n Merge branch 'fix/hda' into topic/hda Merge branch 'fix/hda' into topic/hda ALSA: hwdep - Make open callback optional ALSA: hwdep - Fix coding style ALSA: Remove superfluous hwdep ops ALSA: hda - Add quirk for HP zenith laptop ALSA: hda - Add quirk for another HP laptop Merge branch 'topic/snd_card_new-err' into topic/atmel ALSA: wss - Add missing KERN_* prefix to printk ALSA: gus - Add missing KERN_* prefix to printk ALSA: isa/*: Add missing KERN_* prefix to printk ALSA: usb - Add missing KERN_* prefix to printk ALSA: hda - Add missing KERN_* prefix to printk ALSA: Add missing KERN_* prefix to printk in sound/core ALSA: Add missing KERN_* prefix to printk in sound/drivers ALSA: emux - Add missing KERN_* prefix to printk ALSA: Add missing KERN_* prefix to printk in sound/pci/ice1712 ALSA: emu10k1 - Add missing KERN_* prefix to printk ALSA: intel8x0 - Add missing KERN_* prefix to printk ALSA: Fix missing KERN_* prefix to printk in sound/pci ALSA: Add missing KERN_* prefix to printk in other sound/* ALSA: ca0106 - Add missing KERN_* prefix to printk ALSA: hda - Create beep mixer controls dynamically for Realtek codecs Merge branch 'fix/hda' into topic/hda ALSA: hda - Add missing NULL check in snd_hda_create_spdif_in_ctls() ALSA: hda - Clear codec->beep at release ALSA: hda - Remove superfluous code in patch_realtek.c ALSA: hda - Use digital beep for AD codecs ALSA: hda - Fix unused variable compile warning ALSA: Add subdevice_mask field to quirk entries Merge branch 'topic/quirk-cleanup' into topic/hda ALSA: hda - Clean up quirk lists Merge branch 'topic/quirk-cleanup' into topic/misc ALSA: via82xx - Clean up quirk list ALSA: hda - add digital beep support for ALC268 Merge branch 'fix/hda' into topic/hda ASoC: Fix forgotten replacements of socdev->codec Merge branch 'fix/hda' into topic/hda ALSA: hda - Fix a wrong pin check in snd_hda_parse_pin_def_config() ALSA: hda - Detect multiple digital-out pins Merge branch 'fix/hda' into topic/hda ALSA: hda - Allow fixed codec-probe mask ALSA: hda - Add forced codec-slots for ASUS W5F ALSA: hda - Update documentation Merge branch 'fix/hda' into topic/hda ALSA: hda - Add quirk for Acer AX1700-U3700A Merge branch 'fix/hda' into topic/hda ALSA: hda - Add proper cleanup for multiout-dig for ALC codecs ALSA: hda - Support multiple digital outs with auto-probing Merge branch 'for-2.6.30' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 into topic/asoc Merge branch 'fix/hda' into topic/hda ALSA: hda - Cleanup IDT92HD7x HP quirks ALSA: hda - Clean up quirks for HP laptops with AD1984A Merge branch 'topic/snd_card_new-err' into topic/cs423x-merge ALSA: Fix documentation for snd-cs4236 driver ALSA: au88x0 - Fix &&|| typo sound: OSS: ad1848 - Fix another typo ALSA: cs4236 - Merge snd-cs4236-lib module into snd-cs4236 ALSA: hda - Add quirk for Acer X3200 ALSA: hda - Don't enable beep for digital-only ALC262 ALSA: hda - Avoid doubly beep attachment in patch_alc268() ALSA: hda - Add digital-only mode for ALC268 Merge branch 'topic/snd_card_new-err' into topic/oxygen Merge branch 'fix/hda' into topic/hda ALSA: hda - Add generic pincfg initialization ALSA: hda - Remove realtek codec-specific pin save/restore functions ALSA: hda - Remove IDT codec-specific pin save/restore functions ALSA: hda - Remove codec-specific pin save/restore functions ALSA: hda - Update documentation for pincfg sysfs entries Merge branch 'fix/hda' into topic/hda Merge branch 'topic/hwdep-cleanup' into topic/hdsp ALSA: hda - Use snd_hda_codec_get_pincfg() in the rest places ALSA: hda - Rename {override,cur}_pin with {user,driver}_pin ALSA: hda - Make user_pin overriding the driver setup ALSA: hda - Don't give over 0dB volume for AD1984A HP laptops ALSA: hda - Add an example about pin reconfiguration Merge branch 'test/hda-pincfg' into topic/hda ALSA: hda - Add pseudo device-locking for clear/reconfig ALSA: hda - Clean up / fix quirks for HP laptops with AD1984A ALSA: hda - Clean up / fix quirk for Sony laptops with ALC262 ASoC: wm8753 - Fix build error ALSA: hda - Clean up the input pin setup in automatic mode ALSA: hda - Add model=auto for STAC/IDT codecs Merge branch 'fix/hda' into topic/hda ALSA: hda - Match all 103c:17xx devices for HP BPC model ALSA: hda - Fix an "unused variable" compile warning Merge branch 'fix/hda' into topic/hda ALSA: hda - Don't create a beep control for digital-only ALC268 ALSA: hda - Remove Toshiba probe_mask quirk ALSA: hda - Intialize more codec fields in snd_hda_codec_reset() ALSA: hda - Revert the codec probe at control-creation errors ALSA: hda - Don't return a fatal error at PCM-creation errors ALSA: hda - Add hint string helper functions ALSA: hda - Add show for init_verbs and hints sysfs entries ALSA: hda - Create "Analog Loopback" controls optionally ALSA: hda - Add more hint options for IDT/Sigmatel codecs ALSA: hda - Update documetation for hints sysfs entry ALSA: hda - Fix gcc compile warning ALSA: hda - Fix HP dv6736 mic input ALSA: hda - Fix conflict of mixer controls on Sony VAIO VGN-AR71S ALSA: hdsp - Ignore MIDI and PCM events in interrupts until initialized ALSA: hda - Fix check of ALC888S-VC in alc888_coef_init() ALSA: Fix sample rate of Lenovo Ideapad to 44.1kHz Merge branch 'fix/hda' into topic/hda ALSA: hda - Create output controls according to pin types for IDT/STAC ALSA: hda - Allow slave controls with non-zero indices ALSA: hda - Create multiple HP / speaker controls with index ALSA: hda - Connect to primary DAC if no individual DAC is available ALSA: hda - Assign HP and speaker DACs before mic/line-in ALSA: ac97 - Add patch entry for Conexant CX20468-31 chip ASoC: Fix Kconfig dependency of CONFIG_SND_S3C24XX_SOC_JIVE_WM8750 Merge branch 'for-2.6.30' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 into topic/asoc ALSA: Rewrite hw_ptr updaters ALSA: Remove unneeded snd_pcm_substream.timer_lock ALSA: add snd_ctl_add_slave_uncached() ALSA: powermac - Add missing KERN_* prefix to printk ALSA: Add kernel-doc comments to vmaster stuff ALSA: Add sound/core/jack.c to driver-API docbook entry ALSA: Clean up snd_monitor_file management ALSA: rawmidi - Fix possible race in open ALSA: rawmidi - Refactor rawmidi open/close codes Merge branch 'topic/jack' into topic/docbook-fix Merge branch 'topic/vmaster-update' into topic/docbook-fix ALSA: Fix DocBook headers ALSA: hda - Fix coding style issues in last two patches ALSA: hda - Add missing models to documentation ALSA: hda - Create vmaster for conexant codecs ALSA: hda - Create "Capture Source" control dynamically in patch_conexant.c ALSA: hda - Remove superfluous verbs for Cxt5047 laptop-eapd model ALSA: hda - Fix / clean up init verbs for Cxt5047 codec ALSA: hda - Clean up Cxt5047 parser ALSA: Remove obsolete snd_xferv struct and ioctls ALSA: Use define for ioctl definitions ALSA: hda - Add comments for the previous fix for conexant codecs ALSA: hda - Print multiple out-amp values of pin widgets on Conext codecs ALSA: hda - Add model=vaio for STAC9872 ALSA: hda - power up before codec initialization ALSA: hda - Add another HP model with IDT92HD71bx codec ALSA: hda - Fix ALC662 beep again Merge branch 'fix/opl3sa2-suspend' into topic/isa-misc Merge branch 'topic/snd_card_new-err' into topic/drop-l3 Merge branch 'fix/hda' into topic/hda ALSA: pcm - Fix a typo in error messages ALSA: pcm - avoid unnecessary inline ALSA: pcm - Reset invalid position even without debug option ALSA: pcm - Fix delta calculation at boundary overlap ALSA: hda - Don't reset BDL unnecessarily ALSA: hda - Don't reset stream at each prepare callback ALSA: Fix wrong pointer to dev_err() in arm/pxa2xx-ac97-lib.c ALSA: hda - Don't show the current connection for power widgets ALSA: hda - Detect digital-mic inputs on ALC663 / ALC272 ALSA: pcm - Safer boundary checks Merge branch 'topic/hda-optimize' into topic/hda ALSA: hda - Avoid output amp manipulation to digital mic pins ALSA: hda - Cache pin-cap values ALSA: hda - Fix the wrong pin-cap check in patch_realtek.c ALSA: hda - Don't create empty/single-item input source ALSA: hda - Use cached calls to get widget caps and pin caps ALSA: hda - Add quirk for Acer Ferrari 5000 Merge branch 'topic/snd_card_new-err' into for-linus Merge branch 'topic/hwdep-cleanup' into for-linus Merge branch 'topic/jack' into for-linus Merge branch 'topic/quirk-cleanup' into for-linus Merge branch 'topic/ctl-list-cleanup' into for-linus Merge branch 'topic/rawmidi-fix' into for-linus Merge branch 'topic/vmaster-update' into for-linus Merge branch 'topic/ioctl-use-define' into for-linus Merge branch 'topic/pcm-cleanup' into for-linus Merge branch 'topic/misc' into for-linus Merge branch 'topic/aoa' into for-linus Merge branch 'topic/asoc' into for-linus Merge branch 'topic/atmel' into for-linus Merge branch 'topic/ca0106' into for-linus Merge branch 'topic/cs423x-merge' into for-linus Merge branch 'topic/docbook-fix' into for-linus Merge branch 'topic/drop-l3' into for-linus Merge branch 'topic/echoaudio' into for-linus Merge branch 'topic/emu10k1' into for-linus Merge branch 'topic/hda' into for-linus Merge branch 'topic/hdsp' into for-linus Merge branch 'topic/ice' into for-linus Merge branch 'topic/intel8x0' into for-linus Merge branch 'topic/isa-misc' into for-linus Merge branch 'topic/msnd' into for-linus Merge branch 'topic/oss-fix' into for-linus Merge branch 'topic/oxygen' into for-linus Merge branch 'topic/pcxhr' into for-linus Merge branch 'topic/powermac' into for-linus Merge branch 'topic/sscape-fix' into for-linus Merge branch 'topic/usb-audio' into for-linus Merge branch 'topic/usb-caiaq' into for-linus Merge branch 'topic/asoc' into for-linus Merge branch 'topic/isa-misc' into for-linus Merge branch 'topic/hda' into for-linus Merge branch 'topic/misc' into for-linus Merge branch 'topic/atmel' into for-linus Merge branch 'topic/usb-audio' into for-linus Merge branch 'topic/asoc' into for-linus Merge branch 'topic/hda' into for-linus Merge branch 'topic/misc' into for-linus Takashi Yoshii (1): sh: sh7785lcr: Map whole PCI address space. Tao Ma (3): ocfs2: Optimize inode allocation by remembering last group ocfs2: Allocate inode groups from global_bitmap. ocfs2: Optimize inode group allocation by recording last used group. Ted Peters (1): powerpc/85xx: Fix MPC8572DS PCI protected interrupt sources Tejun Heo (82): x86: fix pda_to_op() x86: make early_per_cpu() a lvalue and use it x86: make vmlinux_32.lds.S use PERCPU() macro x86: make percpu symbols zerobased on SMP x86: load pointer to pda into %gs while brining up a CPU x86: use static _cpu_pda array x86: fold pda into percpu area on SMP x86: merge 64 and 32 SMP percpu handling x86: make pda a percpu variable x86: convert pda ops to wrappers around x86 percpu accessors x86: misc clean up after the percpu update x86: fix build bug introduced during merge x86_64: initialize this_cpu_off to __per_cpu_load linker script: add missing VMLINUX_SYMBOL linker script: add missing .data.percpu.page_aligned x86: cleanup stack protector x86: conditionalize stack canary handling in hot path linker script: kill PERCPU_VADDR_PREALLOC() x86: update canary handling during switch x86: uv cleanup x86: prepare for tlb merge x86: make x86_32 use tlb_64.c x86: rename tlb_64.c to tlb.c x86: clean up indentation in setup_per_cpu_areas() linker script: use separate simpler definition for PERCPU() Merge branch 'master' into tj-percpu x86: style cleanups for xen assemblies modpost: NOBITS sections may point beyond the end of the file elf: add ELF_CORE_COPY_KERNEL_REGS() x86: stackprotector.h misc update stackprotector: update make rules x86: no stack protector for vdso x86: use asm .macro instead of cpp #define in entry_32.S x86: add %gs accessors for x86_32 x86: make lazy %gs optional on x86_32 x86: implement x86_32 stack protector x86: fix x86_32 stack protector bugs vmalloc: call flush_cache_vunmap() from unmap_kernel_range() module: reorder module pcpu related functions percpu: kill percpu_alloc() and friends vmalloc: implement vm_area_register_early() vmalloc: add un/map_kernel_range_noflush() percpu: implement new dynamic percpu allocator x86: convert to the new dynamic percpu allocator percpu: clean up size usage percpu: fix pcpu_chunk_struct_size bootmem: clean up arch-specific bootmem wrapping bootmem: reorder interface functions and add a missing one vmalloc: add @align to vm_area_register_early() x86: update populate_extra_pte() and add populate_extra_pmd() percpu: remove unit_size power-of-2 restriction percpu: give more latitude to arch specific first chunk initialization x86: separate out setup_pcpu_4k() from setup_per_cpu_areas() x86: add embedding percpu first chunk allocator x86: add remapping percpu first chunk allocator percpu: add __read_mostly to variables which are mostly read only x86, percpu: fix minor bugs in setup_percpu.c x86: convert cacheflush macros inline functions percpu: fix too low alignment restriction on UP percpu: kill compile warning in pcpu_populate_chunk() alpha: fix typo in recent early vmalloc change bootmem, x86: further fixes for arch-specific bootmem wrapping percpu: clean up percpu constants percpu: cosmetic renames in pcpu_setup_first_chunk() percpu: improve first chunk initial area map handling percpu: use negative for auto for pcpu_setup_first_chunk() arguments x86: make embedding percpu allocator return excessive free space percpu: add an indirection ptr for chunk page map access percpu, module: implement reserved allocation and use it for module percpu variables x86, percpu: setup reserved percpu area for x86_64 percpu: replace pcpu_realloc() with pcpu_mem_alloc() and pcpu_mem_free() percpu: move chunk area map extension out of area allocation percpu: move fully free chunk reclamation into a work percpu: finer grained locking to break deadlock and allow atomic free linker script: define __per_cpu_load on all SMP capable archs percpu: make x86 addr <-> pcpu ptr conversion macros generic percpu: more flexibility for @dyn_size of pcpu_setup_first_chunk() percpu: generalize embedding first chunk setup helper percpu: fix spurious alignment WARN in legacy SMP percpu allocator ahci: drop intx manipulation on msi enable x86,percpu: fix inverted NUMA test in setup_pcpu_remap() ata_piix: VGN-BX297XP wants the controller power up on suspend Tero Kristo (1): [ARM] OMAP3: PM: Make sure clk_disable_unused() order is correct Tero Roponen (1): trivial: remove unused variable 'path' in alloc_file() Tetsuo Handa (6): tomoyo: fix sparse warning TOMOYO: Fix exception policy read failure. TOMOYO: Don't create securityfs entries unless registered. TOMOYO: Do not call tomoyo_realpath_init unless registered. TOMOYO: Fix a typo. tomoyo: remove "undelete domain" command. Thadeu Lima de Souza Cascardo (5): ALSA: Don't cold reset AC97 codecs in some ICH chipsets ALSA: AC97: Print AC97 flags in proc file to make debug it easier ALSA: AC97: Fix function name type in comment s/updat/update/ trivial: Give the right path in Documentation example trivial: fix where cgroup documentation is not correctly referred to Theodore Kilgore (2): V4L/DVB (10986): mr97310a: don't discard frame headers on stream output V4L/DVB (11213): gspca - sq905c: New subdriver. Theodore Ts'o (24): ext4: remove call to ext4_group_desc() in ext4_group_used_meta_blocks() ext4: Use unsigned int for blocksize in dx_make_map() and dx_pack_dirents() ext4: New inode/block allocation algorithms for flex_bg filesystems ext4: Add fine print for the 32000 subdirectory limit ext4: Simplify delalloc implementation by removing mpd.get_block ext4: Save stack space by removing fake buffer heads ext4: Simplify delalloc code by removing mpage_da_writepages() ext4: add EXT4_IOC_ALLOC_DA_BLKS ioctl ext4: Automatically allocate delay allocated blocks on close ext4: Automatically allocate delay allocated blocks on rename ext4: Track lifetime disk writes ext4: Add sysfs support ext4: remove /proc tuning knobs ext4: Use atomic_t's in struct flex_groups ext4: Use struct flex_groups to calculate get_orlov_stats() ext4: Add auto_da_alloc mount option ext4: Use WRITE_SYNC for commits which are caused by fsync() ext4: Check for an valid i_mode when reading the inode from disk ext4: fix locking typo in mballoc which could cause soft lockup hangs block_write_full_page: Use synchronous writes for WBC_SYNC_ALL writebacks ext3: Use WRITE_SYNC for commits which are caused by fsync() ext4: Regularize mount options ext3: Add replace-on-truncate hueristics for data=writeback mode ext3: Add replace-on-rename hueristics for data=writeback mode Thiemo Nagel (1): ext4: add checks of block references for non-extent inodes Thierry MERLE (5): V4L/DVB (10306): usbvision: use usb_make_path to report bus info V4L/DVB (10307): em28xx: use usb_make_path to report bus info V4L/DVB (10308): uvcvideo: use usb_make_path to report bus info V4L/DVB (10309): s2255drv: use usb_make_path to report bus info V4L/DVB (10379): gspca - main: Use usb_make_path() for VIDIOC_QUERYCAP. Thierry Reding (1): net: Add support for the OpenCores 10/100 Mbps Ethernet MAC. Thierry Vignaud (1): usb: kill prehistorical comments about USB_EHCI_HCD Thomas Gleixner (30): Merge branch 'linus' into timers/hrtimers hrtimer: prevent negative expiry value after clock_was_set() net: replace commatas with semicolons powerpc/irq: Convert obsolete irq_desc_t to struct irq_desc powerpc/irq: Convert obsolete hw_interrupt_type to struct irq_chip x86: convert obsolete irq_desc_t typedef to struct irq_desc powerpc/85xx: remove setup_irq(NULL action) in ksi8560 genirq: remove unused hw_irq_controller typedef genirq: remove redundant if condition genirq: make irqreturn_t an enum genirq: use kzalloc instead of explicit zero initialization genirq: add doc to struct irqaction genirq: deprecate __do_IRQ genirq: deprecate obsolete typedefs and defines x86: disable __do_IRQ support x86: reduce preemption off section in exit thread debugobjects: replace static objects when slab cache becomes available debugobjects: delay free of internal objects tracing: stop command line recording when tracing is disabled tracing: replace the crude (unsigned) -1 hackery tracing: fix trace_find_cmdline() Merge branch 'cpus4096' into irq/threaded genirq: add threaded interrupt handler support genirq: threaded irq handlers review fixups genirq: provide old request_irq() for CONFIG_GENERIC_HARDIRQ=n genirq: fix devres.o build for GENERIC_HARDIRQS=n x86: disable __do_IRQ support MIPS: Convert obsolete irq_desc_t to struct irq_desc cris: convert obsolete hw_interrupt_type to struct irq_chip [MTD] [NAND] Add support for 4KiB pages. Thomas Klein (4): ehea: Use net_device_ops structure ehea: Fix mem allocations which require page alignment ehea: Improve driver behaviour in low mem conditions ehea: Fix memory hotplug handling Thomas Mingarelli (1): [WATCHDOG] hpwdt.c: Add new HP BMC controller. Thomas Reitmayr (1): [WATCHDOG] orion5x_wdt: fix compile issue by providing tclk as platform data Thomas Renninger (6): [CPUFREQ] Introduce /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_transition_latency [CPUFREQ] powernow-k8: Always compile powernow-k8 driver with ACPI support [CPUFREQ] ondemand/conservative: deprecate sampling_rate{min,max} [CPUFREQ] ondemand/conservative: sanitize sampling_rate restrictions [CPUFREQ] powernow-k8: Only print error message once, not per core. ACPI: Remove R40e c-state blacklist Tilman Schmidt (4): gigaset: Kconfig cleanup bas_gigaset: use tasklet_hi_schedule for timing critical tasklets gigaset: in file ops, check for device disconnect before anything else gigaset: documentation update Tim Abbott (2): module: Make find_symbol return a struct kernel_symbol module: Export symbols needed for Ksplice Tim Blechmann (4): ALSA: pcxhr: fix trivial typo ALSA: snd_pcm_new api cleanup ALSA: hdsp - poll for iobox ALSA: hdsp - whitespace cleanup Tim Farrington (1): V4L/DVB (10574): saa7134: fix Avermedia E506R composite input Timo Kokkonen (1): ARM: OMAP: Export dmtimer functions Timo Teras (2): gre: strict physical device binding gre: optimize hash lookup Timur Tabi (17): ASoC: Allow Freescale MPC8610 audio drivers to be compiled as modules ASoC: remove stand-alone mode support from CS4270 codec driver ASoC: improve I2C initialization code in CS4270 driver ASoC: fix initialization order of the CS4270 codec driver ASoC: fix documentation in CS4270 codec driver ASoC: fix build break in CS4270 codec driver ASoC: fix message display in CS4270 codec driver ASoC: optimize init sequence of Freescale MPC8610 sound drivers ASoC: add additional controls to the CS4270 codec driver ASoC: add support for SSI asynchronous mode to the Freescale SSI drivers ASoC: Improve pause/unpause performance in Freescale 8610 drivers i2c-mpc: do not allow interruptions when waiting for I2C to complete powerpc: add fsl,fifo-depth property to Freescale SSI device nodes powerpc: Add defintion for MSR[GS] to list of MSR bits powerpc: clean up ssi.txt, add definition for fsl,ssi-asynchronous ASoC: remove trigger delay in Freescale MPC8610 sound driver ASoC: trim SSI sysfs statistics in Freescale MPC8610 sound drivers Tobias Klauser (9): tracing: storage class should be before const qualifier ath5k: Storage class should be before const qualifier orinoco: Storage class should be before const qualifier ieee1394: Storage class should be before const qualifier trivial: h8300: Storage class should be before const qualifier trivial: drivers/char/bsr.c: Storage class should be before const qualifier trivial: wusb: Storage class should be before const qualifier V4L/DVB (10628): V4L: Storage class should be before const qualifier mfd: Storage class should be before const qualifier Tobias Lorenz (3): V4L/DVB (10530): Documentation and code cleanups V4L/DVB (10531): Code rearrangements in preparation for other report types V4L/DVB (10534): Output HW/SW version from scratchpad Tom Arbuckle (1): powerpc/pci: Fix PCI<->OF matching of old style multifunc devices Tom Talpey (5): SVCRDMA: remove faulty assertions in rpc/rdma chunk validation. XPRTRDMA: correct an rpc/rdma inline send marshaling error SUNRPC: dynamically load RPC transport modules on-demand NFS: load the rpc/rdma transport module automatically SVCRDMA: fix recent printk format warnings. Tom Zanussi (13): tracing: fix leak in event_format_read() tracing: add run-time field descriptions for event filtering tracing: add ring_buffer_event_discard() to ring buffer tracing: add per-event filtering tracing: add per-subsystem filtering tracing/filters: use list_for_each_entry_safe tracing/filters: fix bug in copy_pred() tracing/filters: clean up filter_add_subsystem_pred() tracing/filters: use list_for_each_entry tracing/filters: free pred when clearing filters tracing/filters: use trace_seq_printf() to print filters tracing/filters: disallow integer values for string filters and vice versa tracing: filter fix for TRACE_EVENT_FORMAT events Tomas Winkler (10): iwlwifi: 3945 extract flow handler definitions into iwl-3945-fh.h iwlwifi: 3945 unfold iwl-3945-commands.h iwlwifi: use iwl-commands.h also in 3945 iwlwifi: 3945 remove duplicated code from iwl-3945-commands.h iwlwifi: 3945 drop usage of union tsf iwlwifi: 3945 remove iwl-3945-commands.h iwlwifi: clean up printing iwlwifi: don't use implicit priv in IWL_DEBUG iwlwifi: use pci registers defined in pci_regs.h iwlwifi: drop PCIe workaround applicable for development boards Tomasz Lemiech (1): tulip: Fix for MTU problems with 802.1q tagged frames Tomi Valkeinen (1): [ARM] OMAP: wait for pwrdm transition after clk_enable() Tony Battersby (15): [SCSI] sg: fix races during device removal [SCSI] sg: fix races with ioctl(SG_IO) [SCSI] sym53c8xx: fix shost use-after-free and memory leak [SCSI] sym53c8xx: fix NULL deref on error path [SCSI] sym53c8xx: fix bogus free_irq() on error path [SCSI] sym53c8xx: unmap pci memory after probe errors [SCSI] sym53c8xx: handle pci_iomap() failures [SCSI] sym53c8xx: use a queue depth of 1 for untagged devices [SCSI] sym53c8xx: don't flood syslog with negotiation messages epoll: don't use current in irq context epoll: remember the event if epoll_wait returns -EFAULT epoll: remove unnecessary xchg epoll: clean up ep_modify epoll: use real type instead of void * ipc: make shm_get_stat() more robust Tony Lindgren (19): [ARM] omap: Fix omap1 clock issues ARM: OMAP: No need to include board-perseus2.h or board-fsample.h from hardware.h ARM: OMAP: No need to include board-h2.h from hardware.h ARM: OMAP: No need to include board-h3.h from hardware.h ARM: OMAP: No need to include board-innovator.h from hardware.h ARM: OMAP: No need to include board-osk.h from hardware.h ARM: OMAP: No need to include board-palm*.h from hardware.h ARM: OMAP: No need to include board-omap2430sdp.h from hardware.h ARM: OMAP: No need to include board-apollon.h from hardware.h ARM: OMAP: No need to include board-h4.h from hardware.h ARM: OMAP: No need to include board-ldp.h from hardware.h ARM: OMAP: No need to include board-overo.h from hardware.h ARM: OMAP: No need to include board-nokia.h from hardware.h ARM: OMAP: Remove remaining board-*.h includes from hardware.h ARM: OMAP3: Add more GPIO mux options ARM: OMAP3: Add base address definitions and resources for OMAP 3 IS, v2 [ARM] OMAP: Fix compile for omap2_init_common_hw() [ARM] 5434/1: ARM: OMAP: Fix mailbox compile for 24xx [ARM] 5436/1: ARM: OMAP: Fix compile for rx51 Tony Luck (2): Pull cpumask into release branch Pull pvops into release branch Tony Vroon (2): ALSA: hda - Add tyan model for Realtek ALC262 ALSA: Document tyan model for Realtek ALC262 Trent Piepho (48): powerpc/fsl-booke: Remove code duplication in lowmem mapping powerpc/fsl-booke: Allow larger CAM sizes than 256 MB powerpc/fsl-booke: Make CAM entries used for lowmem configurable PCI: don't scan existing devices PCI: pci_scan_slot() returns newly found devices PCI Hotplug: restore fakephp interface with complete reimplementation V4L/DVB (10558): bttv: norm value should be unsigned V4L/DVB (10559): bttv: Fix TDA9880 norm setting code V4L/DVB (10560): bttv: make tuner card info more consistent V4L/DVB (10561): bttv: store card database more efficiently V4L/DVB (10562): bttv: rework the way digital inputs are indicated V4L/DVB (10563): bttv: clean up mux code for IVC-120G V4L/DVB (10564): bttv: fix external mux for PHYTEC VD-009 V4L/DVB (10565): bttv: fix external mux for RemoteVision MX V4L/DVB (10566): bttv: clean up mux code for IDS Eagle V4L/DVB (10567): bttv: shrink muxsel data in card database V4L/DVB (10568): bttv: dynamically allocate device data V4L/DVB (10791): videodev: not possible to register NULL video_device V4L/DVB (10792): cx88: remove unnecessary forward declaration of cx88_core V4L/DVB (10794): v4l2: Move code to zero querybuf output struct to v4l2_ioctl V4L/DVB (10811): videodev: only copy needed part of RW ioctl's parameter V4L/DVB (10812): v4l2: Zero out read-only ioctls in one place V4L/DVB (10813): v4l2: New function v4l2_video_std_frame_period V4L/DVB (10814): saa7146: some small fixes V4L/DVB (10815): bttv: Don't need to zero ioctl parameter fields V4L/DVB (10816): cx88: Don't need to zero ioctl parameter fields V4L/DVB (10817): stkwebcam: Don't need to zero ioctl parameter fields V4L/DVB (10818): usbvision: Don't need to zero ioctl parameter fields V4L/DVB (10819): gspca: Don't need to zero ioctl parameter fields V4L/DVB (10820): meye: Don't need to zero ioctl parameter fields V4L/DVB (10848): zoran: Change first argument to zoran_v4l2_buffer_status V4L/DVB (10930): zoran: Unify buffer descriptors V4L/DVB (10933): zoran: Pass zoran_fh pointers instead of file pointers V4L/DVB (10934): zoran: replace functions names in strings with __func__ V4L/DVB (11260): v4l2-ioctl: Check format for S_PARM and G_PARM V4L/DVB (11261): saa7146: Remove buffer type check from vidioc_g_parm V4L/DVB (11262): bttv: Remove buffer type check from vidioc_g_parm V4L/DVB (11263): gspca: Stop setting buffer type, and avoid memset in querycap V4L/DVB (11264): omap24xxcam: Remove buffer type check from vidioc_s/g_parm V4L/DVB (11265): stkwebcam: Remove buffer type check from g_parm and q/dq/reqbufs V4L/DVB (11266): vino: Remove code for things already done by video_ioctl2 V4L/DVB (11267): cafe_ccic: Remove buffer type check from XXXbuf V4L/DVB (11268): cx23885-417: Don't need to zero ioctl parameter fields V4L/DVB (11269): cx88-blackbird: Stop setting buffer type in XXX_fmt_vid_cap V4L/DVB (11270): meye: Remove buffer type checks from XXX_fmt_vid_cap, XXXbuf V4L/DVB (11271): usbvision: Remove buffer type checks from enum_fmt_vid_cap, XXXbuf V4L/DVB (11272): zr364xx: Remove code for things already done by video_ioctl2 leds: Add openfirmware platform device support Trond Myklebust (31): NFSv4: Ignore errors on the post-op attributes in SETATTR calls NFSv4: Support NFSv4 optional attributes in the struct nfs_fattr NFS: Shrink the struct nfs_fattr NFS: Fix the type of struct nfs_fattr->mode NFSv4: Clean up decode_getfattr() NFSv4: Make decode_getfattr() set fattr->valid to reflect what was decoded NFSv4: A referral is assumed to always point to a directory. NFSv4: Simplify some cache consistency post-op GETATTRs NFS: cleanup - remove struct nfs_inode->ncommit NFS: Throttle page dirtying while we're flushing to disk NFS: Kill the "defined but not used" compile error on nommu machines SUNRPC: Avoid an unnecessary task reschedule on ENOTCONN SUNRPC: Ensure we set XPRT_CLOSING only after we've sent a tcp FIN... SUNRPC: Don't disconnect if a connection is still in progress. SUNRPC: Handle ECONNREFUSED correctly in xprt_transmit() SUNRPC: Handle socket errors correctly SUNRPC: Return EAGAIN instead of ENOTCONN when waking up xprt->pending SUNRPC: Delay, then retry on connection errors. SUNRPC: Ensure that xs_nospace return values are propagated SUNRPC: Add the equivalent of the linger and linger2 timeouts to RPC sockets SUNRPC: Add a sysctl to control the duration of the socket linger timeout SUNRPC: xs_tcp_connect_worker{4,6}: merge common code SUNRPC: Ensure we close the socket on EPIPE errors too... NFS: Fix up a mismerged patch NFS: Fix the notifications when renaming onto an existing file NFS: Optimise NFS close() Merge commit '9f4c899c0d90e1b51b6864834f3877b47c161a0e' into devel SUNRPC: Ensure IPV6_V6ONLY is set on the socket before binding to a port Merge branch 'devel' into for-linus NFS: Fix a double free in nfs_parse_mount_options() NFS: Fix the return value in nfs_page_mkwrite() Tulio Magno Quites Machado Filho (2): ath5k: support LED's on emachines E510 notebook ath5k: Support LED's on Acer Extensa 5620z Uri Shkolnik (2): V4L/DVB (10748): sms1xxx: restore smsusb_driver.name to smsusb V4L/DVB (10750): import changes from Siano Ursula Braun (4): netiucv: invalid return code from hard_start_xmit claw: invalid return codes from hard_start_xmit ctcm: invalid return code from hard_start_xmit qeth: check for completion of a running recovery Uwe Bugla (2): V4L/DVB (11287): Code cleanup (passes checkpatch now) of the b2c2-flexcop-drivers 1/2 V4L/DVB (11288): Code cleanup (passes checkpatch now) of the b2c2-flexcop-drivers 2/2 Uwe Kleine-Koenig (7): ftrace, trivial: fix typo "resgister" -> "register" tracing: make CALLER_ADDRx overwriteable trivial: fix typo "thier" -> "their" trivial: fix typo "kernal" -> "kernel" trivial: fix typo "varaible" -> "variable" trivial: fix typo "virual" -> "virtual" trivial: fix typo "resgister" -> "register" Uwe Kleine-König (6): fix warning "control reaches end of non-void function" remove unused static function gpio_fec_inactive [MTD] [MAPS] move sa1100 flash's probe function to .devinit.text [MTD] [NAND] move gen_nand's probe function to .devinit.text ALSA: move snd_powermac's probe function to .devinit.text leds: move h1940-leds's probe function to .devinit.text Valentin Longchamp (8): mx31: rework of iomux support mx31moboard: use of new iomux implementation mx31ads: use of new iomux implementation mx31pdk: use of new iomux implementation pcm037: use of new iomux implementation mx31: add pin definition for LCD mx31moboard: initial support for various baseboards mx31: add dma and fb devices Vasanthakumar Thiagarajan (24): mac80211: Scale down to non-HT association with TKIP/WEP as pairwise cipher mac80211: Fix tx power setting ath9k: Enable Bluetooth Coexistence support mac80211: Handle power constraint level advertised in 11d+h beacon ath9k: Fix basic connectivity issue ath9k: Fix typo in chip version check ath9k: Remove unnecessary gpio configuration in ath9k_hw_reset() ath9k: Remove unused ath9k_hw_select_antconfig() from hw.c ath9k: Clean up the way the eeprom antenna configuration is read ath9k: Fix LED blink pattern mac80211: Remove bss information of the current AP when it goes out of range mac80211: Free current bss information in few places where we don't need it any more mac80211: Make sure non-HT connection when IEEE80211_STA_TKIP_WEP_USED is set ath9k: Fix PTK/GTK handshake timeout ath9k: Filter out beacons from other BSS in STA mode ath9k: Configure Power control register appropriately for h/w with 4k eeprom ath9k: Remove ununsed ack duration stuff with long/short preamble ath9k: Use suitable macros with 4k eeprom data ath9k: Set IEEE80211_TX_CTL_RATE_CTRL_PROBE in rate control for probe rate mac80211: Populate HT limitation with TKIP/WEP to the handler for SIOCSIWENCODE too ath9k: Keep LED on in idle state after association ath9k: Fix rate control update for aggregated frames ath9k: Fix bug in reporting status of tx rate ath9k: Nuke struct ath_xmit_status Vasily Khoruzhick (1): ASoC: Don't unconditionally use the PLL in UDA1380 Vasu Dev (8): [SCSI] fcoe: prep work to completely remove fc_transport_fcoe code [SCSI] fcoe: removes fc_transport_fcoe.[ch] code files [SCSI] fcoe: removes default sw transport code file fcoe_sw.c [SCSI] fcoe: renames libfcoe.c to fcoe.c as the only fcoe module file [SCSI] fcoe, libfc: add libfcoe module [SCSI] fcoe: moves common FCoE library API functions to libfcoe module [SCSI] fcoe: cleans up libfcoe.h and adds fcoe.h for fcoe module [SCSI] fcoe, libfc: fix double fcoe_softc memory alloc Vegard Nossum (4): kmemtrace: add missing newline x86: use symbolic constants for MSR_IA32_MISC_ENABLE bits fix regression from "vsprintf: unify the format decoding layer for its 3 users" vsprintf: unify the format decoding layer for its 3 users, cleanup Venkatesh Pallipadi (2): gpu/drm, x86, PAT: routine to keep identity map in sync gpu/drm, x86, PAT: PAT support for io_mapping_* Vernon Sauder (2): smc91x: enable ethtool EEPROM interface USB: pxa27x_udc: typo fixes and code cleanups Victor Shcherbatyuk (1): Bluetooth: Fix issue with return value of rfcomm_sock_sendmsg() Vitaly Mayatskikh (1): udp: Wrong locking code in udp seq_file infrastructure Vitaly Wool (1): V4L/DVB (10833): em28xx: enable Compro VideoMate ForYou sound Vitja Makarov (1): Blackfin SPI Driver: ensure cache coherency before doing DMA Vivek Natarajan (10): mac80211: Reset the power save timer from master_start_xmit. mac80211: A couple of fixes to dynamic power save. mac80211: Enhancements to dynamic power save. mac80211: Cancel the power save timer in ieee80211_stop. ath9k: Enable dynamic power save in ath9k. mac80211: Cancel the dynamic ps timer in ioctl_siwpower. ath9k: Enable MIB and TIM interrupts for station mode. mac80211: Fix the wrong WARN_ON message appearing on enabling power save. mac80211: Always send a null data frame if TIM bit is set. ath9k: Handle power modes in isr for power save. Vlad Yasevich (10): sctp: Clean up sctp checksumming code sctp: Fix the RTO-doubling on idle-link heartbeats sctp: Inherit all socket options from parent correctly. sctp: Fix broken RTO-doubling for data retransmits sctp: simplify sctp listening code sctp: Clean up TEST_FRAME hacks. ipv6: Disallow binding to v4-mapped address on v6-only socket. ipv6: Allow ipv4 wildcard binds after ipv6 address binds ipv6: Make v4-mapped bindings consistent with IPv4 ipv6: Fix conflict resolutions during ipv6 binding VomLehn (1): USB: Fix cp2101 USB serial device driver termios functions for console use WANG Cong (3): uml: don't use a too long string literal uml: improve error messages uml: remove useless comments Wang Chen (5): genirq: check chip->ack before calling sched, documentation: remove old O(1) scheduler document sched: kill unused parameter of pick_next_task() x86: don't define __this_fixmap_does_not_exist() x86: early_ioremap_init(), use __fix_to_virt(), because we are sure it's safe Wayne Boyer (3): [SCSI] ipr: add MSI support [SCSI] ipr: add message to error table [SCSI] ipr: Expose debug and fastfail parameters Wei Yongjun (38): mac80211: cleanup kmalloc/memset -> kcalloc ext4: New rec_len encoding for very large blocksizes ipv6: Remove some pointless conditionals before kfree_skb() gre: used time_before for comparing jiffies ipip: used time_before for comparing jiffies sit: used time_before for comparing jiffies Bluetooth: Remove some pointless conditionals before kfree_skb() Bluetooth: Remove some pointless conditionals before kfree_skb() isdn: remove some pointless conditionals before kfree_skb() irda: remove some pointless conditionals before kfree_skb() ppp: remove some pointless conditionals before kfree_skb() drivers/net/rionet.c: remove some pointless conditionals before kfree_skb() i2400m: remove some pointless conditionals before kfree_skb() wan: remove some pointless conditionals before kfree_skb() af_key: remove some pointless conditionals before kfree_skb() pktgen: remove some pointless conditionals before kfree_skb() unix: remove some pointless conditionals before kfree_skb() netlink: remove some pointless conditionals before kfree_skb() can: remove some pointless conditionals before kfree_skb() packet: remove some pointless conditionals before kfree_skb() core: remove some pointless conditionals before kfree_skb() decnet: remove some pointless conditionals before kfree_skb() iucv: remove some pointless conditionals before kfree_skb() llc: remove some pointless conditionals before kfree_skb() chelsio: remove some pointless conditionals before kfree_skb() ns83820: remove some pointless conditionals before kfree_skb() sctp: Add some missing types for debug message sctp: remove dup code in net/sctp/socket.c sctp: fix the length check in sctp_getsockopt_maxburst() sctp: use time_before or time_after for comparing jiffies sctp: fix to indicate ASCONF support in INIT-ACK only if peer has such capable sctp: fix to send FORWARD-TSN chunk only if peer has such capable [JFFS2] kmem_cache_alloc/memset -> kmem_cache_zalloc core: remove pointless conditional before kfree() ext3: use unsigned instead of int for type of blocksize in fs/ext3/namei.c [SCSI] use kmem_cache_zalloc instead of kmem_cache_alloc/memset Staging: usbip: kmem_cache_alloc/memset -> kmem_cache_zalloc Staging: remove some pointless conditionals before kfree_skb() Weidong Han (2): KVM: define KVM_CAP_DEVICE_DEASSIGNMENT KVM: fix kvm_vm_ioctl_deassign_device Wenji Huang (7): trace: trivial fixes in comment typos. tracing: remove unneeded variable tracing: provide correct return value after outputting the event tracing: fix typos in comments tracing: use the more proper parameter tracing: fix the return value of trace selftest tracing: fix typing mistake in hint message and comments Werner Cornelius (1): USB: usb-serial ch341: support for DTR/RTS/CTS Wey-Yi Guy (9): iwlwifi: add valid tx antenna information in rate_scale_table debugfs iwlwifi: add rf information in rate_scale debugfs command iwlwifi: remove un-necessary rs_tl_turn_on_agg() after agg enabled iwlwifi: HT performance improvement changes iwlwifi: check IEEE80211_TX_STAT_AMPDU for agg pkt iwlwifi: verify the antenna selection when receive fixed rate debugfs iwlwifi: return 0 for AMPDU_TX/RX_STOP request if NIC is going down iwlwifi: report error when detect failure during stop agg queue iwlwifi: show current driver status in user readable format Will Page (1): 8250_pci: add support for National Instruments legacy 8420 RS232 boards Wim Van Sebroeck (10): [WATCHDOG] cpwd.c & riowd.c - unlocked_ioctl [WATCHDOG] rc32434_wdt: add shutdown method [WATCHDOG] rc32434_wdt: add spin_locking [WATCHDOG] rc32434_wdt: make sure watchdog is not running at startup [WATCHDOG] cpwd.c: Coding style - Clean-up [WATCHDOG] struct file_operations should be const [WATCHDOG] More coding-style and trivial clean-up [WATCHDOG] Fix io.h & uaccess.h includes. [WATCHDOG] i6300esb.c: convert to platform device driver [WATCHDOG] i6300esb.c: start locking Winkler, Tomas (29): iwlwifi: move sysfs status entry to debugfs iwlwifi: kill retry_rate sysfs for iwlagn iwlwifi: 3945 remove current_rate from station entry. iwlwifi: emliminate iwl3945_mac_get_stats mac80211 handler iwlwifi: replace IWL_WARNING with IWL_WARN iwlwifi: replace IWL_ERROR with IWL_ERR iwlwifi: use iwl_cmd instead of iwl3945_cmd iwl3945: use iwl_rb_status iwl3945: rearrange 3945 tfd iwl3945: use iwl3945_tx_cmd instead of iwl_tx_cmd iwl3945: use rx queue management infrastructure from iwlcore iwl3945: kill hw_params.tx_ant_num iwl3945: kill iwl3945_rx_queue_restock iwl3945: kill iwl3945_rx_queue_space iwl3945: kill iwl3945_x2_queue_used iwl3945: remove double defined 3945 tfd structures iwl3945: use hw_params.rx_buf_size iwlwifi: make iwl-power.c more readable iwlwifi: fix iwl_mac_set_key and iwl3945_mac_set_key iwlwifi: kill iwl3945_scan_cancel and iwl3945_scan_cancel_timeout iwlwifi: kill scan39 iwlwifi: remove unused or twice defined members in iwl_priv iwlwifi: eliminate power_data_39. iwlwifi: fix probe mask for 39 scan API iwlwifi: iwl_tx_queue_alloc : fix warning in printk formatting iwlwifi: suppress unused variable warning when compiling w/o IWLWIFI_DEBUG iwlwifi: iwl3945_send_tx_power must be static iwlwifi: check return value of pci_enable_device iwlwifi: unify iwlagn and 3945 power save management Witold Baryluk (1): tracing: optimization of branch tracer Witold Szczeponik (1): Enable PNPACPI _PSx Support, v3 Wolfgang Grandegger (14): powerpc/85xx: TQM85xx - fix sensitivity of CAN interrupts powerpc/85xx: TQM85xx - add i2c device nodes for LM75 powerpc/5200: add function to return external clock frequency powerpc/85xx: Add support for the "socrates" board (MPC8544). powerpc/85xx: Re-add the device_type soc to socrates.dts [MTD] [NAND] Add support for NAND on the Socrates board [MTD] [NAND] FSL-UPM: add multi chip support [MTD] [NAND] FSL-UPM: Add wait flags to support board/chip specific delays powerpc: NAND: FSL UPM: document new bindings powerpc/85xx: TQM8548: Update DTS file for multi-chip support i2c: i2c-mpc: various coding style fixes i2c: i2c-mpc: use dev based printout function i2c: i2c-mpc: make I2C bus speed configurable powerpc/85xx: i2c-mpc: use new I2C bindings for the Socates board Wolfgang Kroener (1): radeonfb: suspend/resume for ATI Mobility Radeon RV350 Wolfgang Muees (5): mmc_spi: allow setting of spi mode 3 mmc_spi: wait more bytes for card response mmc_spi: allow higher timeouts for SPI mode mmc_spi: adjust for delayed data token response Blackfin SPI Driver: Make mmc_spi driver work on Blackfin Wolfram Sang (8): powerpc/pci: Fix typo: s/resouces/resources/ in a pr_debug powerpc/5200: add Phytec phyCORE-MPC5200B-IO board (pcm032) ALSA: sound/ali5451: typo: s/resouces/resources/ eeprom/at24: Remove EXPERIMENTAL i2c-algo-pca: Rework waiting for a free bus i2c-algo-pca: Use timeout for checking the state machine i2c-pca-platform: Use defaults if no platform_data given i2c: imx: Make disable_delay a per-device variable Wolfram Strepp (1): lib/rbtree.c: optimize rb_erase() Wu Fengguang (7): iwlwifi: beautify code ALSA: enable concurrent digital outputs for ALC1200 writeback: double the dirty thresholds ramfs: add support for "mode=" mount option Btrfs: fix typos in comments vfs: skip I_CLEAR state inodes ALSA: hda - enable SPDIF output for Intel DX58SO board Wu, Fengguang (1): iwlwifi: report correct and detailed values about requested txpower Xiantao Zhang (6): KVM: ia64: Code cleanup KVM: ia64: vTLB change for enabling windows 2008 boot KVM: ia64: Add the support for translating PAL Call's pointer args KVM: ia64: Implement some pal calls needed for windows 2008 ia64: Move the macro definitions related to MSI to one header file. KVM: ia64: Fix the build errors due to lack of macros related to MSI. Xiaotian Feng (1): cpm_uart: fix non-console port startup bug Xoan Loureiro (1): V4L/DVB (11289): Patch for Yuan MC770 DVB-T (1164:0871) Yang Hongyang (11): spider_net: Convert to net_device_ops. dma-mapping: replace all DMA_64BIT_MASK macro with DMA_BIT_MASK(64) dma-mapping: replace all DMA_48BIT_MASK macro with DMA_BIT_MASK(48) dma-mapping: replace all DMA_40BIT_MASK macro with DMA_BIT_MASK(40) dma-mapping: replace all DMA_39BIT_MASK macro with DMA_BIT_MASK(39) dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) dma-mapping: replace all DMA_31BIT_MASK macro with DMA_BIT_MASK(31) dma-mapping: replace all DMA_30BIT_MASK macro with DMA_BIT_MASK(30) dma-mapping: replace all DMA_28BIT_MASK macro with DMA_BIT_MASK(28) dma-mapping: replace all DMA_24BIT_MASK macro with DMA_BIT_MASK(24) dma-mapping: update the old macro DMA_nBIT_MASK related documentations Yasuaki Ishimatsu (2): x86: fix debug message of CPU clock speed x86: unify PM-Timer messages Yasunori Goto (2): IA64: fix swiotlb alloc_coherent for non DMA_64BIT_MASK devices, fix hpet: fix the possibility of insane return value of hpet_calibrate() against SMI Yauhen Kharuzhy (1): [MTD] mtdpart: Make ecc_stats more realistic. Yegor Yefremov (1): [MTD] [CHIPS] Add JEDEC probe support for the SST 39VF3201 flash chip Yehuda Sadeh (1): crypto: shash - Fix unaligned calculation with short length Yevgeny Petrilin (3): mlx4_core: Don't perform SET_PORT command for Ethernet ports mlx4_core: Add link type autosensing IB/mlx4: Unregister IB device prior to CLOSE PORT command Yi Li (2): Blackfin SPI Driver: fix bug - spi controller driver does not assert/deassert CS correctly Blackfin SPI Driver: fix bug - correct usage of struct spi_transfer.cs_change Yi Zou (9): [SCSI] net, fcoe: add ETH_P_FCOE for Fibre Channel over Ethernet (FCoE) [SCSI] net: add NETIF_F_FCOE_CRC to can_checksum_protocol [SCSI] net: add FCoE offload support through net_device [SCSI] fcoe, libfc: check offload features from LLD through netdev [SCSI] libfc: use lso_max for sequence offload [SCSI] fcoe: add support to large send by gso through net_device for fcoe_sw [SCSI] libfc: add support of large receive offload by ddp in fc_fcp [SCSI] fcoe: add support to FCoE offload support in fcoe_sw through net_device [SCSI] fcoe: fcoe fc crc offload indication by skb->ip_summed Yinghai Lu (68): sparseirq: make some func to be used with genirq sparseirq: use kstat_irqs_cpu instead sparseirq: fix build with unknown irq_desc struct sparseirq: use kstat_irqs_cpu on non-x86 architectures too x86: arch_probe_nr_irqs x86: make 32bit MAX_HARDIRQS_PER_CPU to be NR_VECTORS irq: clean up irq stat methods x86: allow more than 8 cpus to be used on 32-bit x86, apic unification: remove left over files x86: fix compiling with 64bit with def_to_bigsmp x86: seperate default_send_IPI_mask_sequence/allbutself from logical x86: don't treat bigsmp as non-standard x86, percpu: fix kexec with vmlinux x86: move default_ipi_xx back to ipi.c forcedeth: make msi-x different name for rx-tx forcedeth: don't clear nic_poll_irq too early forcedeth: disable irq at first before schedule rx forcedeth: ck804 and mcp55 doesn't need timerirq forcedeth: enable msix to default irq: clear kstat_irqs irq: optimize init_kstat_irqs/init_copy_kstat_irqs x86/irq: optimize nr_irqs x86: use NR_IRQS_LEGACY to replace 16 x86: check_timer cleanup x86: find nr_irqs_gsi with mp_ioapic_routing acpi/x86: introduce __apci_map_table, v4 x86, es7000: fix ACPI table mappings pci, x86, acpi: fix early_ioremap() leak x86: fix typo in filter_cpuid_features() x86: make 32bit to call enable_IO_APIC early like 64bit [IA64] fix __apci_unmap_table x86: pre init pirq_entries[] x86: make APIC_init_uniprocessor() more like smp_prepare_cpus() x86: add x2apic config x86: fold apic_ops into genapic x86: check mptable physptr with max_low_pfn on 32bit x86: check range in reserve_early() x86: remove update_apic from x86_quirks x86: don't compile vsmp_64 for 32bit x86: fix bootmem cross node for 32bit numa x86: make 32-bit init_memory_mapping range change more like 64-bit x86: ioremap mptable x86: reserve exact size of mptable x86: fix bootmem cross node for 32bit numa, cleanup x86/doc: mini-howto for using earlyprintk=dbgp x86: make "memtest" like "memtest=17" x86: remove smp_apply_quirks()/smp_checks() x86: fix warning about nodeid x86: more MTRR debug printouts x86: print out mtrr_range_state when user specify size x86: separate mtrr cleanup/mtrr_e820 trim to separate file x86: fix e820_update_range() x86: make e820_update_range() handle small range update x86: fix get_mtrr() warning about smp_processor_id() with CONFIG_PREEMPT=y x86: print the continous part of fixed mtrrs together x86-32: compute initial mapping size more accurately x86: put initial_pg_tables into .bss x86: fix 64k corruption-check x86: print out more info in e820_update_range() x86: MTRR workaround for system with stange var MTRRs PCI/x86: detect host bridge config space size w/o using quirks x86/PCI: host mmconfig detect clean up x86: fix set_extra_move_desc calling x86: use default_cpu_mask_to_apicid for 64bit x86/PCI: make pci=lastbus=255 work when acpi is on PCI: don't enable too much HT MSI mapping PCI: fix HT MSI mapping fix x86: remove duplicated code with pcpu_need_numa() Yoichi Yuasa (1): sound: fix opensound URL in oss Introduction Yoshihiro Shimoda (5): sh: Support fixed 32-bit PMB mappings from bootloader. sh: sh7785lcr: Updates for fixed PMB. sh: pci-sh7780: fix pci memory address for fixed PMB [MTD] [NAND] sh_flctl: fix hardware ecc handling for 2048 byte page USB: r8a66597-hcd: suspend/resume support Yoshiji Amagai (1): nilfs2: directory entry operations Yoshiya Matsuzaka (1): Staging: comedi: add cb_pcidio driver Yu Zhao (13): PCI: check if a bus is added when removing it PCI: fix incorrect mask of PM No_Soft_Reset bit PCI: initialize and release SR-IOV capability PCI: restore saved SR-IOV state PCI: reserve bus range for SR-IOV device PCI: centralize device setup code PCI: add SR-IOV API for Physical Function driver PCI: handle SR-IOV Virtual Function Migration PCI: document SR-IOV sysfs entries PCI: manual for SR-IOV user and driver developer PCI: fix conflict between SR-IOV and config space sizing PCI: save and restore PCIe 2.0 registers PCI: SR-IOV quirk for Intel 82576 NIC Yuji Shimada (3): PCI: allow assignment of memory resources with a specified alignment PCI: Setup disabled bridges even if buses are added PCI: don't corrupt enable_cnt when doing manual resource alignment Yuri Tikhonov (1): powerpc/44x: Support for 256KB PAGE_SIZE Zachary Ware (1): Staging: comedi: add aio_iiro_16 driver Zbynek Michl (1): [ARM] 5355/1: Adding support for the HTC Himalaya and its framebuffer Zebediah C. McClure (5): [OMAP850] Add base support for omap850 cpu [OMAP850] Changes to base IO subsystem, v2 [OMAP850] Changes to memory subsystem [OMAP850] IRQ related changes [OMAP850] Build system changes Zhang Rui (9): ACPI: introduce sysfs I/F for dynamic tables ACPI video: check the return value of acpi_video_device_lcd_get_level_current ACPI video: check the return value of acpi_video_device_lcd_set_level ACPI video: support _BCL packages that don't export brightness levels when machine is on AC/Battery ACPI video: support reversed _BCL method in ACPI video driver ACPI video: support _BQC/_BCL/_BCM methods that use index values ACPI video: support buggy BIOSes with _BCQ implemented ACPI video: add a warning message if _BQC is not found ACPI: update comment Zhang Yanmin (1): SLUB: Fix default slab order for big object sizes Zhao Yakui (3): drm/i915: Sync mode_valid/mode_set with intel video driver drm/i915: Sync crt hotplug detection with intel video driver ACPI: suspend: Add the Pansonic CF51 box to the dmi check table Zhao, Yu (1): intel-iommu: Fix address wrap on 32-bit kernel. Zhaolei (5): ftrace: avoid double-free of dyn_ftrace ftrace: don't try to __ftrace_replace_code on !FTRACE_FL_CONVERTED rec ftrace: Using FTRACE_WARN_ON() to check "freed record" in ftrace_release() ftrace: Add check of sched_stopped for probe_sched_wakeup ftrace: Correct a text align for event format output Zhenwen Xu (4): Driver core: some cleanup on drivers/base/sys.c i2c-core: Some style cleanups make the e->rule.xxx shorter in kernel auditfilter.c leds: remove an unnecessary "goto" on drivers/leds/leds-s3c24.c Zhenyu Wang (10): drm/i915: TV modes' parameters sync up with 2D driver drm/i915: Fix TV get_modes to return modes count drm/i915: TV mode_set sync up with 2D driver drm/i915: TV detection fix drm/i915: only set TV mode when any property changed drm/i915: fix TV mode setting in property change drm/i915: Fix SDVO command debug function drm/i915: Fix error in SDVO DTD and modeline convert drm/i915: Fix SDVO CREATE_PREFERRED_INPUT_TIMING command drm/i915: Fix SDVO TV support Zhu Yi (1): iwlwifi: add more comments to IWL_DL_xx adam radford (1): [SCSI] 3w-9xxx: add power management support akpm@linux-foundation.org (1): PCI: constify pci_bus_add_devices() alex.shi (1): acpi: fix of pmtimer overflow that make Cx states time incorrect dann frazier (10): rtc: add platform driver for EFI rtc-parisc: add a missing include for linux/rtc.h rtc-parisc: remove redundant locking rtc-parisc: remove struct parisc_rtc rtc-parisc: use rtc_valid_tm() in parisc_get_time rtc-parisc: use platform_driver_probe rtc-parisc: declare rtc_parisc_dev as static rtc-parisc: remove unnecessary ret variable rtc-parisc: remove a couple unnecessary variables rtc-parisc: rename p pointer to rtc dave graham (4): e1000e: Disable dynamic clock gating for 82571 per si errata. e1000e: remove RXSEQ link monitoring for serdes e1000e: Serdes - attempt autoneg when link restored. e1000e: Remove mutex_trylock and associated WARN on failure. dayu@datangmobile.cn (1): powerpc/83xx: Fix the interrupt loss problem on ipic etienne (1): smack: fixes for unlabeled host support ideawu (1): sunrpc/svc.c: Remove unused line 'rqstp->rq_server = serv;' in svc_process john stultz (1): time: apply NTP frequency/tick changes immediately klaas de waal (1): V4L/DVB (11236): tda827x: fix locking issues with DVB-C malc (1): sctp: add Adaptation Layer Indication parameter only when it's set nsyeow (1): Staging: comedi: add adl_pci6208 driver peerchen (1): ALSA: hda - Add the Device IDs for MCP89 and remove IDs of MCP7B remi.denis-courmont@nokia (6): Phonet: move to Networking options like other protocol stacks Phonet: check destination before delivering packets locally Phonet: allow phonet_device_init() to fail, put it to __init section Phonet: handle rtnetlink registration failure Phonet: remove useless locking in device cleanup Phonet: use per-namespace devices list roel kluin (3): therm_adt746x: Fix signed/unsigned confusion powerpc/ps3: Make ps3av_set_video_mode mode ID signed udf: unsigned last[i] cannot be less than 0 root (1): Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel sebastian.blanes@gmail.com (1): V4L/DVB (10824): Add "Sony PlayTV" to dibcom driver unsik Kim (1): mflash: initial support venkatesh.pallipadi@intel.com (4): x86 PAT: ioremap_wc should take resource_size_t parameter x86, CPA: Add a flag parameter to cpa set_clr() x86, PAT: Add support for struct page pointer array in cpa set_clr x86, CPA: Add set_pages_arrayuc and set_pages_array_wb vibi sreenivasan (1): macb: fix warning "warning: unused variable `dev' " wanzongshun (3): [ARM] 5374/1: The w90p910 uart0 driver patch [ARM] 5392/1: Delete redundant macros for w90p910 [ARM] 5393/1: Add W90P910 EVB NOR flash driver wengang wang (2): nfsd(v2/v3): fix the failure of creation from HPUX client ocfs2: fix rare stale inode errors when exporting via nfs yakui_zhao (1): drm: sync the mode validation for INTERLACE/DBLSCAN ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:41 2009 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_23,J_CHICKENPOX_31,J_CHICKENPOX_32,J_CHICKENPOX_52, J_CHICKENPOX_72,J_CHICKENPOX_73 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQfXa183820 for ; Thu, 21 May 2009 15:26:41 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQe30183786; Thu, 21 May 2009 15:26:40 -0500 Date: Thu, 21 May 2009 15:26:40 -0500 Message-Id: <200905212026.n4LKQe30183786@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.29-rc2, created. v2.6.29-rc2 X-Git-Refname: refs/tags/v2.6.29-rc2 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: d31ce8060b0e875179ba5ca1d40475dc2a082cc7 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 annotated tag, v2.6.29-rc2 has been created at d31ce8060b0e875179ba5ca1d40475dc2a082cc7 (tag) tagging 1de9e8e70f5acc441550ca75433563d91b269bbe (commit) replaces v2.6.29-rc1 tagged by Linus Torvalds on Fri Jan 16 12:43:19 2009 -0800 - Log ----------------------------------------------------------------- Linux 2.6.29-rc2 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAklw8WsACgkQF3YsRnbiHLv+dQCgp9ZwHWunWAORwYyyKg3JPFzg uikAoKdTk3voaFNP6AKpMLdq5MyKopaS =+hyI -----END PGP SIGNATURE----- Al Viro (1): m68k: Fix --build-id breakage for sun3 Alan Cox (6): pty: Fix documentation neo: Remove a bogus NULL check usb-serial: remove NULL check pata_it821x: Update RDC UDMA handling tty: Fix race in the flush for some ldiscs tty: Fix a kref leak in the HSO driver on re-open Alessandro Zummo (1): rtc: tw4030 add alarm/update interfaces Alex Murray (1): hwmon: applesmc: fix light sensor readings on newer MacBooks Alexander Beregalov (1): irda: fix incomplete conversation to internal stats Alexey Starikovskiy (2): ACPI: EC: Limit workaround for ASUS notebooks even more ACPI: EC: Don't trust ECDT tables from ASUS Alistair John Strachan (3): hwmon: (abituguru3) Match partial DMI board name strings hwmon: (abituguru3) Enable DMI probing feature on IN9 32X MAX hwmon: (abituguru3) Fix CONFIG_DMI=n fallback to probe Andi Kleen (1): x86: avoid theoretical vmalloc fault loop Andreas Bombe (1): m68k: amiflop - Get rid of sleep_on calls Andreas Herrmann (3): hwmon: (k8temp) Warn about fam F rev F errata hwmon: (k8temp) Fix wrong sensor selection for AMD K8 RevF/RevG CPUs hwmon: (k8temp) Fix temperature reporting for (most) K8 RevG CPUs Andreas Schwab (1): m68k: Wire up sys_restart_syscall Andrew Morton (5): smp_call_function_single(): be slightly less stupid kernel/up.c: omit it if SMP=y, USE_GENERIC_SMP_HELPERS=n revert "mm: vmalloc use mutex for purge" lib/idr.c: use kmem_cache_zalloc() for the idr_layer cache drivers/ata/pata_ali.c: s/isa_bridge/ali_isa_bridge/ to fix alpha build Andrew Price (1): rt2x00: Fix radio LED type check Andrey Yurovsky (1): libertas_tf: return NETDEV_TX_OK in TX op Andy Whitcroft (9): sysrq documentation: remove the redundant updated date sysrq documentation: document why the command header only is shown sysrq: add commentary on why we use the console loglevel over using KERN_EMERG checkpatch: handle missing #if open in context checkpatch: type/cast spacing should not check prefix spacing checkpatch: allow parentheses on return handle array values checkpatch: if should not continue a preceeding brace checkpatch: struct seq_operations should normally be const checkpatch: version: 0.27 Anirban Chakraborty (1): [SCSI] qla2xxx: Fix ISP restart bug in multiq code Anirban Sinha (1): MIPS: 64-bit: Use generic 32-bit ptrace compat code. Anton Vorontsov (4): gianfar: Fix soft lockup with multi-interrupt TSECs powerpc/83xx: Make serial ports work on MPC8315E-RDB w/ FSL U-Boots powerpc/83xx: Move mcu_mpc8349emitx driver out of drivers/i2c/chips/ phylib: Fix Freescale TBI PHY detection Antonio Ospite (1): rtc-pxa: fix build failure Arjan van de Ven (2): script: improve markup_oops.pl to also decode oopses in modules async: fix __lowest_in_progress() Atsushi Nemoto (1): tx4938ide: Fix build error due to read_sff_dma_status moving Ayaz Abdulla (4): forcedeth: xmit lock fix forcedeth: version bump and copyright forcedeth: remove mgmt unit for mcp79 chipset forcedeth: napi schedule lock fix Balaji Rao (7): mfd: PCF50633 core driver mfd: PCF50633 adc driver mfd: PCF50633 gpio support rtc: PCF50633 rtc driver power_supply: PCF50633 battery charger driver input: PCF50633 input driver regulator: PCF50633 pmic driver Bartlomiej Zolnierkiewicz (6): ide: fix accidental LOCKDEP breakage caused by local_irq_set() removal ide: can't use SSD/non-rotational queue flag for all CFA devices via82cxxx: fix cable warning message sl82c105: remove dead code ide: remove unused CONFIG_BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ ide: fix suspend regression Ben Dooks (3): mfd: Ensure sm501 GPIO pin mode is GPIO when configured IDE: fix sparse signed-ness errors with host->host_busy gpio: fix probe() error return in gpio driver probes Ben Hutchings (1): sfc: SFT9001: Fix condition for LNPGA power-off Benjamin Herrenschmidt (6): powerpc: Fix cpufreq drivers after cpufreq core changes Merge commit 'kumar/kumar-next' into next Merge commit 'gcl/gcl-next' into next powerpc/powermac: Fix occasional SMP boot failure [CVE-2009-0029] powerpc: Enable syscall wrappers for 64-bit net: Add init_dummy_netdev() and fix EMAC driver using it Bernd Schmidt (1): Fix timeouts in sys_pselect7 Bob Copeland (1): ath5k: fix return values from ath5k_tx Brandon Philips (2): it821x: Add ultra_mask quirk for Vortex86SX it821x.c: use dev->revision instead of pci_read_config_byte Brent Casavant (1): [IA64] generic_defconfig: Enable SATA_VITESSE Brian Hinz (1): ALSA: hda - Add codec ID for MCP73 HDMI Chris Adams (3): ti_usb_3410_5052: support alternate firmware ti_usb_3410_5052: add Multi-Tech modem support ti_usb_3410_5052: add Multi-Tech firmware Chris Mason (2): Btrfs: Clear the device->running_pending flag before bailing on congestion Btrfs: fix ioctl arg size (userland incompatible change!) Christian Borntraeger (1): ata: fix wrong WARN_ON_ONCE Christian Lamparter (5): p54: crypto offload fixes p54usb: fix random traffic stalls (LM87) minstrel: fix warning if lowest supported rate index is not 0 p54: fix WARN_ON at line 2247 of net/mac80211/rx.c mac80211: initialize RC data for all mesh links upon allocation Christoph Hellwig (4): [XFS] pass XFS_IGET_BULKSTAT to xfs_iget for handle operations [XFS] fix compile of xfs_btree_readahead_lblock on m68k [XFS] truncate readdir offsets to signed 32 bit values [XFS] make xfs_ino_t an unsigned long long Clemens Fruhwirth (1): ALSA: hda - Fix typos for AD1882 codecs Clemens Ladisch (1): sound: virtuoso: do not overwrite EEPROM on Xonar D2/D2X Clifford Wolf (1): netdev: gianfar: add MII ioctl handler Cyrill Gorcunov (1): net: ppp_generic - fix regressions caused by IDR conversion Daisuke Nishimura (4): memcg: fix mem_cgroup_get_reclaim_stat_from_page memcg: fix error path of mem_cgroup_move_parent memcg: fix hierarchical reclaim memcg: make oom less frequently Dan Williams (1): net_dma: acquire/release dma channels on ifup/ifdown Daniel Gagnon (1): serial: Add SupraExpress 336i PnP Voice Modem Daniel Wu (1): iwlwifi: Fix typo in iwl-commands.h for CCK rate bit range. Daniele Venzano (1): sis900: generate fake MAC address if the hardware doesn't have one Dave Airlie (3): drm/i915: setup sarea properly in master_priv drm/i915: add support for physical memory objects drm/i915: lock correct mutex around object unreference. Dave Kleikamp (1): powerpc: is_hugepage_only_range() must account for both 4kB and 64kB slices David Brownell (3): mfd: dm355 evm MMC/SD card detection drivers/usb/core/hub.c: fix CONFIG_USB_OTG=y build ACPI: fix ACPI_FADT_S4_RTC_WAKE comment David Daney (22): MIPS: Add Cavium OCTEON processor CSR definitions MIPS: Add Cavium OCTEON processor support files to arch/mips/cavium-octeon/executive and asm/octeon. MIPS: Add Cavium OCTEON processor support files to arch/mips/cavium-octeon. MIPS: For Cavium OCTEON handle hazards as per the R10000 handling. MIPS: For Cavium OCTEON set hwrena and lazily restore CP2 state. MIPS: Add Cavium OCTEON specific register definitions to mipsregs.h MIPS: Override assembler target architecture for octeon. MIPS: Add Cavium OCTEON processor constants and CPU probe. MIPS: Hook Cavium OCTEON cache init into cache.c MIPS: Hook up Cavium OCTEON in arch/mips. MIPS: Modify core io.h macros to account for the Octeon Errata Core-301. MIPS: Add Cavium OCTEON cop2/cvmseg state entries to processor.h. MIPS: Add Cavium OCTEON specific registers to ptrace.h and asm-offsets.c MIPS: Add SMP_ICACHE_FLUSH for the Cavium CPU family. MIPS: Cavium OCTEON multiplier state preservation. MIPS: Compute branch returns for Cavium OCTEON specific branch instructions. MIPS: Add Cavium OCTEON slot into proper tlb category. MIPS: Adjust the dma-common.c platform hooks. MIPS: Add defconfig for Cavium OCTEON. MIPS: Add Cavium OCTEON to arch/mips/Kconfig libata: Add another column to the ata_timing table. libata: New driver for OCTEON SOC Compact Flash interface (v7). David Graham (1): e1000e: Add process name to WARN message when detecting Mutex contention David Kilroy (1): orinoco: take the driver lock in the rx tasklet David Miller (1): sparc64: Fix cpumask related build failure David S. Miller (8): sparc: Update 32-bit defconfig. sparc: Fix sun4d_irq.c build. sparc: Most unaligned_64.c tweaks for branch tracer warnings. sparc: Fix asm/signal.h for 32-bit. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 sparc64: Fix UP build failure. ARM etherh: Fix build failure. xfrm: For 32/64 compatability wrt. xfrm_usersa_info David Teigland (2): dlm: fix seq_file usage in debugfs lock dump dlm: change rsbtbl rwlock to spinlock David Woodhouse (1): CREDITS address update for dwmw2. Dean Nelson (1): sgi-xp: eliminate false detection of no heartbeat Denis Joseph Barrow (3): hso: driver fix for big endian machines. tty: Fix double grabbing of a spinlock hso serial throttled tty kref fix. Dhananjay Phadke (9): netxen: fix endianness in firmware commands netxen: fix ipv6 offload and tx cleanup netxen: fix link speed reporting for some boards netxen: firmware init fix netxen: cleanup mac list on driver unload netxen: hold tx lock while sending firmware commands netxen: handle dma mapping failures netxen: avoid invalid iounmap netxen: include ipv6.h (fixes build failure) Dirk Hohndel (1): Prevent oops at boot with VT-d Doug Chapman (1): [IA64] dump stack on kernel unaligned warnings Eilon Greenstein (13): bnx2x: Using singlethread work queue bnx2x: Missing memory barriers bnx2x: Using system page size for SGE bnx2x: Missing mask when calculating flow control bnx2x: Flow control updated before reporting the link bnx2x: Protecting the link change indication bnx2x: VLAN tagged packets without VLAN offload bnx2x: Endianness issues bnx2x: Fixing the doorbell size bnx2x: Missing brackets bnx2x: Indirection table initialization index bnx2x: MTU Filter bnx2x: First slow path interrupt race Eric Dumazet (1): b44: GFP_DMA skb should not escape from driver Eric Piel (1): lis3lv02d: merge with leds hp disk Eric Sandeen (3): [XFS] Remove several unused typedefs. [XFS] Remove macro-to-function indirections in attr code [XFS] Remove macro-to-function indirections in the mask code Erik Ekman (1): Wireless: Fix Kconfig fact error Felix Fietkau (1): b44: fix misalignment and wasted space in rx handling Florian Fainelli (4): r6040: fix ifconfig down and freeing of tx/rx descriptors r6040: generate random ethernet MAC address when not initialized r6040: no longer mark r6040 as being experimental r6040: bump release to 0.21 Frank Blaschka (1): qeth: fix usage of netdev_ops Geert Uytterhoeven (25): fbdev: atafb - Fix line length handling fbdev: atafb - Fix 16 bpp console fbdev: c2p - Correct indentation fbdev: c2p - Cleanups fbdev: c2p - Extract common c2p core to c2p_core.h fbdev: c2p/atafb - Add support for Atari interleaved bitplanes fbdev: c2p - Rename c2p to c2p_planar m68k: Kill several external declarations in source files m68k: amiga core - Kill warn_unused_result warnings m68k: apollo core - Kill warn_unused_result warnings m68k: atari core - Kill warn_unused_result warnings m68k: hp300 core - Kill warn_unused_result warnings m68k: mac core - Kill warn_unused_result warnings m68k: mvme147 core - Kill warn_unused_result warnings m68k: sun3 core - Kill warn_unused_result warnings m68k: vme_scc - Kill warn_unused_result warnings m68k: ser_a2232 - Kill warn_unused_result warnings m68k: amiserial - Kill warn_unused_result warnings m68k: atafb - Kill warn_unused_result warnings m68k: dio - Kill warn_unused_result warnings m68k: zorro - Kill warn_unused_result warnings m68k: dmasound - Kill warn_unused_result warnings m68k: dio - Kill resource_size_t format warnings m68k: zorro - Use %pR to print resources fbdev: Kill Atari vblank cursor blinking Gerrit Renker (1): dccp ccid-3: Fix RFC reference Giuseppe Bilotta (1): ALSA: hda - Add quirk for another HP dv5 Grant Likely (1): powerpc/mpc52xx: Properly update irq_desc when set_type() is called. Hannes Reinecke (1): [SCSI] Skip deleted devices in __scsi_device_lookup_by_target() Harvey Harrison (3): RDMA/nes: Fix for NIPQUAD removal cris: introduce asm/swab.h byteorder: make swab.h include asm/swab.h like a regular header Heiko Carstens (43): [CVE-2009-0029] Move compat system call declarations to compat header file [CVE-2009-0029] Convert all system calls to return a long [CVE-2009-0029] Rename old_readdir to sys_old_readdir [CVE-2009-0029] Remove __attribute__((weak)) from sys_pipe/sys_pipe2 [CVE-2009-0029] Make sys_pselect7 static [CVE-2009-0029] Make sys_syslog a conditional system call [CVE-2009-0029] System call wrapper infrastructure [CVE-2009-0029] s390: enable system call wrappers [CVE-2009-0029] System call wrapper special cases [CVE-2009-0029] System call wrappers part 01 [CVE-2009-0029] System call wrappers part 02 [CVE-2009-0029] System call wrappers part 03 [CVE-2009-0029] System call wrappers part 04 [CVE-2009-0029] System call wrappers part 05 [CVE-2009-0029] System call wrappers part 06 [CVE-2009-0029] System call wrappers part 07 [CVE-2009-0029] System call wrappers part 08 [CVE-2009-0029] System call wrappers part 09 [CVE-2009-0029] System call wrappers part 10 [CVE-2009-0029] System call wrappers part 11 [CVE-2009-0029] System call wrappers part 12 [CVE-2009-0029] System call wrappers part 13 [CVE-2009-0029] System call wrappers part 14 [CVE-2009-0029] System call wrappers part 15 [CVE-2009-0029] System call wrappers part 16 [CVE-2009-0029] System call wrappers part 17 [CVE-2009-0029] System call wrappers part 18 [CVE-2009-0029] System call wrappers part 19 [CVE-2009-0029] System call wrappers part 20 [CVE-2009-0029] System call wrappers part 21 [CVE-2009-0029] System call wrappers part 22 [CVE-2009-0029] System call wrappers part 23 [CVE-2009-0029] System call wrappers part 24 [CVE-2009-0029] System call wrappers part 25 [CVE-2009-0029] System call wrappers part 26 [CVE-2009-0029] System call wrappers part 27 [CVE-2009-0029] System call wrappers part 28 [CVE-2009-0029] System call wrappers part 29 [CVE-2009-0029] System call wrappers part 30 [CVE-2009-0029] System call wrappers part 31 [CVE-2009-0029] System call wrappers part 32 [CVE-2009-0029] System call wrappers part 33 [CVE-2009-0029] s390 specific system call wrappers Helge Deller (1): fix early_serial_setup() regression Hendrik Brueckner (1): hvc_console: Remove tty->low_latency Henrique de Moraes Holschuh (12): ACPI: thinkpad-acpi: update documents for the new location ACPI: thinkpad-acpi: debug facility to emulate the rf switches ACPI: thinkpad-acpi: resume with radios disabled ACPI: thinkpad-acpi: preserve radio state across shutdown ACPI: thinkpad-acpi: add UWB radio support ACPI: thinkpad-acpi: use killable instead of interruptible mutexes ACPI: thinkpad-acpi: clean up hotkey_notify() ACPI: thinkpad-acpi: handle HKEY thermal and battery alarms ACPI: thinkpad-acpi: start the event hunt season ACPI: thinkpad-acpi: clean-up fan subdriver quirk ACPI: thinkpad-acpi: handle HKEY event 6030 ACPI: thinkpad-acpi: bump up version to 0.22 Herbert Xu (7): ipcomp: Remove spurious truesize increase netfilter 02/09: bridge: Fix handling of non-IP packets in FORWARD/POST_ROUTING netfilter 03/09: bridge: Disable PPPOE/VLAN processing by default ipv6: Fix fib6_dump_table walker leak gro: Check for GSO packets and packets with frag_list gro: Fix page ref count for skbs freed normally gso: Ensure that the packet is long enough ILLES, Marton (1): [SCSI] Add SUN Universal Xport to no attach blacklist Ilpo Järvinen (3): indentation & braces disagree - add braces misdn: one handmade ARRAY_SIZE converted misdn: indentation and braces disagree - add braces Inaky Perez-Gonzalez (1): wimax: fix typo in kernel-doc for debugfs_dentry in struct wimax_dev Ingo Molnar (9): Merge commit 'v2.6.29-rc1' into x86/urgent Merge commit 'v2.6.29-rc1' into core/urgent smp_call_function_single(): be slightly less stupid, fix Merge commit 'v2.6.29-rc1' into sched/urgent Revert "sched: improve preempt debugging" smp_call_function_single(): be slightly less stupid, fix #2 Revert "cpumask: use work_on_cpu in acpi-cpufreq.c for drv_read and drv_write" Revert "i386: add TRACE_IRQS_OFF for the nmi" powerpc: Change u64/s64 to a long long integer type Isaku Yamahata (1): [IA64] Update to use account_{steal,idle}_ticks Itai Levi (1): atmel_serial: fix flow control bug Ivan Kokshaysky (6): alpha: fix vmalloc breakage alpha: nautilus - fix compile failure with gcc-4.3 alpha: nautilus - fix hang on boot alpha: fix RTC on marvel alpha: .gitignore vmlinux.lds alpha: make pte_alloc_one_kernel() inline Ivo van Doorn (4): rt2x00: Fix TX short preamble detection rt2x00: Fix segementation fault Fix rt2500usb HW crypto: TKIP rt2x00: Fix rt2500usb HW crypto: WEP 128 & AES James Bottomley (1): ACPI PCI hotplug: harden against panic regression Jan Engelhardt (2): netfilter 05/09: ebtables: fix inversion in match code netfilter 08/09: xt_time: print timezone for user information Jan Kara (1): ext2: also update the inode on disk when dir is IS_DIRSYNC Jarek Poplawski (2): pkt_sched: sch_htb: Consider used jiffies in htb_do_events() pkt_sched: sch_htb: Break all htb_do_events() after 2 jiffies Jason Jin (1): powerpc: Fix the ide suspend function in uli1575 Jaswinder Singh Rajput (3): x86: fix mpparse.c build error on latest git x86: fix apic.c build error on latest git include of is preferred over Jeff Garzik (1): [libata] get-identity ioctl: Fix use of invalid memory pointer Jesper Dangaard Brouer (1): qlge: Naming interrupt vectors Jesse Barnes (5): drm/i915: don't enable vblanks on disabled pipes drm/i915: set vblank enabled flag correctly across IRQ install/uninstall drm: initial KMS config fixes drm: handle depth & bpp changes correctly drm/i915: make LVDS fixed mode a preferred mode Jim Paris (1): ftdi_sio: fix kref leak Jiri Slaby (1): 8250_pci: add support for netmos 9835 IBM devices Johannes Berg (1): rtl8187: Fix module so that rmmod/insmod does not error John Keller (1): [IA64] SN specific version of dma_get_required_mask() John Linn (1): Xilinx: SPI: updated driver for device tree John W. Linville (5): mac80211: fix "‘ret’ may be used uninitialized" warning b43: fix "‘gmode’ may be used uninitialized" warning b43legacy: fix "‘up_dev’ may be used uninitialized" warning iwl3945: fix "‘power_idx’ may be used uninitialized" warning p54: fix "‘ret’ may be used uninitialized" warning Jon Smirl (1): drivers/of: Add the of_find_i2c_device_by_node function. Jonathan McDowell (1): eeepc-laptop: enable Bluetooth ACPI details Jordan Crouse (1): hwmon: Add a driver for the ADT7475 hardware monitoring chip Jos-Vicente Gilabert (1): drivers/net/irda/irda-usb.c: fix buffer overflow JosephChan@via.com.tw (1): sata_via: Add VT8261 support Jouni Malinen (2): ath9k: Enforce module build if rfkill is a module ath9k: Revert fix to TX status reporting for retries and MCS index Julia Lawall (8): net/tipc/bcast.h: use ARRAY_SIZE net/bridge/netfilter: move a dereference below a NULL test drivers/isdn/hardware/mISDN: move a dereference below a NULL test drivers/net/hamradio/6pack.c: move a dereference below a NULL test drivers/net/wireless/libertas: move a dereference below a NULL test MIPS: Alchemy: Change strict_strtol to strict_strtoul drivers/isdn/hardware/mISDN: move a dereference below a NULL test netfilter 07/09: simplify nf_conntrack_alloc() error handling Julian Calaby (2): sparc: Kill exports of prom internal functions sparc: Eliminate PROMLIB_INTERNAL as it does nothing Karen Xie (1): [SCSI] iscsi_tcp: make padbuf non-static Kars de Jong (2): m68k: Add vmlinux.lds to .gitignore m68k: zorro - Add devlist.h and gen-devlist to .gitignore Karsten Keil (3): Make parameter debug writable Fix small typo Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for_2.6.29 Kashyap, Desai (3): [SCSI] mpt fusion: Update MPI Headers to version 01.05.19 [SCSI] mpt fusion: Add separate msi enable disable for FC,SPI,SAS [SCSI] mpt fusion: Add Firmware debug support Kay Sievers (1): ACPI: thinkpad-acpi: struct device - replace bus_id with dev_name(), dev_set_name() Krzysztof HaÅ‚asa (2): WAN: Fix NAPI interface in IXP4xx HSS driver. net: Fix a comment in include/linux/netdevice.h. Kumar Gala (2): powerpc/85xx: Fix PCIe error interrupts powerpc/e500mc: Doorbells need to be taken w/exceptions disabled Kyle McMartin (1): x86, mtrr: fix types used in userspace exported header Lachlan McIlroy (2): [XFS] Update maintainers Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-linus Larry Finger (2): p54usb: Fix to prevent SKB memory allocation errors with 4K page size rtl8180: Fix to add STA mode Len Brown (5): dell-laptop: move to drivers/platform/x86/ from drivers/misc/ ACPI: rename main.c to sleep.c Merge branches 'bugzilla-11884' and 'bugzilla-8544' into release Merge branch 'thinkpad-acpi' into release Merge branch 'misc' into release Leonardo Potenza (1): net: fix section mismatch warnings in dccp/ccids/lib/tfrc.c Li Zefan (6): sched: partly revert "sched debug: remove NULL checking in print_cfs_rt_rq()" cgroups: clean up Kconfig cgroups: consolidate cgroup documents idr: fix wrong kernel-doc memcg: fix section mismatch memcg: fix a race when setting memory.swappiness Lin Ming (1): sched: sched_slice() fixlet Linus Torvalds (38): Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge branch 'for_2.6.29' of git://git.kernel.org/pub/scm/linux/kernel/git/kkeil/ISDN-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'for-next' of git://git.o-hand.com/linux-mfd Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'x86-pat-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'syscalls' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Revert "x86 PAT: remove CPA WARN_ON for zero pte" Merge branch 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Revert "PCI PM: Register power state of devices during initialization" Merge branch 'drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Linux 2.6.29-rc2 Lukasz Wojnilowicz (1): ALSA: hda - Add quirks for Acer Aspire 5930G and 6930G Luke Yelavich (1): ALSA: hda - Add automatic model setting for Samsung Q45 Magnus Damm (1): ax88796: start_xmit fix using net_device_ops Manuel Lauss (14): MIPS: Alchemy: Move development board code to common subdirectory MIPS: Alchemy: devboards: consolidate files MIPS: Alchemy: move commandline mangling out of common code MIPS: Alchemy: update core interrupt code. MIPS: Alchemy: pb1200: update CPLD cascade irq handler. MIPS: Print irq handler description MIPS: Alchemy: remove get/set_au1x00_lcd_clock(). MIPS: Alchemy: remove cpu_table. MIPS: make cp0 counter clocksource/event usable as fallback. MIPS: Alchemy: RTC counter clocksource / clockevent support. MIPS: Alchemy: move calc_clock function. MIPS: Alchemy: Fix up PM code on Au1550/Au1200 MIPS: Alchemy: dbdma suspend/resume support. MIPS: Alchemy: new userspace suspend interface for development boards. Marcus Meissner (1): Documentation/accounting/getdelays.c: fix endless loop Mark Brown (1): [WATCHDOG] wm8350: Fix section annotations Martin Bachem (1): BUGFIX: used NULL pointer at ioctl(sk,IMGETDEVINFO,&devinfo) when devinfo.id not registered Martyn Welch (2): [WATCHDOG] Basic support for GE Fanuc's FPGA based watchdog timer [WATCHDOG] Enable watchdog timer on GE Fanuc's SBC610 Masami Hiramatsu (1): kprobes: check CONFIG_FREEZER instead of CONFIG_PM Matthew Ranostay (1): ALSA: hda: stac92hd8xxx amp mixers Matthias Fuchs (1): serial: Add 16850 uart type support to OF uart driver Matti Halme (1): rtc: rtc-twl4030 don't mask alarm interrupts on shutdown Mauro Carvalho Chehab (4): ALSA: hda - Add a new function to seek for a codec ID ALSA: patch_sigmatel: Add missing Gateway entries and autodetection ALSA: hda - More fixes on Gateway entries edac: add MAINTAINERS entry for i5400 EDAC driver Michael Ellerman (1): powerpc: Enable PS3 options and QPACE in ppc64_defconfig Michael Hennerich (1): video/framebuffer: fix bug: jpegview cannot work on framebuffer device other than 16BPP Michael Neuling (1): powerpc: Get the number of SLBs from "slb-size" property Michal Sojka (1): sata_fsl: Return non-zero on error in probe() Michiel (1): p54usb: Add USB ID for Thomson Speedtouch 121g Mike Ditto (1): powerpc/fs_enet: Add missing irq free in error path. Milton Miller (6): powerpc: Make dummy section a valid note header powerpc/kexec: Check crash_base for relocatable kernel hvc_console: Change an mb() to smp_mb() and add some comments hvc_console: Call free_irq() only if request_irq() was successful hvc_console: Do not set low_latency when using interrupts hvc_console: Use kzalloc() instead of kmalloc() + memset() Mischa Jonker (1): When a break signal is detected, the next character should be ignored. Nathan Lynch (1): powerpc/cacheinfo: Rename cache_dir per-cpu variable Nick Piggin (3): [XFS] remove old vmap cache [XFS] use scalable vmap API mm: fix assertion Nicolas Pitre (1): [ARM] 5364/1: allow flush_ioremap_region() to be used from modules Oliver Hartkopp (1): can: fix slowpath issue in hrtimer callback function Patrick McHardy (3): netfilter 01/09: remove "happy cracking" message netfilter 04/09: x_tables: fix match/target revision lookup netfilter 06/09: nf_conntrack: fix ICMP/ICMPv6 timeout sysctls on big-endian Paul Bolle (2): i4l: do not print a warning when shutting down an i4l ppp interface i4l: minor cleanups Paul E. McKenney (1): rcu: fix bug in rcutorture system-shutdown code Paul Fulghum (1): synclink_gt: enable RI interrupt Pavel Machek (4): MAINTAINERS: add entry for freezer nbd: do not allow two clients at the same time lis3: fix documentation to fit into 80 columns hp_accel: do not call ACPI from invalid context Pavel Roskin (2): orinoco_cs: add ID for ARtem Onair Comcard 11 mac80211: allow mode change if IBSS is not allowed Peter Ujfalusi (4): ASoC: Merge the soc_value_enum to soc_enum struct ASoC: TWL4030: Change the soc_value_enum back to soc_enum ASoC: TWL4030: Module unloading fix ASoC: Fix the power update function for snd_soc_dapm_value_mux Peter W Morreale (1): Update of Documentation: vm.txt and proc.txt Peter Zijlstra (5): lockdep, mm: fix might_fault() annotation sched: fix bandwidth validation for UID grouping sched: SCHED_IDLE weight change sched: SCHED_OTHER vs SCHED_IDLE isolation sched: fix update_min_vruntime Phil Sutter (9): korina: fix usage of driver_data korina: reset resource buffer size to 1536 korina: disable napi on close and restart korina: rework korina_rx() for use with napi korina: do schedule napi after testing for it korina: do tx at the right position korina: fix handling tx_chain_tail korina: do not stop queue here korina: do not use IRQF_SHARED with IRQF_DISABLED Qinghuang Feng (1): btrfs & squashfs: Move btrfs and squashfsto's magic number to Rafael J. Wysocki (1): PM: Fix freezer compilation if PM_SLEEP is unset Ralf Baechle (1): MIPS: Only write c0_framemask on CPUs which have this register. Randy Dunlap (3): IB/iser: Add dependency on INFINIBAND_ADDR_TRANS jbd: fix missing kernel-doc resources: fix parameter name and kernel-doc Richard Kennedy (1): netfilter 09/09: remove padding from struct xt_match on 64bit builds Roland Dreier (5): mlx4_core: Fix warning from min() IB/mlx4: Don't register IB device for adapters with no IB ports cxgb3: Keep LRO off if disabled when interface is down Merge branches 'ehca', 'ipoib', 'iser', 'mlx4' and 'nes' into for-next 9p: disallow RDMA if RDMA CM isn't available Ron Mercer (5): qlge: Get rid of volatile usage for shadow register. qlge: Get rid of split addresses in hardware control blocks. qlge: Remove support for device ID 8000. qlge: Fix schedule while atomic issue. qlge: Remove dynamic alloc of rx ring control blocks. Russell King (3): [ARM] w90x900: fix build errors and warnings Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 TWL4030: fix clk API usage Rusty Russell (1): cpumask: fix CONFIG_NUMA=y sched.c Sam Ravnborg (4): sparc64: fix warnings in psycho_common after ull conversion sparc: Create a new file lib/ksyms.c and add export of all symbols defined in assembler in lib/ to this file. sparc: move EXPORT_SYMBOL to the symbols definition sparc64: move EXPORT_SYMBOL to the symbols definition Samuel Ortiz (2): mfd: Fix twl4030-core build iwlwifi: Fix get_cmd_string() for REPLY_3945_RX Sascha Hauer (3): [ARM] i.MX: remove LCDC controller register definitions from imx-regs.h [ARM] i.MX: fix breakage from commit 278892736e99330195c8ae5861bcd9d791bbf19e [ARM] i.MX add missing include Sean MacLennan (1): [WATCHDOG] Pika Warp appliance watchdog timer Senthil Balasubramanian (1): ath9k: Fix incorrect sequence numbering for unaggregated QoS Frame. Signed-off-by: Peter Stokes (1): ALSA: USB quirk for Logitech Quickcam Pro 9000 name Stanislaw Gruszka (1): atmel_spi: allow transfer when max_speed_hz = 0 Stefan Lippers-Hollmann (1): rt2x00: add USB ID for the Linksys WUSB200. Steffen Klassert (1): 3c59x: Use device_set_wakeup_enable Stephen Hemminger (2): netdev: add missing set_mac_address hook netdev: missing validate_address hooks Stephen Rothwell (17): IB/ehca: spin_lock_irqsave() takes an unsigned long powerpc: Cleanup from l64 to ll64 change: arch code powerpc: Cleanup from l64 to ll64 change: drivers/char powerpc: Cleanup from l64 to ll64 change: drivers/net powerpc: Cleanup from l64 to ll64 change drivers/scsi powerpc/ps3: set_dabr() takes an unsigned long powerpc/ps3: Use dma_addr_t down through the stack powerpc/ps3: The lv1_ routines have u64 parameters powerpc/ps3: clear_bit()/set_bit() operate on unsigned longs powerpc/ps3: ps3_repository_read_mm_info() takes u64 * arguments powerpc/ps3: Printing fixups for l64 to ll64 conversion arch/powerpc powerpc/ps3: Printing fixups for l64 to ll64 conversion drivers/block powerpc/ps3: Printing fixups for l64 to ll64 conversion drivers/char powerpc/ps3: Printing fixups for l64 to ll64 conversion sound/ppc powerpc/ps3: Printing fixups for l64 to ll64 conversion drivers/ps3 powerpc/ps3: Printing fixups for l64 to ll64 conversion drivers/scsi powerpc/ps3: printing fixups for l64 to ll64 conversion drivers/video Steve Brown (1): ath5k: Correct usage of AR5K_CFG_ADHOC Steve Glendinning (2): smsc911x: fix smsc911x_reg_read compiler warning smsc911x: register irq with device name, not driver name Steven Noonan (1): kernel/sched.c: add missing forward declaration for 'double_rq_lock' Sujith (1): ath9k: Fix chainmask handling bug Takashi Iwai (23): ALSA: hda - Add quirk for HP 2230s ALSA: caiaq - Fix Oops with MIDI ALSA: hda - Add quirk for Dell Inspiron Mini9 ALSA: caiaq - Version 1.3.10 ALSA: hda - Use own workqueue Merge branch 'topic/asoc' into for-linus Merge branch 'topic/hda' into for-linus Merge branch 'topic/usb-caiaq' into for-linus ALSA: hda - Fix a typo ALSA: hda - Add support of NVidia MCP78 HDMI ALSA: hda - Use queue_delayed_work() Merge branch 'topic/hda-gateway' into topic/hda ALSA: hda - Update model descriptions in patch_sigmatel.c ALSA: hda - Fix silent headphone output on Panasonic CF-74 ALSA: hda - Don't reset HP pinctl in patch_sigmatel.c ALSA: hda - Fix stac92hd83xxx_amp_nids[] ALSA: hda - Fix missing initialization of NID 0x0e for STAC925x ALSA: hda - Fix HP dv5 mic input Merge branch 'topic/hda' into for-linus Merge branch 'topic/usb-fix' into for-linus Merge branch 'topic/virtuoso-fix' into for-linus ALSA: hda - Fix invalid amp value for STAC925x Merge branch 'topic/hda' into for-linus Tejun Heo (1): pata_atiixp: update port enabledness test handling Timur Tabi (2): powerpc/qe: add Ethernet UPSMR definitions to QE library ucc_geth: use correct UCCE macros Tony Luck (1): [IA64] Turn on CONFIG_HAVE_UNSTABLE_CLOCK Trent Piepho (4): powerpc/fsl-pci: Better ATMU setup for 85xx/86xx powerpc/fsl-pci: Set relaxed ordering on prefetchable ranges powerpc/fsl-booke: Don't hard-code size of struct tlbcam powerpc/fsl-booke: Remove num_tlbcam_entries Willy Tarreau (1): tcp: splice as many packets as possible at once Wolfram Sang (1): powerpc/mpc52xx: remove dead code from GPIO driver Wu Fengguang (2): ALSA: hda - create hda_codec.control_mutex for kcontrol->private_value ALSA: hda - add support for Intel DX58SO board Yossi Etigin (2): IPoIB: Fix loss of connectivity after bonding failover on both sides IPoIB: Do not join broadcast group if interface is brought down Yuri Tikhonov (1): powerpc/xsysace: add compatible string for non-ipcore instance Zhang Rui (1): thermal fixup for broken BIOS which has invalid trip points. roel kluin (1): powerpc/mpc5121: fix NULL test in mpc5121_clk_get utility function. venkatesh.pallipadi@intel.com (5): x86 PAT: remove PFNMAP type on track_pfn_vma_new() error x86 PAT: consolidate old memtype new memtype check into a function x86 PAT: change track_pfn_vma_new to take pgprot_t pointer param x86 PAT: return compatible mapping to remap_pfn_range callers x86 PAT: remove CPA WARN_ON for zero pte ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:31 2009 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, J_CHICKENPOX_21,J_CHICKENPOX_64 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQVHN183647 for ; Thu, 21 May 2009 15:26:31 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQVH0183619; Thu, 21 May 2009 15:26:31 -0500 Date: Thu, 21 May 2009 15:26:31 -0500 Message-Id: <200905212026.n4LKQVH0183619@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.28-rc7, created. v2.6.28-rc7 X-Git-Refname: refs/tags/v2.6.28-rc7 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 1a0bff987b27da5181f112bcc60f34d6fbb7e67e 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 annotated tag, v2.6.28-rc7 has been created at 1a0bff987b27da5181f112bcc60f34d6fbb7e67e (tag) tagging 061e41fdb5047b1fb161e89664057835935ca1d2 (commit) replaces v2.6.28-rc6 tagged by Linus Torvalds on Mon Dec 1 19:59:44 2008 -0800 - Log ----------------------------------------------------------------- Linux 2.6.28-rc7 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkk0srUACgkQF3YsRnbiHLtebgCeOQft4v1NM9rlzE/5zxVMQenl 1PQAn1mRvT5FyM4R3nqBJek8FKesAqQq =jtOh -----END PGP SIGNATURE----- Adhemerval Zanella (1): powerpc: Fix IRQ assignment for some PCIe devices Al Viro (31): meminit section warnings false __cpuinit positives on alpha powerpc set_huge_psize() false positive sparc32 cpuinit flase positives sparc64 trivial section misannotations istallion section warnings fix talitos icside section warnings W1_MASTER_DS1WM should depend on HAVE_CLK advansys fix on ISA-less configs of_platform_driver noise on sparce gdth section fixes rackmeter section fixes ixgbe section fixes section misannotation in ibmtr_cs m32r: section noise in head.S fix the section noise in sparc head.S section errors in smc911x/smc91x rapidio section noise uninorth-agp section mess cpuinit fixes in kernel/* tricky one: hisax sections alpha: pcibios_resource_to_bus() is callable from normal code pci_setup() is init, not devinit enable_IR_x2apic() needs to be __init kvm_setup_secondary_clock() is cpuinit xen_setup_vcpu_info_placement() is not init on x86 xen_play_dead() is __cpuinit get xenbus_driver ->probe() "recognized" by modpost sn_pci_controller_fixup() should be __init hotplug_memory_notifier section annotation Alan Stern (1): USB: storage: unusual_devs entry for Mio C520-GPS Alessandro Guido (2): sony-laptop: brightness regression fix sony-laptop: printk tweak Alexey Starikovskiy (2): ACPI: EC: count interrupts only if called from interrupt handler. ACPI: battery: Convert discharge energy rate to current properly Amit Kucheria (1): ARM: OMAP: Typo fix for clock_allow_idle Andreas Herrmann (2): [CPUFREQ] powernow-k8: ignore out-of-range PstateStatus value x86: fixup config space size of CPU functions for AMD family 11h Andres Salomon (1): Input: psmouse - fix incorrect validate_byte check in OLPC protocol Andrew Morton (1): drivers/gpu/drm/i915/i915_irq.c: fix warning Anton Vorontsov (2): USB: fsl_qe_udc: Report disconnect before unbinding USB: fsl_usb2_udc: Report disconnect before unbinding Arjan van de Ven (4): Input: replace spin_lock_bh with spin_lock_irqsave in ml_ff_playback toshiba_acpi: close race in toshiba_acpi driver input: replace spin_lock_bh with spin_lock_irqsave in ml_ff_playback taint: add missing comment Arnd Bergmann (3): powerpc/cell/axon-msi: Retry on missing interrupt powerpc/mpic: Don't reset affinity for secondary MPIC on boot powerpc/cell: Fix GDB watchpoints, again Ben Dooks (2): spi: fix spi_s3c24xx_gpio device handle lookup spi: fix spi_s3c24xx_gpio num_chipselect Benjamin Herrenschmidt (2): powerpc/44x: Fix 460EX/460GT machine check handling radeonfb: fix problem with color expansion & alignment Bob Moore (1): ACPICA: Allow _WAK method to return an Integer Christian Borntraeger (2): [S390] fix/cleanup sched_clock [S390] pgtable.h: Fix oops in unmap_vmas for KVM processes Christoph Hellwig (1): remove __ARCH_WANT_COMPAT_SYS_PTRACE Coly Li (2): ocfs2: comments typo fix ocfs2: fix return value set in init_dlmfs_fs() Daniel Gimpelevich (1): Input: cm109 - add keymap for ATCom AU-100 phone Dave Hansen (1): powerpc: Fix boot freeze on machine with empty memory node David Brownell (1): i2c/isp1301_omap: Build fixes David Daney (1): MIPS: Make BUG() __noreturn. David Howells (1): frv: fix mmap2 error handling David Teigland (2): ocfs2: initialize stack_user lvbptr ocfs2: fix wake_up in unlock_ast Davide Libenzi (1): epoll: introduce resource usage limits Devin Heitmueller (4): V4L/DVB (9631): Make s2api work for ATSC support V4L/DVB (9632): make em28xx aux audio input work V4L/DVB (9634): Make sure the i2c gate is open before powering down tuner V4L/DVB (9639): Make dib0700 remote control support work with firmware v1.20 Dmitri Vorobiev (1): Input: fix the example of an input device driver Dmitry Baryshkov (1): fbdev: fix FB console blanking Dmitry Torokhov (1): Input: i8042 - add Compal Hel80 laptop to nomux blacklist Douglas Schilling Landgraf (6): V4L/DVB (9601): ttusb_dec: Add NULL pointer validation V4L/DVB (9602): dvb-ttusb-budget: Add NULL pointer validation V4L/DVB (9603): dvb-ttusb-budget: Add validation for ttusb_alloc_iso_urbs V4L/DVB (9604): ttusb_dec: fix memory leak V4L/DVB (9605): usb-urb: fix memory leak V4L/DVB (9743): em28xx: fix oops audio Eric Anholt (3): drm/i915: Remove IMR masking during interrupt handler, and restart it if needed. drm/i915: Avoid BUG_ONs on VT switch with a wedged chipset. drm/i915: Fix copy'n'pasteo that broke VT switch if flushing was non-empty. Eric Dumazet (1): oprofile: fix an overflow in ppro code Eric Miao (5): pxafb: introduce LCD_TYPE_MASK and use it. pxafb: only initialize the smart panel thread when dealing with a smartpanel [ARM] pxa: fix I2C controller device being registered twice on Akita [ARM] pxa: fix incorrect PCMCIA PSKTSEL pin configuration for spitz [ARM] pxa/corgi: update default config to exclude tosa from being built FUJITA Tomonori (1): DMA-API.txt: fix description of pci_map_sg/dma_map_sg scatterlists handling Geert Uytterhoeven (1): parisc: __kernel_time_t is always long Grant Erickson (1): powerpc/40x: Limit allocable DRAM during early mapping Grant Likely (4): powerpc/mpc5200: fix bestcomm Kconfig dependencies powerpc/virtex: fix various format/casting printk mismatches powerpc/52xx: update defconfigs powerpc/virtex: Update defconfigs Greg Kroah-Hartman (2): Revert "USB: improve ehci_watchdog's side effect in CPU power management" USB: serial: add more Onda device ids to option driver Guennadi Liakhovetski (1): [ARM] pxa/pcm990: use negative number for an invalid GPIO in camera data Hannes Eder (1): sound/sound_core: Fix sparse warnings Hans Verkuil (1): V4L/DVB (9748): em28xx: fix compile warning Harvey Harrison (1): V4L/DVB (9635): v4l: s2255drv fix firmware test on big-endian Heiko Carstens (1): [S390] Fix alignment of initial kernel stack. Helge Deller (1): parisc: fix kernel crash when unwinding a userspace process Henrik Rydberg (1): hwmon: applesmc: make applesmc load automatically on startup Henrique de Moraes Holschuh (1): ACPI: thinkpad-acpi: fix fan sleep/resume path Herton Ronaldo Krzesinski (1): Input: i8042 - add Dell XPS M1530 to nomux list Ian Campbell (1): xen: pin correct PGD on suspend Igor M. Liplianin (1): V4L/DVB (9608): Fix section mismatch warning for dm1105 during make Ingo Molnar (6): irq: fix typo Merge commit 'v2.6.28-rc6' into x86/urgent Merge commit 'v2.6.28-rc6' into irq/urgent Merge branch 'oprofile-for-tip' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into x86/urgent sched, cpusets: fix warning in kernel/cpuset.c sched: prevent divide by zero error in cpu_avg_load_per_task, update Jack Morgenstein (2): mlx4_core: Save/restore default port IB capability mask IB/mlx4: Fix MTT leakage in resize CQ Jan Kara (1): udf: Fix BUG_ON() in destroy_inode() Jan Nikitenko (1): spi: au1550_spi full duplex dma fix Jan Scholz (1): HID: Apple ALU wireless keyboards are bluetooth devices Jarkko Lavinen (2): i82875p_edac: fix overflow device resource setup i82875p_edac: fix module remove Jaya Kumar (2): [ARM] 5330/1: mach-pxa: Fixup reset for systems using reboot=cold or other strings [ARM] 5335/1: pxa25x_udc: Fix is_vbus_present to return 1 or 0 Jean Delvare (2): i2c: Remove i2c clients in reverse order i2c-parport: Fix misplaced parport_release call Jean-Francois Moine (3): V4L/DVB (9689): gspca: Memory leak when disconnect while streaming. V4L/DVB (9690): gspca: Lock the subdrivers via module_get/put. V4L/DVB (9691): gspca: Move the video device to a separate area. Jeff Layton (1): [CIFS] fix regression in cifs_write_begin/cifs_write_end Jeremy Kerr (1): powerpc/spufs: Fix spinning in spufs_ps_fault on signal Jiri Kosina (3): HID: fix blacklist entries for greenasia/pantherlord HID: unignore mouse on unibody macbooks HID: add USB ID for another dual gameron adapter Jiri Pirko (1): Input: atkbd - cancel delayed work before freeing its structure Jiri Slaby (1): HID: remove setup mutex, fix possible deadlock Joachim Fenkes (1): IB/ehca: Change misleading error message on memory hotplug Joerg Roedel (1): x86: always define DECLARE_PCI_UNMAP* macros Johannes Weiner (1): vmscan: protect zone rotation stats by lru lock Jose Alberto Reguero (1): V4L/DVB (9664): af9015: don't reconnect device in USB-bus Julia Lawall (1): arch/x86/kernel/pci-calgary_64.c: change simple_strtol to simple_strtoul Julien Boibessot (1): spi: fix spi_imx probe oopsing KAMEZAWA Hiroyuki (1): memcg: memory hotplug fix for notifier callback Kay Sievers (1): parisc: struct device - replace bus_id with dev_name(), dev_set_name() Keith Packard (5): drm/i915: Manage PIPESTAT to control vblank interrupts instead of IMR. drm/i915: Subtract total pinned bytes from available aperture size drm/i915: Always read pipestat in irq_handler drm/i915: execbuffer pins objects, no need to ensure they're still in the GTT drm: move drm vblank initialization/cleanup to driver load/unload Kevin Hao (1): Add kref to fake tty used by USB console Lai Jiangshan (1): ftrace: prevent recursion Len Brown (2): Revert "ACPI: don't enable control method power button as wakeup device when Fixed Power button is used" ACPI: delete OSI(Linux) DMI dmesg spam Li Zefan (1): lockdep: consistent alignement for lockdep info Liming Wang (1): function tracing: fix wrong position computing of stack_trace Lin Ming (1): ACPICA: disable _BIF warning Linus Torvalds (31): Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge branch 'linux-next' of git://git.infradead.org/~dedekind/ubi-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Revert "of_platform_driver noise on sparce" Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Linux 2.6.28-rc7 Manfred Spraul (1): lib/idr.c: fix rcu related race with idr_find Marek Vasut (1): [ARM] pxa/palmtx: misc fixes to use generic GPIO API Mark Fasheh (2): ocfs2: Small documentation update ocfs2: fix regression in ocfs2_read_blocks_sync() Mark Nelson (1): genirq: __irq_set_trigger: change pr_warning to pr_debug Markus Metzger (4): x86, bts: exclude ds.c from build when disabled x86, bts: turn macro into static inline function x86, pebs: fix PEBS record size configuration x86, bts: fix wrmsr and spinlock over kmalloc Martin Schwidefsky (2): [S390] fix system call parameter functions. [S390] Update default configuration. Martyn Welch (1): powerpc: Use generic PHY driver for Marvell 88E1111 PHY on GE Fanuc SBC610 Matthew Garrett (1): Input: atkbd - add keymap quirk for Inventec Symphony systems Matthew Ranostay (2): ALSA: hda: STAC_DELL_M6 EAPD ALSA: hda: Add STAC_DELL_M4_3 quirk Mauro Carvalho Chehab (7): V4L/DVB (9627): em28xx: Avoid i2c register error for boards without eeprom V4L/DVB (9645): em28xx: Avoid memory leaks if registration fails V4L/DVB (9646): em28xx: avoid allocating/dealocating memory on every control urb V4L/DVB (9647): em28xx: void having two concurrent control URB's V4L/DVB (9668): em28xx: fix a race condition with hald V4L/DVB (9742): em28xx-alsa: implement another locking schema em28xx: remove backward compat macro added on a previous fix Michael Barkowski (1): powerpc/mpc832x_rdb: fix swapped ethernet ids Michael Krufky (1): V4L/DVB (9732): sms1xxx: use new firmware for Hauppauge WinTV MiniStick Milton Miller (1): powerpc: Fix build for 32-bit SMP configs Nick Piggin (1): mm: vmalloc fix lazy unmapping cache aliasing Paul Mackerras (4): Merge branch 'merge' of git://git.secretlab.ca/git/linux-2.6-mpc52xx into merge Merge branch 'merge' of ssh://master.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx into merge Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jk/spufs into merge powerpc: Fix system calls on Cell entered with XER.SO=1 Pavel Machek (1): ACPI: scheduling in atomic via acpi_evaluate_integer () Pekka Paalanen (2): x86, mmiotrace: fix buffer overrun detection tracing, doc: update mmiotrace documentation Peng Li (1): drm/i915: Save/restore HWS_PGA on suspend/resume Phil Sutter (2): [libata] pata_rb532_cf: fix and rename register definitions [libata] pata_rb532_cf: fix signature of the xfer function Ping Cheng (1): Input: wacom - add support for new USB Tablet PCs Rafael J. Wysocki (1): ACPI suspend: Blacklist boxes that require us to set SCI_EN directly on resume Rakib Mullick (2): x86: fix __cpuinit/__init tangle in init_thread_xstate() x86: fixing __cpuinit/__init tangle, xsave_cntxt_init() Randy Dunlap (3): irq.h: fix missing/extra kernel-doc kernel-doc: handle varargs cleanly ntfs: don't fool kernel-doc Robert Jarzmik (2): [ARM] pxa/MioA701: fix memory corruption. [ARM] pxa/MioA701: bluetooth resume fix Robert P. J. Day (1): MN10300: Tighten up the code using case ranges Robin Getz (1): [CPUFREQ] Documentation: Add Blackfin to list of supported processors Roland Dreier (1): Merge branches 'ehca' and 'mlx4' into for-linus Russell King (4): Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Merge branch 'omap-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Allow architectures to override copy_user_highpage() Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Shane Huang (1): USB: fix SB600 USB subsystem hang bug Stefan Richter (4): ieee1394: sbp2: another iPod mini quirk entry firewire: fw-sbp2: another iPod mini quirk entry ieee1394: fix list corruption (reported at module removal) ieee1394: sbp2: fix race condition in state change Stefan Roscher (1): IB/ehca: Fix problem with generated flush work completions Stefano Babic (1): spi: mpc52xx_psc_spi chipselect bugfix Steven Rostedt (2): x86: use limited register constraint for setnz sched: prevent divide by zero error in cpu_avg_load_per_task Takashi Iwai (9): ALSA: hda - Add a quirk for Dell Studio 15 Merge branches 'topic/fix/hda' and 'topic/fix/sound-core' into for-linus ALSA: hda - Fix caching of SPDIF status bits ALSA: hda - Fix AFG power management on IDT 92HD* codecs ALSA: hda - No 'Headphone as Line-out' swich without line-outs ALSA: hda - mark Dell studio 1535 quirk ALSA: hda - Check model for Dell 92HD73xx laptops Merge branch 'topic/fix/hda' into for-linus parport_serial: fix array overflow Tejun Heo (2): ata_piix: add borked Tecra M4 to broken suspend list libata: blacklist Seagate drives which time out FLUSH_CACHE when used with NCQ Tero Kristo (1): ARM: OMAP: Fixes for suspend / resume GPIO wake-up handling Thomas Gleixner (4): genirq: keep affinities set from userspace across free/request_irq() genirq: fix the affinity setting in setup_irq x86: apic honour irq affinity which was set in early boot x86: revert irq number limitation Tobias Kunze Briseño (1): USB: usb-storage: unusual_devs entry for Nikon D2H Tony Lindgren (1): ARM: OMAP: Remove broken LCD driver for SX1 Trent Piepho (1): powerpc/85xx: L2 cache size wrong in 8572DS dts Vitaliy Gusev (1): UBI: Don't exit from ubi_thread until kthread_should_stop() is true Vojtech Pavlik (1): Input: elo - fix format string in elo driver Will Newton (1): drivers/char/tty_io.c: Avoid panic when no console is configured. Wolfgang Ocker (1): spi: avoid spidev crash when device is removed Yuri Tikhonov (1): xsysace: Fix driver to use resource_size_t instead of unsigned long Zoltan Sogor (1): UBI: fix EBADMSG handling frans (1): Trivial Documentation/filesystems/ramfs-rootfs-initramfs.txt fix roel kluin (1): spi documentation: use __initdata on struct ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:33 2009 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, J_CHICKENPOX_35 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQXEH183713 for ; Thu, 21 May 2009 15:26:33 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQW8u183685; Thu, 21 May 2009 15:26:32 -0500 Date: Thu, 21 May 2009 15:26:32 -0500 Message-Id: <200905212026.n4LKQW8u183685@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.28-rc9, created. v2.6.28-rc9 X-Git-Refname: refs/tags/v2.6.28-rc9 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 7d4b1bcc5e7411fc9e63f610c16e5de8fe6dfde8 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 annotated tag, v2.6.28-rc9 has been created at 7d4b1bcc5e7411fc9e63f610c16e5de8fe6dfde8 (tag) tagging 929096fe9ff1f4b3645cf3919527ab47e8d5e17c (commit) replaces v2.6.28-rc8 tagged by Linus Torvalds on Thu Dec 18 17:20:31 2008 -0800 - Log ----------------------------------------------------------------- Linux 2.6.28-rc9 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAklK9uMACgkQF3YsRnbiHLto7gCdGYELkT6rjEXcVPqCjNgBMeMf dF8Ani+Xgbq0untQW0wafgtEaIKuRbBz =TspS -----END PGP SIGNATURE----- Alan Cox (1): USB: tty: SprogII DCC controller identifiers Alan D. Brunelle (1): Commands needing to be retried require a complete re-initialization. Alan Stern (2): usb-storage: update unusual_devs entry for Nokia 5310 USB: skip Set-Interface(0) if already in altsetting 0 Alexander Beregalov (1): IA64: HP_SIMETH needs to depend upon NET Anders Blomdell (1): avr32: Enable pullup on USART TX lines Andrew Ewert (1): USB: ftdi_sio: Adding Ewert Energy System's CANdapter PID Arnd Bergmann (1): powerpc/cell/axon-msi: Fix MSI after kexec Baruch Siach (1): enc28j60: use netif_rx_ni() to deliver RX packets Ben Dooks (1): i2c-s3c2410: fix check for being in suspend. Brian King (1): powerpc: Check for valid hugepage size in hugetlb_get_unmapped_area CSÉCSY LĂ¡szlĂ³ (1): USB: storage: unusual_devs.h: Nokia 3109c addition Catalin Marinas (1): slob: do not pass the SLAB flags as GFP in kmem_cache_create() Dan Williams (3): ioat: wait for self-test completion dmaengine: protect 'id' from concurrent registrations async_xor: dma_map destination DMA_BIDIRECTIONAL Dave Hansen (1): powerpc: Fix bootmem reservation on uninitialized node Dave Liu (1): powerpc/fsl-booke: Fix the miss interrupt restore David Brownell (1): USB: gadget: fix rndis working at high speed David Daney (3): MIPS: Use EI/DI for MIPS R2. MIPS: Add missing calls to plat_unmap_dma_mem. MIPS: IP32: Update defconfig David S. Miller (2): sungem: Make PCS PHY support partially work again. sparc: We need to implement arch_ptrace_stop(). Dmitri Vorobiev (1): MIPS: Kconfig: Fix the arch-specific header path Dmitry Baryshkov (1): STAGING: Move staging drivers back to staging-specific menu Doug Leith (1): tcp: tcp_vegas cong avoid fix Frederik Deweerdt (1): ACPI toshiba: only register rfkill if bt is enabled Greg Kroah-Hartman (2): USB: fix problem with usbtmc driver not loading properly xilinx_hwicap: remove improper wording in license statement Guillaume Knispel (1): powerpc: Fix corruption error in rh_alloc_fixed() Haavard Skinnemoen (2): ATSTK1006: Fix boot from NAND flash avr32: favr-32 build fix Hans-Christian Egtvedt (1): avr32: remove .note.gnu.build-id section when making vmlinux.bin Harvey Harrison (2): i2c-pmcmsp: Fix endianness misannotation i2c-highlander: Trivial endian casting fixes Hermann Lauer (1): sungem: improve ethtool output with internal pcs and serdes Ingo Brueckl (2): unicode table for cp437 console ASCII glyph 1:1 mapping Jan Sembera (1): ipv6: silence log messages for locally generated multicast Jarek Poplawski (1): drivers/net: starfire: Fix napi ->poll() weight handling Jeff Kirsher (1): e1000e: fix double release of mutex Jeff Layton (1): cifs: fix buffer overrun in parse_DFS_referrals Jesper Dangaard Brouer (1): SCHED: netem: Correct documentation comment in code. Joel Becker (1): ocfs2: Add JBD2 compat feature bit. Johann Felix Soden (1): driver core: fix using 'ret' variable in unregister_dynamic_debug_module John McCutchan (1): Maintainer email fixes for inotify Josh Boyer (1): powerpc/40x: Add proper BOOTCFLAGS for cuboot-acadia Julia Lawall (1): [ARM] arch/arm/common/sa1111.c: Correct error handling code KOSAKI Motohiro (1): mm: Don't touch uninitialized variable in do_pages_stat_array() Krzysztof Halasa (1): net: kernel BUG at drivers/net/phy/mdio_bus.c:165! Kumar Gala (1): powerpc/fsl-booke: Fix problem with _tlbil_va being interrupted Linus Torvalds (23): Revert "radeonfb: accelerate imageblit and other improvements" Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx Revert "sched_clock: prevent scd->clock from moving backwards" Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc Merge branch 'sh/for-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 Merge branch 'i2c-fixes' of git://aeryn.fluff.org.uk/bjdooks/linux Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx Linux 2.6.28-rc9 Marcel Holtmann (1): driver core: add newlines to debugging enabled/disabled messages Matt Fleming (1): sh: maple: Do not pass SLAB_POISON to kmem_cache_create() Matthew Arnold (1): USB: add 5372:2303 to pl2303 Michael Chan (1): bnx2: Fix bug in bnx2_free_rx_mem(). Michael Halcrow (1): eCryptfs: Update maintainers Mike Ditto (1): i2c-cpm: Detect and report NAK right away instead of timing out Mike Frysinger (1): pcmcia: blackfin: fix bug - add missing ; to MODULE macro Mike Provencher (1): USB: pl2303: add id for Hewlett-Packard LD220-HP POS pole display Neil Horman (1): netpoll: fix race on poll_list resulting in garbage entry Nicolas Pitre (2): [ARM] 5341/2: there is no copy_page on nommu ARM [ARM] 5348/1: fix documentation wrt location of the alignment trap interface Oliver Neukum (1): USB: set correct configuration in probe of ti_usb_3410_5052 Ozan Sener (1): USB: Unusual devs patch for Nokia 3500c Pablo Neira Ayuso (1): netfilter: ctnetlink: fix missing CTA_NAT_SEQ_UNSPEC Paul Menage (1): cgroups: fix a race between rmdir and remount Paul Moore (1): netlabel: Compiler warning and NULL pointer dereference fix Paul Mundt (1): sh: Disable GENERIC_HARDIRQS_NO__DO_IRQ for unconverted platforms. Pete Zaitcev (1): usbmon: drop bogus 0t from usbmon.txt Peter Korsgaard (1): USB: Documentation/usb/gadget_serial.txt: update to match driver use_acm behaviour Phil Endecott (1): USB: fix comment about endianness of descriptors Randy Dunlap (1): [ARM] fix kernel-doc syntax Russell King (1): [ARM] Ensure linux/hardirqs.h is included where required Rusty Russell (1): Define smp_call_function_many for UP RĂ©mi Denis-Courmont (1): Phonet: keep TX queue disabled when the device is off Sakari Ailus (2): tlan: Fix small (< 64 bytes) datagram transmissions tlan: Fix pci memory unmapping Samuel Ortiz (1): irda: Add irda_skb_cb qdisc related padding Stefan Richter (1): ieee1394: add quirk fix for Freecom HDD Steven Rostedt (1): netfilter: update rwlock initialization for nat_table Tao Ma (1): ocfs2: Always update xattr search when creating bucket. Tejun Heo (3): libata: fix Seagate NCQ+FLUSH blacklist pata_hpt366: fix cable detection, pata_hpt366: no ATAPI DMA Zachary Amsden (1): x86 Fix VMI crash on boot in 2.6.28-rc8 cwm97m (1): jme: Fixed a typo ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:30 2009 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, J_CHICKENPOX_21,J_CHICKENPOX_65 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQUPJ183613 for ; Thu, 21 May 2009 15:26:30 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQUdM183586; Thu, 21 May 2009 15:26:30 -0500 Date: Thu, 21 May 2009 15:26:30 -0500 Message-Id: <200905212026.n4LKQUdM183586@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.28-rc6, created. v2.6.28-rc6 X-Git-Refname: refs/tags/v2.6.28-rc6 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: b503092a16bdba0a418e155fe592521fc20855af 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 annotated tag, v2.6.28-rc6 has been created at b503092a16bdba0a418e155fe592521fc20855af (tag) tagging 13d428afc007fcfcd6deeb215618f54cf9c0cae6 (commit) replaces v2.6.28-rc5 tagged by Linus Torvalds on Thu Nov 20 15:19:36 2008 -0800 - Log ----------------------------------------------------------------- Linux 2.6.28-rc6 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkkl8I0ACgkQF3YsRnbiHLvwwQCgm938fMplXCUJ7FMAkDvQV9yH GKIAoKPYwhCtxY1Z0YtW/dha15lv8GVc =mN9B -----END PGP SIGNATURE----- Adrian Knoth (1): sched: correct sched-rt-group.txt pathname in init/Kconfig Al Viro (1): Fix broken ownership of /proc/sys/ files Alan Jenkins (1): atl2: don't request irq on resume if netif running Alan Stern (2): USB: storage: updates unusual_devs entry for the Nokia 6300 USB: storage: update unusual_devs entries for Nokia 5300 and 5310 Alessandro Zummo (1): rtc: rtc-sun4v fixes, revised Alexey Dobriyan (4): net: shy netns_ok check ixgbe: fix compilation with gcc-3.4 phonet: fix compilation with gcc-3.4 net: fix tiny output corruption of /proc/net/snmp6 Alexey Klimov (2): HID: fix kworld fm700 radio hidquirks HID: fix radio-mr800 hidquirks Andi Kleen (1): HID: use single threaded work queue for hid_compat Andiry Xu (1): USB: fix SB700 usb subsystem hang bug Andrea Paterniani (1): spi_imx: full duplex dma corruption bugfix Andy Fleming (1): gianfar: Fix DMA unmap invocations Anton Vorontsov (1): net/ucc_geth: Fix oops in uec_get_ethtool_stats() Arjan van de Ven (3): x86: move iomap.h to the new include location suspend: use WARN not WARN_ON to print the message lib/scatterlist.c: fix kunmap() argument in sg_miter_stop() Balazs Scheidler (2): TPROXY: fill struct flowi->flags in udp_sendmsg() TPROXY: supply a struct flowi->flags argument in inet_sk_rebuild_header() Ben Dooks (1): lcd: fix oops if driver only interested in .set_power Benjamin Thery (2): net: fix ip_mr_init() error path ipv6: use seq_release_private for ip6mr.c /proc entries Bjorn Helgaas (1): igb: use dev_printk instead of printk Brian Haley (1): ipv6: routing header fixes Bruno PrĂ©mont (1): viafb: fix releasing of /proc/viafb/ subtree Clemens Ladisch (1): fbdev: clean the penguin's dirty feet Dave Kleikamp (1): prevent cifs_writepages() from skipping unwritten pages David Brownell (1): USB: gadget rndis: stop windows self-immolation David Daney (1): MIPS: Malta: Fix include paths in malta-amon.c David Miller (1): sparc64: wire up accept4() David S. Miller (4): niu: Bump driver version and release date. Merge branch 'davem-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 net: Do not fire linkwatch events until the device is registered. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Dmitri Vorobiev (1): MIPS: IP22: Make indy_sc_ops variable static Dmitry Baryshkov (1): tmiofb: fix compilation with ACCEL disabled Dominik Brodowski (2): pcmcia: add braces in error path pcmcia: ensure correct logging in do_io_probe FUJITA Tomonori (2): swiotlb: use coherent_dma_mask in alloc_coherent intel-iommu: fix compile warnings Felipe Balbi (1): usb: musb: fix bug in musb_schedule Florian Fainelli (1): MIPS: RB532: GPIO register offsets are relative to GPIOBASE Giulio Benetti (1): phy: fix phy address bug Glauber Costa (1): mm: vmalloc search restart fix Graf Yang (2): Blackfin arch: fix bug - Fail to boot jffs2 kernel for BF561 with SMP patch Blackfin arch: fix bug - Turn on DEBUG_DOUBLEFAULT, booting SMP kernel crash Harvey Harrison (3): isdn: remove extra byteswap in isdn_net_ciscohdlck_slarp_send_reply net: jme.c rxdesc.flags is __le16, other missing endian swaps net: ipg.c fix bracing on endian swapping Helge Deller (2): unitialized return value in mm/mlock.c: __mlock_vma_pages_range() parisc: fix bug in compat_arch_ptrace Henrik Rydberg (4): HID: support for new unibody macbooks HID: map macbook keys for "Expose" and "Dashboard" hwmon: applesmc: Add support for iMac 6 drivers/hwmon/applesmc.c: add generic MacPro support Hidetoshi Seto (1): [IA64] use mprintk instead of printk, in ia64_mca_modify_original_stack Hiroshi Shimamoto (1): x86: uaccess_64: fix return value in __copy_from_user() Huang Weiyi (1): [IA64] remove duplicate include iommu.h Hugh Dickins (4): sprint_symbol(): use less stack migration: fix writepage error vmscan: let GFP_NOFS go to swap again don't unlink an active swapfile Igor Mammedov (1): Fixed parsing of mount options when doing DFS submount Ilpo Järvinen (1): pcmcia: fix indentation & braces disagreement - add braces Ingo Molnar (9): Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent tracing: fix mmiotrace resizing crash lockdep: include/linux/lockdep.h - fix warning in net/bluetooth/af_bluetooth.c sched: fix kernel warning on /proc/sched_debug access MAINTAINERS: remove me as RAID maintainer x86, PEBS/DS: fix code flow in ds_request() 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 Merge branch 'linus' into tracing/urgent Merge branch 'tip/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent Isaku Yamahata (2): [IA64] ia64/pv_ops/pv_cpu_ops: fix _IA64_REG_IP case. [IA64] xen: fix xen_get_eflags. J. K. Cliburn (2): atl1e: fix broken multicast by removing unnecessary crc inversion atl1: Do not enumerate options unsupported by chip Jack Steiner (1): GRU: fix for debug option James Bottomley (1): x86, voyager: fix smp generic helper voyager breakage Jarkko Nikula (1): gpiolib: extend gpio label column width in debugfs file Jeff Kirsher (2): e1000e: fix warn_on reload after phy_id error e1000e: fix IPMI traffic Jeff Layton (3): cifs: disable sharing session and tcon and add new TCP sharing code cifs: reinstate sharing of SMB sessions sans races cifs: reinstate sharing of tree connections Jens Axboe (1): block: hold extra reference to bio in blk_rq_map_user_iov() Jeremy Fitzhardinge (1): xen: fix scrub_page() Jesse Brandeburg (1): e100: fix dma error in direction for mapping Jie Zhang (1): Blackfin arch: fix bug - shared lib function in L2 failed be called Jiri Slaby (2): HID: fix start/stop cycle in usbhid driver HID: don't grab devices with no input Joerg Roedel (4): AMD IOMMU: add parameter to disable device isolation AMD IOMMU: enable device isolation per default AMD IOMMU: fix fullflush comparison length AMD IOMMU: check for next_bit also in unmapped area Joey Zhuo (1): via-velocity: enable perfect filtering for multicast packets Johannes Berg (4): rtnetlink: propagate error from dev_change_flags in do_setlink() libertas_tf: fix skb tail pointer mac80211: remove ieee80211_notify_mac iwlagn: fix RX skb alignment Julia Lawall (3): ALSA: sound/pci/pcxhr/pcxhr.c: introduce missing kfree and pci_disable_device tracing: kernel/trace/trace.c: introduce missing kfree() drivers/video/backlight/da903x.c: introduce missing kfree Julien Brunel (1): drivers/video: bad error test before a dereference KAMEZAWA Hiroyuki (1): cgroup: fix potential deadlock in pre_destroy Kay Sievers (2): pcmcia: struct device - replace bus_id with dev_name(), dev_set_name() sparc: struct device - replace bus_id with dev_name(), dev_set_name() Komuro (1): pcmcia: setup resource information for pseudo multifunction devices. Kumar Gala (1): Remove -mno-spe flags as they dont belong Lai Jiangshan (1): relay: fix cpu offline problem Lennert Buytenhek (3): phylib: fix premature freeing of struct mii_bus mv643xx_eth: fix the order of mdiobus_{unregister, free}() calls mv643xx_eth: fix recycle check bound Li Zefan (2): cpuset: fix regression when failed to generate sched domains cgroups: fix a serious bug in cgroupstats Linus Torvalds (25): Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid acpi: fix oops in acpi_system_wakeup_device_seq_show Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'for-linus' of git://git.o-hand.com/linux-mfd Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6 Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86/numa' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Linux 2.6.28-rc6 M Kondrin (1): USB: ACE1001 patch for cp2101.c Marc Pignat (1): pcmcia: add another pata/ide ID Mark Brown (1): mfd: Correct WM8350 I2C return code usage Markus Metzger (1): x86, bts: fix unlock problem in ds.c Matthew Ranostay (1): ALSA: hda: STAC_VREF_EVENT value change Matthew Wilcox (1): x86: Fix interrupt leak due to migration Miao Xie (1): cpuset: update top cpuset's mems after adding a node Michael Halcrow (1): eCryptfs: Allocate up to two scatterlists for crypto ops on keys Michael Hennerich (1): Blackfin arch: fix bug - Cpufreq assumes clocks in kHz and not Hz. Mike Frysinger (7): Blackfin arch: don't copy bss when copying L1 Blackfin arch: fix bug - dmacopy test case fail on all platform Blackfin arch: fix bug - kernel build with write back policy fails to be booted up Blackfin arch: dont warn when running a kernel on the oldest supported silicon Blackfin arch: fix incorrect limit check for bf54x check_gpio Blackfin arch: fix a broken define in dma-mapping Parport driver: disable pc-style parport on Blackfin systems Mike Rapoport (2): mfd: fix event masking for da9030 drivers/video/backlight/da903x.c: introduce one more missing kfree Nadia Derbey (1): sysvipc: fix the ipc structures initialization Ned Forrester (1): pxa2xx_spi: bugfix full duplex dma data corruption Nick Piggin (2): mm: vmalloc allocator off by one mm: vmalloc failure flush fix Nobuhiro Iwamatsu (1): sh: sh_eth: Update to change of mii_bus Oleg Nesterov (1): sched, signals: fix the racy usage of ->signal in account_group_xxx/run_posix_cpu_timers Oliver Neukum (1): HID: fix locking in hidraw_open() Pantelis Koukousoulas (1): asix: Fix asix-based cards connecting to 10/100Mbs LAN. Patrick McHardy (1): pkt_sched: fix missing check for packet overrun in qdisc_dump_stab() Paulius Zaleckas (1): phylib: fix phy name example in documentation Pavel Emelyanov (1): scm: fix scm_fp_list->list initialization made in wrong place Pete Zaitcev (1): USB: usbmon: fix read(2) Phil Sutter (1): MIPS: RB532: Provide functions for gpio configuration Philipp Kohlbecher (1): x86: more general identifier for Phoenix BIOS Rafael J. Wysocki (2): x86, hibernate: fix breakage on x86_32 with CONFIG_NUMA set x86: make NUMA on 32-bit depend on EXPERIMENTAL again Rakib Mullick (1): kernel/profile.c: fix section mismatch warning Ralf Baechle (2): MIPS: csrc-r4k: Fix spelling mistake. MIPS: csrc-r4k: Fix declaration depending on the wrong CONFIG_ symbol. Randy Dunlap (3): 9p: restrict RDMA usage Documentation/kernel-parameters.txt: add min_addr, fix max_addr cciss: fix DEBUG printk formats Richard Röjfors (1): USB: gadget rndis: send notifications Rik van Riel (1): vmscan: fix get_scan_ratio() comment Robert Olsson (1): pktgen: fix multiple queue warning Robert Reif (1): sparc: Fix tty compile warnings. Robin Getz (1): Blackfin arch: Fix typo when adding CONFIG_DEBUG_VERBOSE Ron Madrid (1): phy: Add support for Marvell 88E1118 PHY Ron Mercer (1): qla3xxx: Cleanup: Fix link print statements. Rusty Russell (1): stop_machine: fix race with return value (fixes Bug #11989) RĂ©mi Denis-Courmont (1): Phonet: refuse to send bigger than MTU packets Santwona Behera (1): NIU: Add Sun CP3260 ATCA blade support Sheng Yang (1): PCI: Fix disable IRQ 0 in pci_reset_function() Stanley.Miao (1): W1 OMAP: Fix OMAP LDP boot crash Steve Conklin (1): x86: quirk for reboot stalls on a Dell Optiplex 330 Steve French (9): [CIFS] Can't rely on iov length and base when kernel_recvmsg returns error [CIFS] Fix cifs reconnection flags [CIFS] remove unused list, add new cifs sock list to prepare for mount/umount fix [CIFS] clean up server protocol handling [CIFS] minor cleanup to cifs_mount [CIFS] Fix build break [CIFS] Fix check for tcon seal setting and fix oops on failed mount from earlier patch [CIFS] fix check for dead tcon in smb_init [CIFS] Do not attempt to close invalidated file handles Steven Rostedt (6): ring-buffer: buffer record on/off switch ring-buffer: no preempt for sched_clock() ftrace: fix set_ftrace_filter ftrace: make filtered functions effective on setting ftrace: fix dyn ftrace filter selection MAINTAINERS: change email address for rostedt Takashi Iwai (7): ALSA: hda - Add digital beep playback switch for STAC/IDT codecs ALSA: hda - Missing NULL check in hda_beep.c ALSA: hda - Check model type instead of SSID in patch_92hd71bxx() ALSA: hda - Fix GPIO initialization in patch_stac92hd71bxx() ALSA: hda - Add quirks for HP Pavilion DV models ALSA: hda - Fix resume of GPIO unsol event for STAC/IDT Merge branches 'topic/fix/hda' and 'topic/fix/misc' into for-linus Tejun Heo (3): block: fix add_partition() error path block: make add_partition() return pointer to hd_struct block/md: fix md autodetection Tim Pepper (1): Blackfin arch: handle case of d_path() returning error in decode_address() Tony Luck (1): [IA64] Rationalize kernel mode alignment checking Trent Piepho (1): phylib: Fix auto-negotiation restart avoidance Trond Myklebust (1): SUNRPC: Fix a performance regression in the RPC authentication code Ulrich Drepper (1): reintroduce accept4 Vegard Nossum (1): trace: introduce missing mutex_unlock() Venki Pallipadi (1): x86: add rdtsc barrier to TSC sync check Vernon Sauder (1): smc911x: Fix printf format typo in smc911x driver. Vlada Peric (1): cirrusfb: remove unused variables WANG Cong (1): hostfs: fix a duplicated global function name Yevgeny Petrilin (1): mlx4_en: Pause parameters per port Yinghai Lu (1): x86: fix es7000 compiling Zhang, Yanmin (1): block: fix boot failure with CONFIG_DEBUG_BLOCK_EXT_DEVT=y and nash Zhaolei (1): Release old elevator on change elevator \"Rafael J. Wysocki\ (3): e1000e: Use device_set_wakeup_enable e1000: Use device_set_wakeup_enable igb: Use device_set_wakeup_enable walimis (1): function tracing: fix wrong pos computing when read buffer has been fulfilled ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:32 2009 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, J_CHICKENPOX_33 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQWG7183680 for ; Thu, 21 May 2009 15:26:32 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQWLY183652; Thu, 21 May 2009 15:26:32 -0500 Date: Thu, 21 May 2009 15:26:32 -0500 Message-Id: <200905212026.n4LKQWLY183652@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.28-rc8, created. v2.6.28-rc8 X-Git-Refname: refs/tags/v2.6.28-rc8 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 6fa7003fe34e9a8a31fb91754f3c289cc045564b 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 annotated tag, v2.6.28-rc8 has been created at 6fa7003fe34e9a8a31fb91754f3c289cc045564b (tag) tagging 8b1fae4e4200388b64dd88065639413cb3f1051c (commit) replaces v2.6.28-rc7 tagged by Linus Torvalds on Wed Dec 10 15:12:02 2008 -0800 - Log ----------------------------------------------------------------- Linux 2.6.28-rc8 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAklATMYACgkQF3YsRnbiHLsyTwCfa4/uDIqpfUqyA1JVgRmK+JG7 1gEAnj3wR5wo4vzhD7gB0hpMVUSViYC8 =g8jJ -----END PGP SIGNATURE----- Abhijeet Kolekar (1): mac80211 : Fix setting ad-hoc mode and non-ibss channel Adrian Hunter (3): UBIFS: allow for gaps when dirtying the LPT [MTD] [NAND] OMAP: OneNAND: header file relocation [MTD] [NAND] OMAP: OneNAND: header file relocation (part 2) Akira Takeuchi (4): MN10300: Discard low-priority Tx interrupts when closing an on-chip serial port MN10300: Fix the preemption resume_kernel() routine MN10300: Fix __put_user_asm8() MN10300: Give correct size when reserving interrupt vector table Al Viro (4): kill obsolete temporary comment in swsusp_close() fix bogus argument of blkdev_put() in pktcdvd return records for fork() both to child and parent fix broken timestamps in AVC generated by kernel threads Alan Cox (3): pata_sis: Remove bogus cable match pata_ninja32: update ID table ata: Fix experimental tags Alessandro Zummo (2): rtc: rtc-starfire fixes rtc: fix missing id_table in rtc-ds1672 and rtc-max6900 drivers Alex Chiang (1): PCI: stop leaking 'slot_name' in pci_create_slot Alexey Dobriyan (1): [IA64] remove BUILD_BUG_ON from paravirt_getreg() Andi Kleen (1): x86: fix early panic with boot option "nosmp" Andreas Petlund (1): pci: Added quirk to disable msi for MCP55 NIC on Asus P5N32-SLI Premium Andreas Schwab (1): Fix block dev compat ioctl handling Andrew Morton (4): mm/backing-dev.c: remove recently-added WARN_ON() revert "percpu counter: clean up percpu_counter_sum_and_set()" revert "percpu_counter: new function percpu_counter_sum_and_set" drivers/video/mb862xx/mb862xxfb.c: fix printk Anton Vorontsov (2): powerpc/83xx: Fix MCU support merge issue in mpc8349emitx.dts powerpc/83xx: Enable FIXED_PHY in mpc834x_itx and mpc83xx defconfigs Arjan van de Ven (1): net: make skb_truesize_bug() call WARN() Artem Bityutskiy (6): UBIFS: remove printk MAINTAINERS: change UBI/UBIFS git tree URLs UBIFS: fix compilation warnings UBIFS: do not print scary memory allocation warnings UBIFS: do not allocate too much UBIFS: pre-allocate bulk-read buffer Atsushi Nemoto (1): [MTD] physmap: fix memory leak on physmap_flash_remove by using devres Avi Kivity (1): KVM: VMX: Fix interrupt loss during race with NMI Balaji Rao (1): drivers/serial/s3c2440.c: fix typo in MODULE_LICENSE Balazs Scheidler (1): tproxy: fixe a possible read from an invalid location in the socket match Balbir Singh (1): uml: boot broken due to buffer overrun Bartlomiej Zolnierkiewicz (7): amd74xx: workaround unreliable AltStatus register for nVidia controllers ide: add SAMSUNG SP0822N with firmware WA100-10 to ivb_list[] ide: respect current DMA setting during resume ide: fix build for DEBUG_PM ide: remove dead code from drive_is_ready() Revert "ide: respect current DMA setting during resume" ide: build-fix for CONFIG_BLK_DEV_IDEDMA_PMAC=n Baruch Siach (1): enc28j60: Fix sporadic packet loss (corrected again) Benjamin Herrenschmidt (2): powerpc: Fix dma_map_sg() cache flushing on non coherent platforms radeonfb: Disable new color expand acceleration unless explicitely enabled Bernard Pidoux (1): rose: zero length frame filtering in af_rose.c Bernhard Walle (2): [WATCHDOG] hpwdt: set the mapped BIOS address space as executable [WATCHDOG] hpwdt: Fix kdump when using hpwdt Brian King (1): sched: CPU remove deadlock fix Brice Goglin (1): mm: no get_user/put_user while holding mmap_sem in do_pages_stat? Catalin Marinas (1): net: Fix memory leak in the proto_register function Chas Williams (1): ATM: CVE-2008-5079: duplicate listen() on socket corrupts the vcc table Chen Gong (1): [MTD] m25p80: chip erase != block erase != sector erase Cheng Renquan (2): ath5k: fix Security issue in DebugFS part of ath5k block: set disk->node_id before it's being used Chris Torek (1): sparc64: Fix bug in PTRACE_SETFPREGS64 handling. Christian Borntraeger (1): KVM: s390: Fix problem state handling in guest sigp handler Christof Schmitt (1): [SCSI] zfcp: Fix opening of wka ports Christoph Hellwig (3): clean up blkdev_get a little bit kill FMODE_NDELAY_NOW documnt FMODE_ constants Chuck Lever (1): NLM: client-side nlm_lookup_host() should avoid matching on srcaddr Cord Walter (1): axnet_cs / pcnet_cs: moving PCMCIA_DEVICE_PROD_ID for Netgear FA411 Cyrill Gorcunov (1): MN10300: vmlinux.lds.S cleanup - use PAGE_SIZE, PERCPU macros Dave Airlie (1): drm/radeon: don't actually enable the IRQ regs until irq is enabled Dave Chinner (1): [XFS] Fix hang after disallowed rename across directory quota domains David Daney (1): MIPS: Return ENOSYS from sys32_syscall on 64bit kernels like elsewhere. David Howells (1): MN10300: Introduce barriers to replace removed volatiles in gdbstub 16550 driver David S. Miller (4): Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 sungem: Fix PCS_MIICTRL register write in gem_init_phy(). sparc64: Fix offset calculation in compute_size() Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Dean Nelson (1): sgi-gru: call fs_initcall() if statically linked Denis V. Lunev (1): [MTD] [NAND] fix OOPS accessing flash operations over STM flash on PXA Dmitri Monakhov (1): inotify: fix IN_ONESHOT unmount event watcher Doug Leith (1): tcp: tcp_vegas ssthresh bug fix Eric Anholt (6): drm/i915: Respect GM965/GM45 bit-17-instead-of-bit-11 option for swizzling. drm/i915: Move flushing list cleanup from flush request retire to request emit. drm/i915: If interrupted while setting object domains, still emit the flush. drm/i915: Make a single set-to-gtt-domain path. drm/i915: Make a single set-to-cpu-domain path and use it wherever needed. drm/i915: Return error in i915_gem_set_to_gtt_domain if we're not in the GTT. Eric Dumazet (3): oprofile: fix CPU unplug panic in ppro_stop() percpu_counter: fix CPU unplug race in percpu_counter_destroy() atomic: fix a typo in atomic_long_xchg() Eric Paris (1): Audit: make audit=0 actually turn off audit Finn Thain (1): macfb: Do not overflow fb_fix_screeninfo.id Florian Fainelli (1): [WATCHDOG] fix mtx1_wdt compilation failure FrĂ©dĂ©ric Moulins (1): pppol2tp: Add missing sock_put() in pppol2tp_release() Geert Uytterhoeven (1): m68k: Update defconfigs for 2.6.28-rc7 Geoff Levand (1): fbcon: fix workqueue shutdown Giuseppe Cavallaro (1): phy: fix phy_id detection also for broken hardware. Grant Likely (1): powerpc/virtex5: Fix Virtex5 machine check handling Hannes Eder (1): alim15x3: fix sparse warning Harvey Harrison (1): UBIFS: endian handling fixes and annotations Herbert Xu (2): bridge: netfilter: fix update_pmtu crash with GRE crypto: api - Disallow cryptomgr as a module if algorithms are built-in Hollis Blanchard (1): KVM: ppc: stop leaking host memory on VM exit Hong H. Pham (1): sparc64: Sync FPU state in VIS emulation handler. Hugh Dickins (2): KSYM_SYMBOL_LEN fixes fix mapping_writably_mapped() Ilpo Järvinen (1): tcp: make urg+gso work for real this time Ingo Molnar (4): net/wireless/reg.c: fix bad WARN_ON in if statement 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 Merge branch 'oprofile-for-tip' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into x86/urgent x86: fix default_spin_lock_flags() prototype J. Bruce Fields (3): nfsd: clean up grace period on early exit nfsd: use of unitialized list head on error exit in nfs4recover.c EXPORTFS: handle NULL returns from fh_to_dentry()/fh_to_parent() Jack Steiner (1): [IA64] Fix GRU compile error w/o CONFIG_HUGETLB_PAGE James Bottomley (5): [SCSI] aacraid: switch to block timeout [SCSI] ibmvscsi: switch to block timeout [SCSI] megaraid_sas: switch to block timeout [SCSI] make scsi_eh_try_stu use block timeout [SCSI] stex: switch to block timeout James Morris (1): MAINTAINERS: Add security subsystem maintainer James Smart (1): [SCSI] fc_transport: fix old bug on bitflag definitions Jan Engelhardt (1): netfilter: xtables: add missing const qualifier to xt_tgchk_param Jiri Slaby (3): ATM: horizon, fix hrz_probe fail path MAINTAINERS: add netdev to ATM ATA: piix, fix pointer deref on suspend Joerg Roedel (8): x86: fix broken flushing in GART nofullflush path AMD IOMMU: set device table entry for aliased devices AMD IOMMU: fix possible race while accessing iommu->need_sync AMD IOMMU: fix iommu_map_page function AMD IOMMU: fix loop counter in free_pagetable function AMD IOMMU: fix typo in comment AMD IOMMU: fix WARN_ON in dma_ops unmap path AMD IOMMU: __unmap_single: check for bad_dma_address instead of 0 Johannes Berg (1): iwlagn: fix DMA sync John Keller (1): [IA64] SN: prevent IRQ retargetting in request_irq() Jonathan Corbet (1): Fix a race condition in FASYNC handling Joseph Myers (1): sparc64: Fix VIS emulation bugs Julia Lawall (2): [MTD] [NAND] drivers/mtd/nand/pasemi_nand.c: Add missing pci_dev_put [IA64] eliminate NULL test and memset after alloc_bootmem Junjiro R. Okajima (1): nfsd: fix vm overcommit crash fix #2 KAMEZAWA Hiroyuki (1): page_cgroup should ignore empty nodes KOSAKI Motohiro (1): mm: remove UP version of lru_add_drain_all() Kay Sievers (2): bdi: register sysfs bdi device only once per queue pktcdvd: remove broken dev_t export of class devices Keith Packard (4): drm/i915: Rename object_set_domain to object_set_to_gpu_domain drm/i915: Move the execbuffer domain computations together drm/i915: Retry execbuffer pinning after clearing the GTT drm/i915: Disable the GM965 MSI errata workaround. Kumar Gala (1): powerpc: Use physical cpu id when setting the processor affinity Lennert Buytenhek (1): [ARM] 5340/1: fix stack placement after noexecstack changes Linus Torvalds (42): Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'kvm-updates/2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm Merge branch 'linux-next' of git://git.infradead.org/ubifs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog iTCO_wdt: fix typo when setting TCO_EN bit Merge branch 'for-2.6.28' of git://linux-nfs.org/~bfields/linux Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc Merge branch 'drm-gem-update' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/bdev Revert "ACPI: battery: Convert discharge energy rate to current properly" Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Enforce a minimum SG_IO timeout Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'audit.b59' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current Merge git://git.infradead.org/mtd-2.6 Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge branch 'to-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-roland Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Linux 2.6.28-rc8 Luis R. Rodriguez (2): ath9k: Fix SW-IOMMU bounce buffer starvation ath9k: correct expected max RX buffer size Mahesh Salgaonkar (1): sched: don't export sched_mc_power_savings in laptops Manfred Spraul (1): lib/idr.c: Fix bug introduced by RCU fix Marcelo Tosatti (2): KVM: MMU: fix sync of ptes addressed at owner pagetable KVM: MMU: avoid creation of unreachable pages in the shadow Mark Salter (1): MN10300: Fix application of kernel module relocations Martin Petermann (1): [SCSI] zfcp: fix remote port status check Martin Xu (1): ath5k: disable beacon filter when station is not associated Mathieu Desnoyers (1): documentation: local_ops fix on_each_cpu Matt Mackall (1): pagemap: fix 32-bit pagemap regression Michael Chan (1): bnx2: Add workaround to handle missed MSI. Michael Schmitz (1): ide: fix the ide_release_lock imbalance Mike Christie (1): [SCSI] Fix hang in starved list processing Mike Frysinger (3): [MTD] m25p80: fix detection of SPI parts [MTD] m25p80: fix detection of m25p16 flashes asm/generic: fix bug - kernel fails to build when enable some common audit code on Blackfin Milan Broz (1): block: fix setting of max_segment_size and seg_boundary mask Nick Andrew (3): MIPS: Fix incorrect use of loose in vpe.c Fix incorrect use of loose in tty/serial drivers Fix incorrect use of loose in i2o_block.c Nicolas Pitre (1): [ARM] 5339/1: fix __fls() on ARM Nigel Cunningham (1): ieee1394: node manager causes up to ~3.25s delay in freezing tasks Oliver Hartkopp (2): can: Fix CAN_(EFF|RTR)_FLAG handling in can_filter can: omit received RTR frames for single ID filter lists Owain Ainsworth (1): drm/i915: Don't return error in evict_everything when we get to the end. Pascal Terjan (1): hysdn: fix writing outside the field on 64 bits Patrick McHardy (3): netfilter: ctnetlink: fix conntrack creation race netfilter: ctnetlink: fix GFP_KERNEL allocation under spinlock macvlan: don't broadcast PAUSE frames to macvlan devices Paul Mackerras (1): Merge branch 'merge' of master.kernel.org:/pub/scm/linux/kernel/git/galak/powerpc into merge Paul Moore (1): netlabel: Fix a potential NULL pointer dereference Petr Tesarik (2): tcp: Do not use TSO/GSO when there is urgent data posix-cpu-timers: fix clock_gettime with CLOCK_PROCESS_CPUTIME_ID Petr Vandrovec (1): When block layer fails to map iov, it calls bio_unmap_user to undo Qinghuang Feng (3): driver/net/*: remove redundant argument comments drivers/net/chelsio/sge.c: remove redundant argument comments drivers/message/i2o/iop.c: cleanup kerneldoc Rafael J. Wysocki (1): ACPI: Fix ACPI battery regression introduced by commit 558073 Ralf Baechle (5): MIPS: IP22, Fulong, Malta: Update defconfigs. MIPS: Malta: Consolidate platform device code. MIPS: o32: Fix number of arguments to splice(2). MIPS: 64-bit: vmsplice needs to use the compat wrapper for o32 and N32. MIPS: Better than nothing implementation of PCI mmap to fix X. Randy Dunlap (4): net/hp-plus: fix link errors net: hp-plus uses eip_poll [patch 1/1] audit: remove excess kernel-doc rtc twl4030: rename ioctl function when RTC_INTF_DEV=n Richard Kennedy (1): AMD IOMMU: struct amd_iommu remove padding on 64 bit Rik van Riel (1): vmscan: evict streaming IO first Robin Holt (4): [IA64] Updated the generic_defconfig to work with the 2.6.28-rc7 kernel. [IA64] Clear up section mismatch for sn_check_wars. [IA64] Clear up section mismatch with arch_unregister_cpu() [IA64] Clear up section mismatch for ioc4_ide_attach_one. Roel Kluin (1): check_hung_task(): unsigned sysctl_hung_task_warnings cannot be less than 0 Roland McGrath (1): tracehook: exec double-reporting fix Russell King (2): [ARM] omap: fix a pile of issues [ARM] Fix alignment fault handling for ARMv6 and later CPUs Rusty Russell (1): sparc: asm/bitops.h should define __fls RĂ©mi Denis-Courmont (1): Phonet: fix oops in phonet_address_del() on non-Phonet device Saeed Bishara (1): [ARM] Orion: fix bug in pcie configuration cycle function field mask Shaddy Baddah (2): mac80211: use unaligned safe memcmp() in-place of compare_ether_addr() zd1211rw: use unaligned safe memcmp() in-place of compare_ether_addr() Stefan Richter (1): firewire: fw-ohci: fix IOMMU resource exhaustion Swen Schillig (5): [SCSI] zfcp: returning an ERR_PTR where a NULL value is expected [SCSI] zfcp: verify for correct rport state before scanning for SCSI devs [SCSI] zfcp: eliminate race between validation and locking [SCSI] zfcp: fix deadlock between wq triggered port scan and ERP [SCSI] zfcp: prevent double decrement on host_busy while being busy Tejun Heo (2): block: internal dequeue shouldn't start timer pata_hpt366: fix clock detection Thomas Bogendoerfer (1): x86: fix dma_mapping_error for 32bit x86 Thomas Renninger (1): PCIe: ASPM: Break out of endless loop waiting for PCI config bits to switch Tiejun Chen (1): MIPS: Malta: Add back RTC support Tom Tucker (1): Add a reference to sunrpc in svc_addsock Tom Zanussi (1): relayfs: fix infinite loop with splice() Tomas Winkler (1): iwlwifi: clean key table in iwl_clear_stations_table function Tony Luck (1): [IA64] Fix section mismatch ioc3uart_init()/ioc3uart_submodule Trent Piepho (1): phylib: Add Vitesse VSC8221 SGMII PHY Uwe Kleine-König (1): netx-eth: initialize per device spinlock Vlad Malov (1): MIPS: Fix potential DOS by untrusted user app. Wei Yongjun (1): xfrm: Fix kernel panic when flush and dump SPD entries Wilfried Klaebe (1): b1isa: fix b1isa_exit() to really remove registered capi controllers William Cohen (1): x86/oprofile: fix Intel cpu family 6 detection Wim Van Sebroeck (3): [WATCHDOG] iTCO_wdt : problem with rebooting on new ICH9 based motherboards [WATCHDOG] iTCO_wdt : correct status clearing [WATCHDOG] iTCO_wdt: add PCI ID's for ICH9 & ICH10 chipsets Wolfgang Grandegger (1): [MTD] [NAND] fsl_upm: fix build problem with 2.6.28-rc2 Xiantao Zhang (2): KVM: ia64: Fix incorrect kbuild CFLAGS override KVM: ia64: Fix: Use correct calling convention for PAL_VPS_RESUME_HANDLER Zhu Yi (1): ipw2200: fix netif_*_queue() removal regression dann frazier (1): net: Fix soft lockups/OOM issues w/ unix garbage collector john stultz (1): time: catch xtime_nsec underflows and fix them remi.denis-courmont@nokia (1): Phonet: do not dump addresses from other namespaces ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:41 2009 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, J_CHICKENPOX_31 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQfth183853 for ; Thu, 21 May 2009 15:26:41 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQfVa183825; Thu, 21 May 2009 15:26:41 -0500 Date: Thu, 21 May 2009 15:26:41 -0500 Message-Id: <200905212026.n4LKQfVa183825@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.29-rc3, created. v2.6.29-rc3 X-Git-Refname: refs/tags/v2.6.29-rc3 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 8be00154b8e949bf4b89ac198aef9a247532ac2d 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 annotated tag, v2.6.29-rc3 has been created at 8be00154b8e949bf4b89ac198aef9a247532ac2d (tag) tagging 18e352e4a73465349711a9324767e1b2453383e2 (commit) replaces v2.6.29-rc2 tagged by Linus Torvalds on Wed Jan 28 10:49:44 2009 -0800 - Log ----------------------------------------------------------------- Linux 2.6.29-rc3 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkmAqM4ACgkQF3YsRnbiHLutVACfclMRtySlATknuEVawQxkbSCJ hoQAn2oJ45MU6RIFbeJJrYxtcmOSBJTD =Omy+ -----END PGP SIGNATURE----- Abbas, Mohamed (1): iwlwifi: fix rs_get_rate WARN_ON() Adrian Bunk (3): m68knommu: set NO_DMA m68knommu: remove obsolete and unused eLIA board m68knommu: remove the no longer used PCI support option Adrian McMenamin (1): dma-coherent: per-device coherent area is in pages, not bytes. Ajay Kumar Gupta (1): USB: musb free_irq bugfix Alan Cox (1): USB: cdc-acm: Add another conexant modem to the quirks Alan Stern (3): USB: fix toggle mismatch in disable_endpoint paths USB: don't enable wakeup by default for PCI host controllers USB: fix char-device disconnect handling Alex Williamson (1): virtio_net: Fix MAX_PACKET_LEN to support 802.1Q VLANs Alex.Cheng@quantatw.com (1): USB: option: add QUANTA HSDPA Data Card device ids Alexey Dobriyan (37): fs/Kconfig: move reiserfs out fs/Kconfig: move jfs out fs/Kconfig: move ocfs2 out fs/Kconfig: move btrfs out fs/Kconfig: move autofs, autofs4 out fs/Kconfig: move fuse out fs/Kconfig: move iso9660, udf out fs/Kconfig: move fat out fs/Kconfig: move ntfs out fs/Kconfig: move sysfs out fs/Kconfig: move configfs out fs/Kconfig: move adfs out fs/Kconfig: move affs out fs/Kconfig: move ecryptfs out fs/Kconfig: move hfs, hfsplus out fs/Kconfig: move befs out fs/Kconfig: move bfs out fs/Kconfig: move efs out fs/Kconfig: move cramfs out fs/Kconfig: move squashfs out fs/Kconfig: move vxfs out fs/Kconfig: move minix out fs/Kconfig: move omfs out fs/Kconfig: move hpfs out fs/Kconfig: move qnx4 out fs/Kconfig: move romfs out fs/Kconfig: move sysv out fs/Kconfig: move ufs out fs/Kconfig: move nfs out fs/Kconfig: move nfsd out fs/Kconfig: move sunrpc out fs/Kconfig: move smbfs out fs/Kconfig: move the rest of ncpfs out fs/Kconfig: move coda out fs/Kconfig: move afs out fs/Kconfig: move 9p out Fix longstanding "error: storage size of '__mod_dmi_device_table' isn't known" Anand Gadiyar (1): ARM: OMAP: Fix DMA CCR programming for request line > 63, v3 Andi Kleen (3): x86, generic: mark complex bitops.h inlines as __always_inline kbuild: print usage with no arguments in scripts/config x86: use early clobbers in usercopy*.c Andreas Schwab (1): ide: fix IDE PMAC breakage Andrew Lunn (1): USB: CDC-ACM quirk for MTK GPS Andrew Morton (1): mlx4_core: Fix min() warning Andrew Vasquez (8): [SCSI] qla2xxx: Simplify sector-mask calculation in preparation for larger flash parts. [SCSI] qla2xxx: Ensure RISC-interrupt-enabled consistency for IS_NOPOLLING_TYPE() ISPs. [SCSI] qla2xxx: Always serialize mailbox command execution. [SCSI] qla2xxx: Modify firmware-load order precedence for ISP81XX parts. [SCSI] qla2xxx: Correct endianness issue during flash manipulation. [SCSI] qla2xxx: Correct regression in EH abort handling. [SCSI] qla2xxx: Correct regression in DMA-mask setting prior to allocations. [SCSI] qla2xxx: Update version number to 8.03.00-k2. Andrey Borzenkov (1): orinoco: move kmalloc(..., GFP_KERNEL) outside spinlock in orinoco_ioctl_set_genie Andrey Yurovsky (1): libertas: Fix alignment issues in libertas core Anirban Chakraborty (1): [SCSI] qla2xxx: Fix memory leak in error path Anton Vorontsov (3): phylib: Fix oops in suspend/resume paths gianfar: Revive VLAN support USB: Driver for Freescale QUICC Engine USB Host Controller Artur Skawina (1): p54: set_tim must be atomic. Arun KS (1): ARM: OMAP: Fix OSK ASoC by registering I2C board info for tlvaic23 Atsushi Nemoto (1): dmatest: Use custom map/unmap for destination buffer Ben Greear (1): vlan: Export symbols as non GPL symbols. Ben Nizette (1): ASoC: atmel_pcm: Remove non-existant header Benjamin Herrenschmidt (2): Merge commit 'kumar/kumar-merge' into merge Merge commit 'jwb/jwb-merge' into merge Brandon Philips (1): USB: usblp.c: add USBLP_QUIRK_BIDIR to Brother HL-1440 Brian Cavagnolo (1): mac80211: decrement ref count to netdev after launching mesh discovery Brian King (1): [SCSI] ibmvfc: Fix DMA mapping leak on memory allocation failure Brice Goglin (1): myri10ge: don't forget pci_disable_device() Bryan Wu (2): USB: composite: Fix bug: should test set_alt function pointer before use it USB: composite: Fix bug: low byte of w_index is the usb interface number not the whole 2 bytes of w_index Casey Schaufler (1): smackfs load append mode fix Chr (1): p54: add missing break in eeprom parser Christian Borntraeger (1): [CVE-2009-0029] sparc: Enable syscall wrappers for 64-bit Christian Eggers (1): usb/mcs7830: Don't use buffers from stack for USB transfers Christian Lamparter (6): p54: fix oops caused by bad eeproms p54: fix p54_set_key's return code mac80211: fix slot time debug message p54: more cryptographic accelerator fixes p54usb: fix nasty use after free p54usb: fix packet loss with first generation devices Christoph Hellwig (7): xfs: fix dentry aliasing issues in open_by_handle xfs: use mnt_want_write in compat_attrmulti ioctl xfs: add a separate lock class for the per-mount list of dquots xfs: lockdep annotations for xfs_dqlock2 xfs: add a lock class for group/project dquots xfs: fix bad_features2 fixups for the root filesystem xfs: sanity check attr fork size Clemens Ladisch (3): sound: virtuoso: enable UART on Xonar HDAV1.3 sound: virtuoso: add newline sound: virtuoso: document HDAV1.3 driver status Cliff Wickman (1): x86, UV: cpu_relax in uv_wait_completion Dan Carpenter (1): fuse: fix NULL deref in fuse_file_alloc() Dan Magenheimer (1): xen: actually release memory when shrinking domain Dan Williams (3): fsldma: use a valid 'device' for dma_pool_create dmaengine: kill some dubious WARN_ONCEs dmaengine: dma_issue_pending_all == nop when CONFIG_DMA_ENGINE=n Daniele Venzano (1): isdn: Fix missing ifdef in isdn_ppp Dave Airlie (2): drm: fix leak of device mappings since multi-master changes. i915: fix freeing path for gem phys objects. Dave Chinner (1): Long btree pointers are still 64 bit on disk David Brownell (6): drivers/ide/palm_bk3710.c buildfix [ARM] 5368/1: arch/arm/mach-davinci/usb.c buildfix USB: omap1 ohci buildfix (otg related) USB: musb davinci buildfix USB: musb_hdrc: another davinci buildfix (otg related) USB: musb: Kconfig fix David Daney (2): Make irq_*_affinity depend on CONFIG_GENERIC_HARDIRQS too. cpumask fallout: Initialize irq_default_affinity earlier David S. Miller (6): sparc64: Initialize FHC/CLOCK LED platform_device 'id' field correctly. sparc64: Annotate sparc64 specific syscalls with SYSCALL_DEFINEx() sparc64: Fix DAX handling via userspace access from kernel. Revert "xfrm: For 32/64 compatability wrt. xfrm_usersa_info" Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 David Teigland (1): dlm: fix plock notify callback to lockd Dhananjay Phadke (2): netxen: fix vlan tso/checksum offload netxen: reduce memory footprint Divy Le Ray (1): cxgb3: Fix LRO misalignment Don Skidmore (2): ixgbe: fix dca issue with relaxed ordering turned on ixgbe: fix tag stripping for VLAN ID 0 Eilon Greenstein (22): bnx2x: Free IRQ bnx2x: Handling probe failures bnx2x: Potential race after iSCSI boot bnx2x: Wrong HDR offset in CAM bnx2x: Read chip ID bnx2x: Block nvram access when the device is inactive bnx2x: Overstepping array bounds bnx2x: 1G-10G toggling race bnx2x: Prevent self test loopback failures bnx2x: Legacy speeds autoneg failures bnx2x: Handling PHY FW load failure bnx2x: Driver description update bnx2x: Barriers for the compiler bnx2x: Version update bnx2x: Reset HW before use bnx2x: Disable napi bnx2x: Handling load failures bnx2x: Carrier off first call bnx2x: Calling napi_del bnx2x: Missing rmb when waiting for FW response bnx2x: loopback test failure bnx2x: Version Eric Anholt (3): drm: stash AGP include under the do-we-have-AGP ifdef x86: work around PAGE_KERNEL_WC not getting WC in iomap_atomic_prot_pfn. drm: Rip out the racy, unused vblank signal code. Eric Paris (1): tty_open can return to userspace holding tty_mutex Eric Sandeen (1): [XFS] Remove the rest of the macro-to-function indirections. Gabriel Paubert (1): mv643xx_eth: prevent interrupt storm on ifconfig down Gary Hade (1): x86: remove kernel_physical_mapping_init() from init section Gerhard Pircher (1): powerpc/mm: Fix handling of _PAGE_COHERENT in BAT setup code Grant Erickson (1): powerpc/4xx: DTS: Add Add'l SDRAM0 Compatible and Interrupt Info Greg Kroah-Hartman (1): sysfs: fix problems with binary files Greg Ungerer (4): m68knommu: fix cache flushing for the 527x ColdFire processors m68knommu: remove the obsolete and long unused comempci chip support m68knommu: fix syscall restarting uclinux: add process name to allocation error message Guennadi Liakhovetski (3): dmaengine: add async_tx_clear_ack() macro i.MX31: Image Processing Unit DMA and IRQ drivers i.MX31: framebuffer driver H. Peter Anvin (2): x86: add MSR_IA32_MISC_ENABLE bits to x86: unmask CPUID levels on Intel CPUs Harvey Harrison (1): m68k{nommu}: fixups after the header move Heiko Carstens (4): [S390] personality: fix personality loss on execve [S390] cputime: fix lowcore initialization on cpu hotplug [S390] etr/stp: fix possible deadlock lcs: fix compilation for !CONFIG_IP_MULTICAST Henrik Kretzschmar (1): sound: Remove removed OSS kernel parameters from doc Herbert Xu (6): crypto: authenc - Fix zero-length IV crash net: Add debug info to track down GSO checksum bug gro: Fix handling of complete checksums in IPv6 gro: Fix error handling on extremely short frags gro: Fix merging of paged packets crypto: blkcipher - Fix WARN_ON handling in walk_done Hidetoshi Seto (1): PCI/MSI: bugfix/utilize for msi_capability_init() Hin-Tak Leung (1): zd1211rw: adding Sitecom WL-603 (0df6:0036) to the USB id list Huang Weiyi (1): ARM: OMAP: remove duplicated #include's Hugo Villeneuve (1): USB: musb cppi bugfixes Ian Campbell (2): xen: handle highmem pages correctly when shrinking a domain xen: unitialised return value in xenbus_write_transaction Ihar Hrachyshka (1): MIPS: enable serial UART support on PNX833X devices. Inaky Perez-Gonzalez (3): wimax/i2400m: error paths that need to free an skb should use kfree_skb() debugfs: introduce stub for debugfs_create_size_t() when DEBUG_FS=n USB: add kernel-doc for wusb_dev in struct usb_device Ingo Molnar (6): Merge commit 'v2.6.29-rc1' into timers/urgent x86, cpufreq: remove leftover copymask_copy() fix: crash: IP: __bitmap_intersects+0x48/0x73 Revert "x86: signal: change type of paramter for sys_rt_sigreturn()" x86: use standard PIT frequency x86: unmask CPUID levels on Intel CPUs, fix Ivo van Doorn (1): rt2x00: Fix TX rate short preamble detection J. Bruce Fields (3): nfs: note that CONFIG_SUNRPC_XPRT_RDMA turns on server side support too nfsd: fix null dereference on error path nfsd: fix cred leak on every rpc James A. Treacy (1): USB: cdc-acm: support some gps data loggers James Lentini (1): update port number in NFS/RDMA documentation Jan Beulich (2): x86: avoid early crash in disable_local_APIC() x86: fix assumed to be contiguous leaf page tables for kmap_atomic region (take 2) Jan Kara (2): quota: Improve locking ocfs2: Remove ocfs2_dquot_initialize() and ocfs2_dquot_drop() Jarek Poplawski (1): net: Fix data corruption when splicing from sockets. Jarkko Nikula (1): ARM: OMAP: Fix gpio by switching to generic gpio calls, v2 Jarod Wilson (1): crypto: ccm - Fix handling of null assoc data Jaswinder Singh Rajput (1): time-sched.c: tick_nohz_update_jiffies should be static Jean Delvare (5): i2c: Delete 10 unused driver IDs i2c: Delete many unused adapter IDs i2c: Quilt tree has moved eeprom: More consistent symbol names i2c: Warn on deprecated binding model use Jean-Baptiste Onofre (1): USB: storage: support of Dane-Elec MediaTouch USB device Jean-Christop PLAGNIOL-VILLARD (1): [ARM] 5370/1: at91: fix rm9200 watchdog Jeff Layton (2): dlm: initialize file_lock struct in GETLK before copying conflicting lock nfsd: only set file_lock.fl_lmops in nfsd4_lockt if a stateowner is found Jeff Mahoney (1): x86: define ARCH_WANT_FRAME_POINTERS Jesper Nilsson (1): klist.c: bit 0 in pointer can't be used as flag Jesse Barnes (6): drm: create mode_config idr lock drm/i915: remove unnecessary debug output in KMS init drm/i915: hook up LVDS DPMS property drm: don't whine about not reading EDID data drm/i915: Fix cursor physical address choice to match the 2D driver. networking: document "nc" in addition to "netcat" in netconsole.txt Jesse Brandeburg (1): e1000e: workaround hw errata Jiri Slaby (3): relay: fix lock imbalance in relay_late_setup_files PCI hotplug: fix lock imbalance in pciehp NET: net_namespace, fix lock imbalance Joe Carnuccio (1): [SCSI] qla2xxx: Correct descriptions in flash manipulation routines. John Adamson (1): m68knommu: fix ColdFire 5272 serial baud rates in mcf.c JosephChan@via.com.tw (1): [libata] pata_via: support VX855, future chips whose IDE controller use 0x0571 Josh Boyer (4): powerpc/40x: Update PowerPC 40x defconfigs powerpc/44x: Update PowerPC 44x defconfigs powerpc/4xx: Update multi-board PowerPC 4xx defconfigs powerpc: Remove arch/ppc cruft from Kconfig Jouni Malinen (2): ath9k: Fix an operator typo in phy rate validation ath9k: Fix an operator typo in REG_DOMAIN_2GHZ_MASK Julia Lawall (2): arch/sh/mm: Move a dereference below a NULL test USB: musb uses endpoint functions Kalle Valo (1): USB: musb: tusb6010 buildfix Kay Sievers (1): PNP: fix broken pnp lowercasing for acpi module aliases Krzysztof HaÅ‚asa (1): net: Fix linux/if_frad.h's suitability for userspace. Kumar Gala (7): powerpc/85xx: Fix typo in mpc8572ds dts powerpc/85xx: Update defconfigs powerpc/83xx: Update defconfigs powerpc/86xx: Update defconfigs powerpc/8xx: Update defconfigs powerpc/embedded6xx: Update defconfigs dmi: Fix build breakage Kuninori Morimoto (3): sh: mach-migor: Add ov772x support. sh: mach-migor: Delete soc_camera_platform setup. sh: mach-migor: Add tw9910 support. Lai Jiangshan (2): rcu: add __cpuinit to rcu_init_percpu_data() rcu: remove duplicate CONFIG_RCU_CPU_STALL_DETECTOR Lalit Chandivade (1): [SCSI] qla2xxx: Correct MSI-X vector allocation for single queue mode. Larry Finger (1): rtl8187: Add termination packet to prevent stall Lennert Buytenhek (2): Revert "mv643xx_eth: use longer DMA bursts". mv643xx_eth: fix multicast filter programming Leonardo Potenza (1): x86: fix section mismatch warnings in kernel/setup_percpu.c Li Yang (1): powerpc/mpc8313erdb: fix kernel panic because mdio device is not probed Linus Torvalds (36): Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse Fix annoying DRM_ERROR() string warning Merge branch 'Kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/misc Merge branch 'sh/for-2.6.29' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-quota-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm Merge git://git.infradead.org/battery-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge master.kernel.org:/home/rmk/linux-2.6-arm Fix "multiple definition of `debugfs_create_size_t'" Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'hibern_fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge branch 'for-2.6.29' of git://linux-nfs.org/~bfields/linux Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Linux 2.6.29-rc3 Luis R. Rodriguez (3): cfg80211: make handle_band() and handle_channel() wiphy specific cfg80211: Fix regression with 11d on bands cfg80211: Fix parsed country IE info for 5 GHz Luke Yelavich (1): ALSA: hda - add quirks for some 82801H variants to use ALC883_MITAC Madhusudhan Chikkature (1): [ARM] 5369/1: omap mmc: Add new omap hsmmc controller for 2430 and 34xx, v3 Magnus Damm (4): sh: ap325rxa MMC support using spi_gpio and mmc_spi sh: Migo-R MMC support using spi_gpio and mmc_spi. sh: export the sh7343 JPU to user space sh: fix sh-sci / early printk build on sh7723 Mandeep Singh Baines (1): softlock: fix false panic which can occur if softlockup_thresh is reduced Marcel Sebek (1): USB: 'option' driver - onda device MT503HS has wrong id Mark Lord (5): sata_mv: fix 8-port timeouts on 508x/6081 chips sata_mv: don't read hc_irq_cause sata_mv: remove bogus nsect restriction sata_mv: msi masking fix (v2) sata_mv: no longer experimental (v2) Matt Carlson (1): tg3: Fix firmware loading Matt Helsley (1): net: Move config NET_NS to from net/Kconfig to init/Kconfig Matt Waddel (3): m68knommu: add ColdFire M532x to the FEC configuration options m68knommu: correct the mii calculations for 532x ColdFire FEC m68knommu: fix 5329 ColdFire periphal addressing Matthew Ranostay (4): ALSA: hda: fix invalid power mapping masks ALSA: hda: 83xxx port 0xe DAC selection ALSA: hda: revert change to 92hd83xxx power mapping ALSA: hda: Add STAC92HD83XXX_PWR_REF quirk Mhayk Whandson (1): USB: ftdi_sio driver support of bar code scanner from Diebold Michael Bramer (1): Add support for '8-port RS-232 MIC-3620 from advantech' Michael Holzheu (2): [S390] fix compat sigaltstack syscall table entry [S390] Add missing compat system call wrappers. Michael Schmitz (1): ide: fix Falcon IDE breakage Mike Christie (2): [SCSI] libiscsi: fix iscsi pool leak [SCSI] qla4xxx: do not reuse session when connecting to different target port Mike Frysinger (1): asm-sh/posix_types_{32,64}.h: drop __GLIBC__/__USE_ALL usage Mike Travis (3): rcu: move Kconfig menu x86: put trigger in to detect mismatched apic versions cpufreq: use work_on_cpu in acpi-cpufreq.c for drv_read and drv_write Miklos Szeredi (4): fuse: fix missing fput on error fuse: fuse_fill_super error handling cleanup fuse: destroy bdi on umount fuse: fix poll notify Oliver Neukum (2): USB: storage: add unusual devs entry USB: new id for ti_usb_3410_5052 driver Patrick McHardy (1): netfilter: ctnetlink: fix scheduling while atomic Paul Mundt (8): sh: Drop the BKL from sys_execve() on SH-5. sh: mach-x3proto: needs linux/irq.h. sh: sh7785lcr/highlander/hp6xx need linux/irq.h. sh: Kill off obsolete busses from arch/sh/Kconfig. serial: sh-sci: Fix up SH7720/SH7721 SCI build. sh: update defconfigs. nommu: Stub in vm_map_ram()/vm_unmap_ram()/vm_unmap_aliases(). dma-coherent: Restore dma_alloc_from_coherent() large alloc fall back policy. Pavel Roskin (2): dell_rbu: use scnprintf() instead of less secure sprintf() orinoco: use KERN_DEBUG for link status messages Pete Zaitcev (1): USB: usbmon: Implement compat_ioctl Peter Korsgaard (2): fsldma: check for NO_IRQ in fsl_dma_chan_remove() fsldma: print correct IRQ on mpc83xx Peter P Waskiewicz Jr (1): ixgbe: Fix usage of netif_*_all_queues() with netif_carrier_{off|on}() Peter Ujfalusi (1): ASoC: Add missing comma to SND_SOC_DAPM_SWITCH_E in soc-dapm.h Peter Zijlstra (4): itimers: remove the per-cpu-ish-ness locking, hpet: annotate false positive warning hrtimers: fix inconsistent lock state on resume in hres_timers_resume x86, mm: fix pte_free() Phil Dibowitz (3): USB: Remove ZTE modem from unusual_devices USB: unusual_dev: usb-storage needs to ignore a device USB: storage: Add another unusual_dev for off-by-one bug Phil Sutter (4): korina: fix loop back of receive descriptors korina: adjust headroom for new skb's also korina: drop leftover assignment pata-rb532-cf: remove set_irq_type from finish_io Philipp Zabel (1): power_supply: pda_power: Don't request shared IRQs w/ IRQF_DISABLED Rafael J. Wysocki (8): PCI PM: Restore standard config registers of all devices early Hibernation: Introduce system_entering_hibernation DMI: Introduce dmi_first_match to make the interface more flexible SATA: Blacklisting of systems that spin off disks during ACPI power off SATA AHCI: Blacklist system that spins off disks during ACPI power off SATA Sil: Blacklist system that spins off disks during ACPI power off SATA PIIX: Blacklist system that spins off disks during ACPI power off USB: Fix suspend-resume of PCI USB controllers Rakib Mullick (1): x86: fix section mismatch warning Ramax Lo (1): [ARM] 5365/1: s3cmci: Use new include path of dma.h Rami Rosen (1): rt2x00: fix a wrong parameter for __test_and_clear_bit() in rt2x00rfkill_free(). Randy Dunlap (2): kbuild: fix kbuild.txt typos mac80211: more kernel-doc fixes Reinette Chatre (1): iwlwifi: return NETDEV_TX_OK from _tx ops Richard Röjfors (1): macb: avoid lockup when TGO during underrun Robert Jennings (1): powerpc/pseries: Correct VIO bus accounting problem in CMO env. Robert Richter (1): oprofile: fix uninitialized use of struct op_entry Robie Basak (1): USB: ftdi_sio: added Alti-2 VID and Neptune 3 PID Roel Kluin (2): net/9p: fid->fid is used uninitialized USB: GADGET: fix !x & y Roland Dreier (5): IPoIB: Fix hang in napi_disable() if P_Key is never found IPoIB: Fix deadlock between ipoib_open() and child interface create IB/mlx4: Fix memory ordering problem when posting LSO sends Merge branches 'ehca', 'ipoib' and 'mlx4' into for-linus driver core: Convert '/' to '!' in dev_set_name() Russell King (6): [ARM] omap: ensure OMAP drivers pass a struct device to clk_get() [ARM] fix StrongARM-11x0 page copy implementation [ARM] clkdev: fix clock matching [ARM] omap: watchdog: allow OMAP watchdog driver on OMAP34xx platforms [ARM] omap: usb: thou shalt not provide empty release functions [ARM] fix section-based ioremap Rusty Russell (2): work_on_cpu: don't try to get_online_cpus() in work_on_cpu. work_on_cpu: Use our own workqueue. SUGIOKA Toshinobu (1): sh: fix unaligned and nonexistent address handling Sam Ravnborg (4): Revert "kbuild: strip generated symbols from *.ko" m68k,m68knommu: merge header files sparc64: fix readout of cpu/fpu type sparc64: fix modpost failure Sean MacLennan (1): powerpc/44x: Warp patches for the new NDFC driver Sebastian Siewior (1): m68knommu: use one exist from execption Seokmann Ju (1): [SCSI] qla2xxx: Add checks for a valid fcport in dev-loss-tmo/terminate_rport_io callbacks. Stephen Rothwell (4): IB/ehca: Fix printk format warnings from u64 type change IB/ehca: Use consistent types for ehca_plpar_hcall9() powerpc: Printing fix for l64 to ll64 conversion: phyp_dump.c powerpc: More printing warning fixes for the l64 to ll64 conversion Steve Glendinning (5): sh: convert ap325rxa platform to use smsc911x. sh: convert magicpanelr2 platform to use smsc911x. sh: convert rsk7203 to use smsc911x. usbnet: allow type check of devdbg arguments in non-debug build phy: Add suspend/resume support to SMSC PHYs Steven Noonan (1): kernel/fork.c: unused variable 'ret' Suresh Siddha (3): x86, pat: fix reserve_memtype() for legacy 1MB range x86: fix page attribute corruption with cpa() x86: fix PTE corruption issue while mapping RAM using /dev/mem Swaminathan S (1): USB: musb cppi dma fix Takashi Iwai (10): ALSA: hda - Fix (yet more) STAC925x issues Merge branch 'topic/asoc' into for-linus Merge branch 'topic/hda' into for-linus Merge branch 'topic/hda' into for-linus Merge branch 'topic/oss-cleanup' into for-linus Merge branch 'topic/virtuoso' into for-linus ALSA: hda - Add model entry for HP dv4 Merge branch 'fix/asoc' into for-linus Merge branch 'fix/hda' into for-linus Merge branch 'fix/asoc' into for-linus Tejun Heo (4): libata-sff: fix incorrect EH message libata: set NODEV_HINT for 0x7f status sata_nv: rename nv_nf2_hardreset() sata_nv: fix MCP5x reset Thomas Gleixner (2): debugobjects: add and use INIT_WORK_ON_STACK Merge branch 'core/debugobjects' into core/urgent Thomas Reitmayr (1): sata_mv: Properly initialize main irq mask Thomas Renninger (1): x86: mtrr fix debug boot parameter Timo Teras (1): af_key: initialize xfrm encap_oa Timur Tabi (1): ASoC: fix registration of the SoC card in the Freescale MPC8610 drivers Tomasz K (1): USB: cp2101 device Tony Lindgren (7): ARM: OMAP: Fix compile for various McBSP ARM: OMAP: Fix compile for palmte ARM: OMAP: Fix compile for beagle ARM: OMAP: Fix gpio.c compile on 15xx with CONFIG_DEBUGFS ARM: OMAP: Fix ASoC by enabling writes to XCCR and RCCR McBSP registers, v3 ARM: OMAP: Remove unused platform devices, v3 ARM: OMAP: Fix compile for h3 MMC Uwe Kleine-König (3): move wm8400-regulator's probe function to .devinit.text [NET] am79c961a: fix spin_lock usage Move jsm_remove_one to .devexit.text Vegard Nossum (2): security: introduce missing kfree inotify: clean up inotify_read and fix locking problems Vlad Yasevich (4): sctp: Fix crc32c calculations on big-endian arhes. sctp: Correctly start rtx timer on new packet transmissions. sctp: Properly timestamp outgoing data chunks for rtx purposes sctp: Fix another socket race during accept/peeloff Vladislav Zolotarov (1): bnx2x: tx_has_work should not wait for FW Wolfgang Glas (1): USB: cp2101: add fasttrax GPS evaluation kit vendor/product ID Wolfram Sang (4): i2c: Move at24 to drivers/misc/eeprom i2c: Move old eeprom driver to /drivers/misc/eeprom spi: Move at25 (for SPI eeproms) to /drivers/misc/eeprom eeprom: Move 93cx6 eeprom driver to /drivers/misc/eeprom Yossi Etigin (1): IPoIB: Do not print error messages for multicast join retries Yuri Tikhonov (1): dmaengine: fix dependency chaining Zhu Yi (1): iwlwifi: remove CMD_WANT_SKB flag if send_cmd_sync failure roel kluin (1): via-velocity: fix hot spin sware (1): USB: remove vernier labpro from ldusb ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:51 2009 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, J_CHICKENPOX_21,J_CHICKENPOX_31 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQpm0184051 for ; Thu, 21 May 2009 15:26:51 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQoKH184017; Thu, 21 May 2009 15:26:50 -0500 Date: Thu, 21 May 2009 15:26:50 -0500 Message-Id: <200905212026.n4LKQoKH184017@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.29-rc8, created. v2.6.29-rc8 X-Git-Refname: refs/tags/v2.6.29-rc8 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 73e37758f6b500a67d918528204832cc8f256516 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 annotated tag, v2.6.29-rc8 has been created at 73e37758f6b500a67d918528204832cc8f256516 (tag) tagging 041b62374c7fedc11a8a1eeda2868612d3d1436c (commit) replaces v2.6.29-rc7 tagged by Linus Torvalds on Thu Mar 12 19:39:36 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.29-rc8 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkm5x24ACgkQF3YsRnbiHLuRsQCbBipFxQfbKDiwTFq51jRn7nMz 9dAAn3LTEIj03LQFTyA3Vhn03cGe8kIH =oyeh -----END PGP SIGNATURE----- Adrian Hunter (1): mmc: fix data timeout for SEND_EXT_CSD Alex Chiang (2): PCIe: AER: during disable, check subordinate before walking PCIe: portdrv: call pci_disable_device during remove Alexander Duyck (1): PCI: Add PCI quirk to disable L0s ASPM state for 82575 and 82598 Alexey Dobriyan (3): [WATCHDOG] ks8695_wdt.c: 'CLOCK_TICK_RATE' undeclared xtensa: fix compilation somewhat devpts: remove graffiti Alon Bar-Lev (1): Blackfin arch: cleanup bfin_sport.h header and export it to userspace Andrew Klossner (1): hwmon: (f75375s) Remove unnecessary and confusing initialization Atsushi Nemoto (2): mtd: physmap: fix NULL pointer dereference in error path MIPS: TXx9: update defconfigs Bartlomiej Zolnierkiewicz (1): remove stale comment from Ben Dooks (1): mmc: s3cmci: fix s3c2410_dma_config() arguments. Benjamin Herrenschmidt (3): Merge commit 'gcl/merge' into merge hvc_console: Remove tty->low_latency on pseries backends radeonfb/aty128fb: Disable broken early resume hook for PowerBooks Bernd Schmidt (1): Blackfin arch: fix bug - jump_to_zero test case failed on noMPU kernel Brandon Ehle (1): sata_nv: fix module parameter description Brian Haley (2): IPv6: add "disable" module parameter support to ipv6.ko SCTP: change sctp_ctl_sock_init() to try IPv4 if IPv6 fails Brian Maly (1): x86: fix DMI on EFI Chris Mason (1): Btrfs: fix spinlock assertions on UP systems Chris Wilson (4): drm/i915: First recheck for an empty fence register. drm/i915: Check fence status on every pin. drm/i915: Check to see if we've pinned all available fences drm/i915: Protect active fences on i915 Christian Lamparter (1): p54: fix race condition in memory management Christoph Hellwig (4): jsflash: stop defining MAJOR_NR xfs: prevent kernel crash due to corrupted inode log format xfs: prevent lockdep false positive in xfs_iget_cache_miss xfs: only issues a cache flush on unmount if barriers are enabled Dan Williams (4): md: fix deadlock when stopping arrays I/OAT: fail self-test if callback test reaches timeout fsldma: fix off by one in dma_halt dmatest: fix use after free in dmatest_exit Daniel Glöckner (1): x86, math-emu: fix init_fpu for task != current Daniel Lezcano (1): netns: fix addrconf_ifdown kernel panic Daniel Mack (2): drivers/w1/masters/w1-gpio.c: fix read_bit() ds2760_battery.c: fix division by zero Darrick J. Wong (3): lm85: fix the version check that broke adt7468 probing lm85: add VRM10 support for adt7468 chip hwmon: (lm90) Document support for the MAX6648/6692 chips Dave Jones (2): Revert "[CPUFREQ] Disable sysfs ui for p4-clockmod." [CPUFREQ] Add p4-clockmod sysfs-ui removal to feature-removal schedule. David S. Miller (4): sparc64: Fix lost interrupts on sun4u. net: Fix missing dev->neigh_setup in register_netdevice(). vlan: Fix vlan-in-vlan crashes. Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ Dhaval Giani (1): kernel/user.c: fix a memory leak when freeing up non-init usernamespaces users Dmitry Torokhov (1): Input: serio - fix protocol number for TouchIT213 Enrik Berkhan (1): Blackfin arch: fix bug - The SPORT_HYS bit is not set for BF561 0.5 Eric Anholt (2): drm/i915: Fix bad \n in MTRR failure notice. drm/i915: fix 945 fence register writes for fence 8 and above. Eric Dumazet (1): rcu: increment quiescent state counter in ksoftirqd() Eric Sandeen (1): ext4: fix ext4_free_inode() vs. ext4_claim_inode() race Eric Sesterhenn (1): I/OAT: list usage cleanup Eric W. Biederman (3): netns: Fix icmp shutdown. tcp: Like icmp use register_pernet_subsys netns: Remove net_alive FUJITA Tomonori (1): libata: fix dma_unmap_sg misuse Faisal Latif (1): RDMA/nes: Don't allow userspace QPs to use STag zero Friedrich Oslage (1): sunhme: Fix qfe parent detection. Gilles Espinasse (1): kbuild: remove unused -r option for module-init-tool depmod Graf Yang (2): Blackfin arch: Fix bug - make ksz8893m driver available when bfin_mac is enabled Blackfin arch: update default kernel config, select KSZ8893M driver for BF518 Grant Likely (1): powerpc/4xx: Enable SERIAL_OF support by default for Virtex platforms Guennadi Liakhovetski (1): powerpc: fix linkstation and storcenter compilation breakage Hannes Eder (1): ide: NULL noise: drivers/ide/ide-*.c Heiko Carstens (1): Fix fixpoint divide exception in acct_update_integrals Helge Bahmann (1): drm: fix double lock typo Huang Ying (1): x86: EFI: Back efi_ioremap with init_memory_mapping instead of FIX_MAP Ingo Molnar (1): x86: work around Fedora-11 x86-32 kernel failures on Intel Atom CPUs Jarek Poplawski (1): pkt_sched: act_police: Fix a rate estimator test. Jean Delvare (2): hwmon: (abituguru3) Fix I/O error handling hwmon: (it87) Properly decode -128 degrees C temperature Jens Axboe (2): cciss: remove 30 second initial timeout on controller reset block: fix missing bio back/front segment size setting in blk_recount_segments() Jeremy Higdon (1): [IA64] fix PCI DMA flag propagation on SN (Altix) with PICs Jie Zhang (1): Blackfin arch: fix bug - gdb signull case make trunk kernel panic frequently Jody McIntyre (1): trivial: fix bad links in the ext2 and ext3 documentation Johannes Weiner (1): dmaengine: update kerneldoc Josh Hunt (2): kbuild: fix mkspec to cleanup RPM_BUILD_ROOT kbuild: fix 'make rpm' when CONFIG_LOCALVERSION_AUTO=y and using SCM tree Justin P. Mattock (1): kbuild: fix C libary confusion in unifdef.c due to getline() KOSAKI Motohiro (1): memcg: use correct scan number at reclaim Kris Shannon (1): Fix kernel NULL pointer dereference in xen-blkfront Kristian Høgsberg (1): drm: Return EINVAL on duplicate objects in execbuffer object list Kyle McMartin (1): i915: add newline to i915_gem_object_pin failure msg Leann Ogasawara (1): x86: add Dell XPS710 reboot quirk Li Zefan (1): vfs: add missing unlock in sget() Linus Torvalds (37): Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'fix/hda' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-linus Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'sh/for-2.6.29' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'fixes-20090312' of git://git.kernel.org/pub/scm/linux/kernel/git/willy/pci Merge branch 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes bitmap: fix end condition in bitmap_find_free_region Linus 2.6.29-rc8 Lubomir Rintel (1): intel-agp: fix a panic with 1M of shared memory, no GTT entries Luotao Fu (1): ipu_idmac: fix spinlock type Maciej Sosnowski (6): I/OAT: add verification for proper APICID_TAG_MAP setting by BIOS I/OAT: do not set DCACTRL_CMPL_WRITE_ENABLE for I/OAT ver.3 I/OAT: fail initialization on zero channels detection I/OAT: cancel watchdog before dma remove I/OAT: set tcp_dma_copybreak to 256k for I/OAT ver.3 I/OAT: update driver version and copyright dates Magnus Damm (1): video: deferred io cleanup fix for sh_mobile_lcdcfb Mark Brown (1): mfd: add support for WM8351 revision B Markus Metzger (2): x86, bts: remove bad warning x86, pebs: correct qualifier passed to ds_write_config() from ds_request_pebs() Matt Carlson (1): tg3: Fix 5906 link problems Meelis Roos (2): net: fix tokenring license tmspci: fix request_irq race Michael Ellerman (1): powerpc/pseries: The RPA PCI hotplug driver depends on EEH Michael Hennerich (6): Blackfin arch: Make IRQ_EPPIx_ERROR naming consistent Blackfin arch: Enable Write Back Cache on all Blackfin Boards Blackfin arch: PM_BFIN_WAKE_GP: update help Blackfin arch: Fix BUG - kernel fails to build in pm.c when allow wakeup fromi standby by GPIO Blackfin arch: fix bug - On bf548-ezkit, ethernet fails to work after wakeup from "mem" Blackfin arch: SPI_MMC is now mainlined MMC_SPI Michael Kerrisk (1): MAINTAINERS: downgrade support for man-pages Michael Spang (1): acer-wmi: fix regression in backlight detection Mike Frysinger (10): Blackfin arch: drop untested and useless "generic" board file Blackfin arch: use common KGDB_TESTS rather than our own KGDB_TESTCASE Blackfin arch: fix compile failure when missing the anomaly definition Blackfin arch: update anomaly sheets to match latest public info Blackfin arch: make sure people do not set the kernel load address too high Blackfin arch: mark init_pda as __init as only __init funcs all it Blackfin arch: remove spurious dash when dcache is off Blackfin arch: add stubs for anomalies 447 and 448 Blackfin arch: remove duplicated ANOMALY_05000448 ifdef check Blackfin arch: disable legacy /proc/scsi/ support by default Nick Piggin (1): fs: new inode i_state corruption fix Nobuhiro Iwamatsu (1): sh: Add media/soc_camera.h to board setup of Renesas AP325RXA OGAWA Hirofumi (1): Fix _fat_bmap() locking Oleg Nesterov (2): copy_process: fix CLONE_PARENT && parent_exec_id interaction pipe_rdwr_fasync: fix the error handling to prevent the leak/crash Pablo Neira Ayuso (1): netlink: invert error code in netlink_set_err() Pantelis Koukousoulas (1): drm: fix EDID parser problem with positive/negative hsync/vsync Patrick McHardy (1): bonding: Fix device passed into ->ndo_neigh_setup(). Paul E. McKenney (2): idr: make idr_remove_all() do removal -before- free_layer() rcu: documentation 1Q09 update Peter Korsgaard (1): dm9601: new vendor/product IDs Phil Sutter (2): [WATCHDOG] rc32434_wdt: fix watchdog driver [WATCHDOG] rc32434_wdt: fix sections Philippe Gerum (1): Blackfin arch: Update adeos blackfin arch patch to 1.9-00 Phillip Lougher (3): Squashfs: Fix oops when reading fsfuzzer corrupted filesystems Squashfs: fix documentation typo, Cramfs filesystem limit is 256 MiB Squashfs: Valid filesystems are flagged as bad by the corrupted fs patch Pierre Willenbrock (1): drm/i915: Don't restore palettes through VGA registers. Prakash Punnoor (2): pci: don't disable too many HT MSI mapping pci: Fix typo in message while disabling HT MSI mapping Ralf Baechle (2): MIPS: compat: Implement is_compat_task. MIPS: IP27: Enable RAID5 module Randy Dunlap (1): menu: fix embedded menu snafu Reinette Chatre (1): iwlwifi: fix error flow in iwl*_pci_probe Renzo Davoli (1): UML on UML fixed: it did not start Robert Hancock (1): libata: Don't trust current capacity values in identify words 57-58 Robin Getz (1): Blackfin arch: Random read/write errors are a bad thing Roel Kluin (12): net: more timeouts that reach -1 net pcmcia: worklimit reaches -1 aoe: error printed 1 too early sungem: another error printed one too early sparc64: wait_event_interruptible_timeout may return -ERESTARTSYS iop-adma, mv_xor: fix mem leak on self-test setup failure Squashfs: frag_size should be signed, as it can hold an error result loop: don't increment p->offset with (size_t) -EINVAL [WATCHDOG] gef_wdt.c: fsl_get_sys_freq() failure not noticed ide: expiry() returns int, negative expiry() return values won't be noticed cfg80211: test before subtraction on unsigned mm: get_nid_for_pfn() returns int Russell King (1): OMAP: enable smc911x support for LDP platform Rusty Russell (4): lguest: fix crash 'unhandled trap 13 at ' lguest: fix for CONFIG_SPARSE_IRQ=y cpumask: tsk_cpumask for accessing the struct task_struct's cpus_allowed. cpumask: mm_cpumask for accessing the struct mm_struct's cpu_vm_mask. Samuel CUELLA (1): i810: fix kernel crash fix when struct fb_var_screeninfo is supplied Sergei Shtylyov (2): ide-iops: fix odd-length ATAPI PIO transfers ata: add CFA specific identify data words Shinya Kuribayashi (1): MIPS: NEC VR5500 processor support fixup Sonic Zhang (3): Blackfin arch: Disable NAND option by default Blackfin arch: fix bug - kgdb fails to continue after setting breakpoint on bf561-ezkit kernel with smp patch Blackfin arch: Fix bug - KGDB single step into the middle of a 4 bytes instruction on bf561 after soft bp is hit Stanislaw Gruszka (3): ide: allow to wrap interrupt handler ide: add at91_ide driver AT91: initialize Compact Flash on AT91SAM9263 cpu Stephen Hemminger (2): net: Avoid race between network down and sysfs ipv6: Fix sysctl unregistration deadlock Steven King (2): m68knommu: m5206e build fix m68knommu: m528x build fix Stuart Bennett (1): x86 mmiotrace: fix remove_kmmio_fault_pages() Stuart Hayes (1): libata: change drive ready wait after hard reset to 5s Takashi Iwai (2): ALSA: hda - Fix typos in slave controls in patch_sigmatel.c ALSA: hda - Fix headphone-detect regression with multiple HP jacks Tejun Heo (3): libata: align ap->sector_buf libata: don't use on-stack sense buffer libata: make sure port is thawed when skipping resets Tom Parker (1): Blackfin arch: fix bug - Error if one serial has hardware flow control and the other doesn't Tony Breeds (1): powerpc: Run sbc610 USB fixup code only on the appropriate platform. Vlad Yasevich (1): sctp: fix crash during module unload Wei Yongjun (1): sctp: fix kernel panic with ERROR chunk containing too many error causes Will Newton (1): mtd_dataflash: fix probing of AT45DB321C chips. Wim Van Sebroeck (1): [WATCHDOG] orion5x_wdt.c: 'ORION5X_TCLK' undeclared Wu Fengguang (1): proc: fix kflags to uflags copying in /proc/kpageflags Xiaotian Feng (1): MIPS: Fix build of non-CONFIG_SYSVIPC version of sys_32_ipc Xose Vazquez Perez (2): rt2x00 : more devices to rt2500usb.c rt2x00 : more devices to rt73usb.c Yinghai Lu (1): x86/agp: tighten check to update amd nb aperture akpm@linux-foundation.org (1): uml: fix WARNING: vmlinux: 'memcpy' exported twice etienne (1): smack: fixes for unlabeled host support peerchen (1): ahci: Add the Device IDs for MCP89 and remove IDs of MCP7B to/from ahci.c ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:58 2009 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, J_CHICKENPOX_21,J_CHICKENPOX_26 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQwbB184138 for ; Thu, 21 May 2009 15:26:58 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQuJ1184098; Thu, 21 May 2009 15:26:56 -0500 Date: Thu, 21 May 2009 15:26:56 -0500 Message-Id: <200905212026.n4LKQuJ1184098@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.30-rc2, created. v2.6.30-rc2 X-Git-Refname: refs/tags/v2.6.30-rc2 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 7c941a7798a5169ee0dd69a9e8d5c40ceb702023 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 annotated tag, v2.6.30-rc2 has been created at 7c941a7798a5169ee0dd69a9e8d5c40ceb702023 (tag) tagging 0882e8dd3aad33eca41696d463bb896e6c8817eb (commit) replaces v2.6.30-rc1 tagged by Linus Torvalds on Tue Apr 14 13:51:57 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.30-rc2 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAknk93IACgkQF3YsRnbiHLsSswCfQBrEK/y19fyOzKkWfg1iIuAo TDcAn3SOvXSDAcWbFSGzzFgRw7wbf+rn =etoF -----END PGP SIGNATURE----- Adrian McMenamin (1): Input: add support for the Maple mouse on the SEGA Dreamcast Alan Cox (5): x86: DMI match for the Dell DXP061 as it needs BIOS reboot tty: MAX3100 cdc-acm: Fix long standing abuse of tty->low_latency tty: Fix leak in ti-usb parport: Fix various uses of parport_pc Alasdair G Kergon (3): dm: rearrange dm_wq_work dm: split DMF_BLOCK_IO flag into two dm: simplify dm_request loop Alex Nixon (1): Xen: Add virt_to_pfn helper function Alex Riesen (1): netfilter: fix selection of "LED" target in netfilter Alexander Beregalov (1): befs: fix build on parisc Alexander Duyck (2): igbvf: add new driver to support 82576 virtual functions igb: remove sysfs entry that was used to set the number of vfs Alexey Dobriyan (1): aio: remove INIT_KIOCTX Andi Kleen (2): asm-generic/siginfo.h: update NSIGTRAP definition kernel/sys.c: clean up sys_shutdown exit path Andrea Righi (2): fbdev: fix info->lock deadlock in fbcon_event_notify() res_counter: update documentation Andrew Morton (2): work_on_cpu(): rewrite it to create a kernel thread on demand cpufreq: use smp_call_function_[single|many]() in acpi-cpufreq.c Andy Grover (2): x86: Document get_user_pages_fast() mm: document get_user_pages_fast() Andy Whitcroft (1): Input: psmouse - add newline to OLPC HGPK touchpad debugging Atsushi Nemoto (3): tx4939ide: remove wmb() tx493[89]ide: Remove big endian version of tx493[89]ide_tf_{load,read} tx4939ide: Fix tx4939ide_{in,out}put_data_swap argument Balaji Rao (2): pcf50633_charger: Enable periodic charging restart pcf50633_charger: Remove unused mbc_set_status function Bartlomiej Zolnierkiewicz (3): ide-cd: convert cdrom_decode_status() to use switch statements ide-cd: unify handling of fs and pc requests in cdrom_decode_status() ide-cd: fix intendation in cdrom_decode_status() Bastian Blank (1): bnx2: Don't use reserved names Ben Gamari (1): drm/i915: Implement batch and ring buffer dumping Ben Hutchings (1): i2c: Fix sparse warnings for I2C_BOARD_INFO() Bharata B Rao (3): cpuacct: make cpuacct hierarchy walk in cpuacct_charge() safe when rcupreempt is used -v2 cpuacct: add per-cgroup utime/stime statistics memcg: fix documentation Bjorn Helgaas (7): ACPI: thermal: use .notify method instead of installing handler directly ACPI: video: use .notify method instead of installing handler directly fujitsu-laptop: use .notify method instead of installing handler directly fujitsu-laptop: use .notify method instead of installing hotkey handler directly panasonic-laptop: use .notify method instead of installing handler directly sony-laptop: use .notify method instead of installing handler directly ACPI: WMI: use .notify method instead of installing handler directly Borislav Petkov (5): ide-cd: move status checking into the IRQ handler ide-cd: carve out an ide_cd_breathe()-helper for fs write requests ide-cd: respect REQ_QUIET for fs requests in cdrom_decode_status() ide-cd: update debugging support ide-cd: reverse NOT_READY sense key logic Chien Tung (3): RDMA/nes: Fix SFP+ PHY initialization RDMA/nes: Add wide_ppm_offset parm for switch compatibility RDMA/nes: Add support for new SFP+ PHY Dan Carpenter (1): niu: Fix error handling Daniel Mack (3): Input: generic driver for rotary encoders on GPIOs [ARM] pxa/colibri: provide MAC address from ATAG_SERIAL [ARM] pxa/colibri: get rid of set_irq_type() Daniel Mierswa (2): Input: atkbd - consolidate force release quirk setup Input: atkbd - add quirk for Fujitsu Siemens Amilo PA 1510 Darren Hart (1): futex: comment requeue key reference semantics Dave Anderson (1): hfs: fix memory leak when unmounting Dave Chinner (9): xfs: validate log feature fields correctly xfs: fix double free of inode xfs: prevent unwritten extent conversion from blocking I/O completion xfs: inform the xfsaild of the push target before sleeping xfs: use xfs_sync_inodes() for device flushing xfs: make inode flush at ENOSPC synchronous xfs: block callers of xfs_flush_inodes() correctly xfs: flush delayed allcoation blocks on ENOSPC in create xfs: remove xfs_flush_space David Brownell (2): leds: just ignore invalid GPIOs in leds-gpio spi: spi_write_then_read() bugfixes David Howells (11): keys: Handle there being no fallback destination keyring for request_key() FRV: Use in NOMMU mode MN10300: Kill MN10300's own profiling Kconfig FRV: Fix indentation errors to keep git-am happy when moving arch header files FRV: Move to arch/frv/include/asm/ Move arch headers from include/asm-mn10300/ to arch/mn10300/include/asm/. Separate out the proc- and unit-specific header directories from the general kbuild: make it possible for the linker to discard local symbols from vmlinux mm: point the UNEVICTABLE_LRU config option at the documentation mm: reformat the Unevictable-LRU documentation Fix lpfc_parse_bg_err()'s use of do_div() David S. Miller (9): sparc64: get_cells() can't be marked __init sparc64: Fix section mismatch warnings in power driver. sparc64: Fix section mismatch warnings in PCI controller drivers. sparc: Fix section mismatch warnings in cs4231 sound driver. serial: sunsu: sunsu_kbd_ms_init needs to be __devinit sparc64: add_node_ranges() must be __init sparc: Hook up sys_preadv and sys_pwritev Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6 niu: Fix unused variable warning. David Woodhouse (8): Revert "fix modules_install via NFS" Partially revert "V4L/DVB (9533): cx88: Add support for TurboSight TBS8910 DVB-S PCI card" firmware/WHENCE: Add missing origin information for Ambassador atmsar11.fw firmware: Remove newly-added slicoss and sxg firmware images Add README.AddingFirmware file. Basically telling people not to. x86, intel-iommu: fix X2APIC && !ACPI build failure qla1280: Fix off-by-some error in firmware loading. intel-iommu: Avoid panic() for DRHD at address zero. Dmitry Eremin-Solenikov (1): [ARM] pxa/csb701: do not register devices on non-csb726 boads Dmitry Torokhov (5): Merge commit 'v2.6.29-rc7' into next Input: fix polling of /proc/bus/input/devices Input: arrange drivers/input/misc/Makefile in alphabetical order Input: i8042 - add HP DV9700 to the noloop list Merge branch 'next' into for-linus Don Wood (1): RDMA/nes: Fix incorrect casts on 32-bit architectures Eric Anholt (2): drm/i915: Correctly set the write flag for get_user_pages in pread. drm/i915: Allow tiling of objects with bit 17 swizzling by the CPU. Eric Dumazet (1): netfilter: ip6tables regression fix Eric Sandeen (1): include/linux/fiemap.h: include types.h now that it's exported Faisal Latif (2): RDMA/nes: Fix error handling issues RDMA/nes: Fix nes_nic_cm_xmit() error handling Felix Blyakher (1): Merge branch 'master' into for-linus Fenghua Yu (1): Intel-IOMMU Alignment Issue in dma_pte_clear_range() Ferenc Wagner (1): drm/i915: indicate framebuffer restore key in SysRq help message Florian Fainelli (1): r6040: set MODULE_VERSION Florian Mickler (1): drm/i915: Fix use of uninitialized var in 40a5f0de Francesco VIRLINZI (1): sh: intc: Added resume from hibernation support to the intc Frederic Weisbecker (3): tracing/syscalls: use a dedicated file header lockdep: warn about lockdep disabling after kernel taint lockdep: continue lock debugging despite some taints From: Thiemo Nagel (1): ext4: check block device size on mount Gautham R Shenoy (1): sched: Print sched_group::__cpu_power in sched_domain_debug Geert Uytterhoeven (5): ide: Fix host drivers that need IRQF_SHARED ide: falconide/q40ide - Use __ide_mm_{in,out}sw() for data namespaces: move get_mq() inside #ifdef CONFIG_SYSCTL at24: make input buffers of at24_*write() const at25: make input buffers of at25_*write() const Grant Grundler (1): ide: remove wmb() from ide-dma-sff.c and scc_pata.c Grant Likely (1): xsysace: Fix dereferencing of cf_id after hd_driveid removal H. Peter Anvin (1): x86, setup: un-resequence mode setting for VGA 80x34 and 80x60 modes Hannes Eder (2): NULL noise: drivers/platform/x86/panasonic-laptop.c NULL noise: arch/x86/xen/smp.c Heiko Carstens (1): mutex: have non-spinning mutexes on s390 by default Helge Deller (1): Input: hilkbd - fix crash when removing hilkbd module Herbert Xu (1): module: try_then_request_module must wait Hidetoshi Seto (2): posixtimers, sched: Fix posix clock monotonicity x86: smarten /proc/interrupts output for new counters Huang Weiyi (5): ACPI: cpufreq: remove dupilcated #include ide: remove unused #include hp_accel: remove unused #include sysrq: remove duplicated #include microblaze: remove duplicated #include's Hugh Dickins (2): shmem: respect MAX_LFS_FILESIZE x86 microcode: revert some work_on_cpu Ian Campbell (2): xen: resume interrupts before system devices. xen: honour VCPU availability on boot Ingo Molnar (5): Merge commit 'v2.6.30-rc1' into core/urgent Merge commit 'v2.6.30-rc1' into sched/urgent sched: refresh MAINTAINERS entry Merge commit 'v2.6.30-rc1' into x86/urgent lockdep: warn about lockdep disabling after kernel taint, fix Jan Beulich (1): kbuild: remove pointless strdup() on arguments passed to new_module() in modpost Jan Dumon (1): MAINTAINERS: switch maintainer of the hso driver Jan Kara (3): ext3: Try to avoid starting a transaction in writepage for data=writepage jbd: update locking coments ext2: fix data corruption for racing writes Jarkko Lavinen (2): mmc: Accept EXT_CSD rev 1.3 since it is backwards compatible with 1.2 omap_hsmmc: Do not expect cmd/data to be non-null when CC/TC occurs Jaswinder Singh (2): firmware: convert av7110 driver to request_firmware() Remove fdump tool for av7110 firmware Jaswinder Singh Rajput (1): x86: cpu_debug remove execute permission Jean Delvare (6): ACPI: Adjust Kelvin offset to match local implementation i2c-algo-pca: Fix use of uninitialized variable in debug message i2c-voodoo3: Deprecate in favor of tdfxfb i2c: Let new-style drivers implement attach_adapter MAINTAINERS: bluesmoke-devel list is moderated for non-subscribers edac: use to_delayed_work() Jeff Garzik (1): [libata] sata_via: kill uninit'd var warning Jeff Haran (1): edac: fix local pci_write_bits32 Jeremy Fitzhardinge (13): xen: disable preempt for leave_lazy_mmu xen: separate p2m allocation from setting xen: split construction of p2m mfn tables from registration xen: clean up xen_load_gdt xen: make xen_load_gdt simpler xen: remove xen_load_gdt debug xen: mask XSAVE from cpuid x86-64: remove PGE from must-have feature list xen/mmu: some early pagetable cleanups xen/mmu: weaken flush_tlb_other test xen: set _PAGE_NX in __supported_pte_mask before pagetable construction xen: clean up gate trap/interrupt constants xen: add FIX_TEXT_POKE to fixmap Joe Perches (20): Add scripts/get_maintainer.pl MAINTAINERS - Add file patterns MAINTAINERS - Standardize style MAINTAINERS - Remove HP Fibre Channel HBA no longer in tree MAINTAINERS - standardize "T: git urls" MAINTAINERS - Add Linus Torvalds' git MAINTAINERS - i2c_tiny_usb T: should be W: MAINTAINERS - Update FPU Emulator contact address and web page MAINTAINERS - Remove x86/Voyager no longer in tree MAINTAINERS - Remove cyblafb frame buffer no longer in tree MAINTAINERS - Coalesce sections "DVB" and "Video for Linux" MAINTAINERS - Update M68K patterns MAINTAINERS - Update DRIVER CORE patterns MAINTAINERS - Add missing "/" to some pattern directories MAINTAINERS - Add additional patterns MAINTAINERS - Update Freescale sound patterns scripts/get_maintainer.pl - Allow multiple files on command line MAINTAINERS - Update frv arch patterns MAINTAINERS - Update MN10300 patterns include/video/cyblafb.h: remove it, it's unused Johannes Berg (1): Input: stop autorepeat timer on key release Jonathan Cameron (1): hwmon: sht15 humidity sensor driver Justin Waters (2): [ARM] 5445/1: AT91: Remove flexible array from USBH platform data [ARM] 5446/1: ohci-at91: Limit vbus_pin assignment to the size of the array KAMEZAWA Hiroyuki (1): memcg: remove warning when CONFIG_DEBUG_VM=n Kevin Hilman (1): omap_hsmmc: Flush posted write to IRQ Kirill Smelkov (1): kbuild: fix a few typos in top-level Makefile Krzysztof Helt (1): cirrusfb: do not allow unsupported pixel depth Kuninori Morimoto (4): sh: urquell: Add board comment sh: urquell: Fix up address mapping in board comments. sh: ap325: use edge control for ov772x camera sh: sh7786: modify usb setup timeout judgment bug. Lai Jiangshan (4): tracing: disable seeking for trace_pipe_raw tracing: allocate page when needed tracing: update file->f_pos when splice(2) it tracing: fix splice return too large Leandro Dorileo (1): tty: Update some of the USB kernel doc Len Brown (3): ACPI: delete acpi_device.g_list ACPICA: delete check for AML access to port 0x81-83 Merge branches 'release', 'APERF', 'ARAT', 'misc', 'kelvin', 'device-lock' and 'bjorn.notify' into release Lennert Buytenhek (1): mv643xx_eth: don't reset the rx coal timer on interface up Li Zefan (8): blktrace: pass the right pointer to kfree() tracing: consolidate documents tracing: fix document references tracing/filters: NIL-terminate user input filter tracing/filters: fix NULL pointer dereference tracing/filters: allow user input integer to be oct or hex tracing/filters: return proper error code when writing filter file Documentation/sysctl/net.txt: fix a typo Linus Torvalds (48): Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge branch 'ext3-latency-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge git://git.infradead.org/battery-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm Merge branches 'core-fixes-for-linus', 'irq-fixes-for-linus' and 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-frv Merge git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-mn10300 Merge git://git.infradead.org/~dwmw2/firmware-2.6 Remove stale include/asm-mn10300/.gitignore file async: Fix module loading async-work regression Revert "ACPI battery: fix async boot oops" Merge branch 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'gm_20090410' of git://repo.or.cz/linux-2.6/trivial-mods Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.infradead.org/iommu-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'for-rc1/xen/core' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen Fix quilt merge error in acpi-cpufreq.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'fixes-for-linus' of git://git.monstr.eu/linux-2.6-microblaze Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'drm-intel-next' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Linux 2.6.30-rc2 Linus Walleij (1): [ARM] 5447/1: Add SZ_32K Ma Ling (1): drm/i915: sync hdmi detection by hdmi identifier with 2D Marcin Slusarz (1): x86: fix wrong section of pat_disable & make it static Marek Vasut (4): [ARM] pxa: Palm Tungsten E2 basic support [ARM] pxa: PalmTE2 support for battery, UDC, IrDA and backlight [ARM] pxa: Add support for suspend on PalmTX, T5 and LD [ARM] pxa/cm-x2xx: fix ucb1400 not being registered Mark Brown (3): Input: wm97xx - use disable_irq_nosync() for Mainstone Input: add accelerated touchscreen support for Marvell Zylonite [ARM] pxa: register AC97 controller devices Martin K. Petersen (1): dm: add integrity support Masami Hiramatsu (2): x86: fix set_fixmap to use phys_addr_t x86: fix set_fixmap to use phys_addr_t Matthew Garrett (1): efifb: exit if framebuffer address is invalid Maxime Bizon (1): kbuild: fix spurious initramfs rebuild Michael Ellerman (1): mm: add documentation describing what tsk->active_mm means vs tsk->mm Michael Hennerich (3): Input: bf54x-keys - fix typo in warning Input: add AD7877 touchscreen driver Input: add AD7879 Touchscreen driver Michal Januszewski (5): fbdev: fix color component field length documentation uvesafb: fix color component length for pseudocolor modes s3fb: fix color component length for pseudocolor modes sa1100fb: fix color component length for pseudocolor modes sisfb: fix color component length for pseudocolor modes Michal Simek (66): microblaze_v8: Cpuinfo handling microblaze_v8: Open firmware files microblaze_v8: Platform bus registration microblaze_v8: exception handling microblaze_v8: Signal support microblaze_v8: Selfmodified code microblaze_v8: cache support microblaze_v8: Generic dts file for platforms microblaze_v8: kernel modules support microblaze_v8: lmb include file microblaze_v8: PVR support, cpuinfo support microblaze_v8: defconfig file microblaze_v8: assembler files head.S, entry-nommu.S, syscall_table.S microblaze_v8: vmlinux.lds.S - linker script microblaze_v8: supported function for memory - kernel/lib microblaze_v8: checksum support microblaze_v8: early_printk support microblaze_v8: uaccess files microblaze_v8: heartbeat file microblaze_v8: setup.c, setup.h - system setting microblaze_v8: asm-offsets.c microblaze_v8: process and init task function microblaze_v8: delay.h, timex.h microblaze_v8: ptrace support microblaze_v8: IPC support microblaze_v8: traps support microblaze_v8: memory inicialization, MMU, TLB microblaze_v8: page.h, segment.h, unaligned.h microblaze_v8: includes SHM*, msgbuf microblaze_v8: bug headers files microblaze_v8: definitions of types microblaze_v8: ioctl support microblaze_v8: io.h IO operations microblaze_v8: headers for executables format FLAT, ELF microblaze_v8: dma support microblaze_v8: headers for irq microblaze_v8: atomic.h bitops.h swab.h byteorder.h microblaze_v8: headers pgalloc.h pgtable.h microblaze_v8: system.h processor.h microblaze_v8: clinkage.h linkage.h sections.h kmap_types.h microblaze_v8: stats headers microblaze_v8: termbits.h termios.h microblaze_v8: sigcontext.h siginfo.h microblaze_v8: headers simple files - empty or redirect to asm-generic microblaze_v8: gpio.h, serial.h microblaze_v8: namei.h microblaze_v8: headers files entry.h current.h mman.h registers.h sembuf.h microblaze_v8: device.h param.h topology.h microblaze_v8: pool.h socket.h microblaze_v8: fcntl.h sockios.h ucontext.h microblaze_v8: unistd.h microblaze_v8: string.h thread_info.h microblaze_v8: Kbuild file microblaze_v8: pci headers microblaze_v8: syscalls.h microblaze_v8: Interrupt handling and timer support microblaze_v8: Kconfig patches microblaze_v8: Makefiles for Microblaze cpu microblaze_v8: Uartlite for Microblaze microblaze_v8: Add MAINTAINERS fragment microblaze: Fix problem with removing zero length files microblaze: Add missing empty ftrace.h file microblaze: Add TIMESTAMPING constants to socket.h microblaze: Simplify copy_thread() microblaze: struct device - replace bus_id with dev_name() microblaze: Add missing FILE tag to MAINTAINERS Mike Rapoport (3): Input: wm97xx - add BTN_TOUCH event to wm97xx to use it with Android Input: ucb1400_ts, mainstone-wm97xx - add BTN_TOUCH events [ARM] pxa/em-x270: add libertas device registration Miklos Szeredi (2): fuse: fix argument type in fuse_get_user_pages() fuse: fix "direct_io" private mmap Mikulas Patocka (6): dm: remove limited barrier support dm: rework queueing and suspension dm: remove dm_request loop dm: implement basic barrier support dm kcopyd: prepare for callback race fix dm kcopyd: fix callback race Nathan Lynch (1): sched: do not count frozen tasks toward load Nikanth Karthikesan (1): init/initramfs: fix warning with CONFIG_BLK_DEV_RAM=n Nobuhiro Iwamatsu (1): nommu: fix typo vma->pg_off to vma->vm_pgoff Oleg Nesterov (4): posix-timers: fix RLIMIT_CPU && fork() posix-timers: fix RLIMIT_CPU && setitimer(CPUCLOCK_PROF) kthread: move sched-realeted initialization from kthreadd context ptrace: fix exit_ptrace() vs ptrace_traceme() race Or Gerlitz (1): IPoIB: Document newish features Pablo Neira Ayuso (1): netfilter: ctnetlink: fix regression in expectation handling Paul Menzel (1): drivers/video/aty/radeon_base.c: fix typo in comment Paul Mundt (8): sh: wire up sys_preadv/sys_pwritev() syscalls. sh: Provide cpumask_of_pcibus() to fix NUMA build. sh: Add support for DMA API debugging. sh: Plug in support for ARCH=sh64 using sh SRCARCH. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 MAINTAINERS: Update sh architecture file patterns. sh: Pre-allocate a reasonable number of DMA debug entries. sh: Add in PCI bus for DMA API debugging. Paulius Zaleckas (3): [WATCHDOG] remove ARM26 sections imxmmc: init-exit rework imxmmc: move RSSR BLR Peter Korsgaard (1): kbuild: use git svn instead of git-svn in setlocalversion Peter Zijlstra (1): mm: move the scan_unevictable_pages sysctl to the vm table Phil Sutter (1): Input: add driver for S1 button of rb532 Philipp Zabel (2): pda_power: Add optional OTG transceiver and voltage regulator support [ARM] pxa/magician: Enable bq24022 regulator for gpio_vbus and pda_power Pierre Ossman (1): New mail address for Pierre Ossman Rafael J. Wysocki (1): PM/Hibernate: Wait for SCSI devices scan to complete during resume Rakib Mullick (1): x86: Fix section mismatches in mpparse Randy Dunlap (5): timers: add missing kernel-doc ethoc: fix library build errors docbook: make cleandocs MAINTAINERS: fix Andreas's email address filemap: fix kernel-doc warnings Randy Robertson (1): initramfs: fix initramfs to work with hardlinked init Robin Holt (4): sgi-xpc: update SGI XP/XPC/XPNET maintainer sgi-xpc: prevent false heartbeat failures sgi-xpc: implement opencomplete messaging sgi-xpc: clean up numerous globals Roel Kluin (1): Input: pc110pad - use no_pci_devices() Roland Dreier (4): IB/mlx4: Use pgprot_writecombine() for BlueFlame pages mlx4_core: Don't leak mailbox for SET_PORT on Ethernet ports IPoIB: Avoid free_netdev() BUG when destroying a child interface Merge branches 'cma', 'cxgb3', 'ipoib', 'mlx4' and 'nes' into for-next Roland McGrath (1): ptrace: some checkpatch fixes Russell King (2): [ARM] omap: fix omap1 clock usecount decrement bug Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Rusty Russell (1): sched_rt: don't allocate cpumask in fastpath Ryusuke Konishi (8): nilfs2: return f_fsid for statfs2 nilfs2: fix lockdep recursive locking warning on bmap nilfs2: fix lockdep recursive locking warning on meta data files nilfs2: remove module version nilfs2: simplify handling of active state of segments fix nilfs2: fix wrong accounting and duplicate brelse in nilfs_sufile_set_error nilfs2: segment usage file cleanups nilfs2: fix possible mismatch of sufile counters on recovery Sam Ravnborg (3): kconfig: fix update-po-config to accect backslash in input kbuild: introduce destination-y for exported headers Documentation: explain the difference between __bitwise and __bitwise__ Sascha Hauer (1): FEC driver: add missing #endif Serge E. Hallyn (2): cap_prctl: don't set error to 0 at 'no_change' add some long-missing capabilities to fs_mask Sergei Shtylyov (9): ide-h8300: remove mm_{inw|outw}() at91_ide: remove custom tf_{read|load}() methods ide-h8300: remove custom tf_{read|load}() methods ide: replace IDE_TFLAG_* flags by IDE_VALID_* ide: simplify 'struct ide_taskfile' ide: move common code out of tf_load() method ide: call write_devctl() method from tf_read() method ide: refactor tf_load() method ide: refactor tf_read() method Shaohua Li (3): ACPI: convert acpi_device_lock spinlock to mutex drm/i915: Fix a mismerge of the IGD patch (new .find_pll hooks missed) drm/i915: fix scheduling while holding the new active list spinlock Shen Feng (1): doc: use correct debugfs mountpoint Stanislaw Gruszka (2): at91_ide: remove unused ide_mm_{outb,inb} at91_ide: turn on PIO 6 support Stefan Husemann (1): intelfb: support i854 Steve Glendinning (1): smsc911x: correct debugging message on mii read timeout Steve Wise (2): RDMA/cxgb3: Handle EEH events RDMA/cxgb3: Release dependent resources only when endpoint memory is freed. Stoyan Gaydarov (1): afs: BUG to BUG_ON changes Suresh Siddha (1): x86: add linux kernel support for YMM state Takashi Iwai (1): ALSA: wavefront - Always use request_firmware() Tejun Heo (2): percpu: unbreak alpha percpu ahci: force CAP_NCQ for earlier NV MCPs Tetsuo Handa (3): tracing: append a comma to INIT_FTRACE_GRAPH tomoyo: add Documentation/tomoyo.txt tomoyo: version bump to 2.2.0. Theodore Ts'o (1): block_write_full_page: switch synchronous writes to use WRITE_SYNC_PLUG Thiemo Nagel (2): ext4: Fix big-endian problem in __ext4_check_blockref() ext4: Fix off-by-one-error in ext4_valid_extent_idx() Thomas Gleixner (1): MN10300: Convert obsolete no_irq_type to no_irq_chip Thomas Reitmayr (1): [WATCHDOG] orion5x_wdt: Add shutdown callback, use watchdog ping function Tony Breeds (1): parport_pc: Fix build failure drivers/parport/parport_pc.c for powerpc Tony Lindgren (1): mmc: Fix compile for omap_hsmmc.c Tony Luck (1): [IA64] wire up preadv/pwritev system calls Uwe Kleine-König (4): [WATCHDOG] at91rm9200_wdt.c: move probe function to .devinit.text [WATCHDOG] ks8695_wdt.c: move probe function to .devinit.text [WATCHDOG] omap_wdt.c: move probe function to .devinit.text kbuild: fix option processing for -I in headerdep Vegard Nossum (2): ACPI battery: fix async boot oops ata: fix obviously wrong comment Venkatesh Pallipadi (3): ACPI x86: Cleanup acpi_cpufreq structures related to aperf/mperf ACPI x86: Make aperf/mperf MSR access in acpi_cpufreq read_only x86 ACPI: Add support for Always Running APIC timer Ville Syrjala (3): Input: ati_remote2 - complete suspend support Input: ati_remote2 - add per device attrs Input: ati_remote2 - check module params Vitaliy Gusev (1): kthread: Don't looking for a task in create_kthread() #2 Weidong Han (1): x86, intr-remap: fix eoi for interrupt remapping without x2apic Wim Van Sebroeck (4): [WATCHDOG] i6300esb.c: Cleanup [WATCHDOG] i6300esb.c: Fix the GETSTATUS and GETBOOTSTATUS ioctls. [WATCHDOG] i6300esb.c: Restructure initialization of the device Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6 Wolfgang Muees (3): mmc_spi: do not check CID and CSD blocks with CRC16 mmc_spi: convert timeout handling to jiffies and avoid busy waiting mmc_spi: support for non-byte-aligned cards Yang Hongyang (2): drivers/net/eql.c: Fix a dev leakage. Replace all DMA_nBIT_MASK macro with DMA_BIT_MASK(n) Yinghai Lu (2): irq: fix cpumask memory leak on offstack cpumask kernels x86: make 64 bit to use default_inquire_remote_apic Yoshihiro Shimoda (1): sh: sh7785lcr: fix PCI address map for 32-bit mode Yossi Etigin (2): RDMA/cma: Use rate from IPoIB broadcast when joining IPoIB multicast groups RDMA/cma: Create cm id even when IB port is down Yuri Tikhonov (1): shmem: fix division by zero Zhaolei (3): printk: fix wrong format string iter for printk Make __stringify support variable argument macros too ftrace: Output REC->var instead of __entry->var for trace format ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:43 2009 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, J_CHICKENPOX_13,J_CHICKENPOX_32 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQhPr183924 for ; Thu, 21 May 2009 15:26:43 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQgKb183892; Thu, 21 May 2009 15:26:42 -0500 Date: Thu, 21 May 2009 15:26:42 -0500 Message-Id: <200905212026.n4LKQgKb183892@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.29-rc5, created. v2.6.29-rc5 X-Git-Refname: refs/tags/v2.6.29-rc5 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 1dcda2df87ba4ecc7988be7a45d01645e11c9f4c 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 annotated tag, v2.6.29-rc5 has been created at 1dcda2df87ba4ecc7988be7a45d01645e11c9f4c (tag) tagging d2f8d7ee1a9b4650b4e43325b321801264f7c37a (commit) replaces v2.6.29-rc4 tagged by Linus Torvalds on Fri Feb 13 15:31:30 2009 -0800 - Log ----------------------------------------------------------------- Linux 2.6.29-rc5 Woo! Partee! -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkmVrMAACgkQF3YsRnbiHLs3oQCgq7YnL5LatcEEItokYKKe7Whp LJoAoLWXTNk/Lt54CUqMhg7/7fiDW9Za =JvsA -----END PGP SIGNATURE----- Adrian-Ken Rueegsegger (1): crypto: shash - Fix module refcount Alan Stern (2): USB: usb-storage: remove WARN from last-sector hacks USB: usb-storage: add Pentax to the bad-vendor list Alex Chiang (1): x86: fix grammar in user-visible BIOS warning Alex Williamson (1): tun: Fix unicast filter overflow Alok Kataria (1): x86, vmi: put a missing paravirt_release_pmd in pgd_dtor Ananth N Mavinakayanahalli (1): powerpc: Don't emulate mr. instructions Andres Salomon (2): gxfb: properly alloc cmap and plug cmap leak gx1fb: properly alloc cmap and plug cmap leak Andrew Morton (2): net: don't use in_atomic() in gfp_any() Documentation/connector/cn_test.c: don't use gfp_any() Anton Vorontsov (8): powerpc/83xx: Fix missing #{address,size}-cells in mpc8313erdb.dts powerpc/83xx: Fix TSEC0 workability on MPC8313E-RDB boards USB: fsl_qe_udc: Fix oops on QE UDC probe failure USB: fsl_qe_udc: Fix recursive locking bug in ch9getstatus() USB: fsl_qe_udc: Fix QE USB controller initialization USB: fsl_qe_udc: Fix disconnects reporting during bus reset USB: fsl_qe_udc: Fix muram corruption by disabled endpoints USB: fsl_qe_udc: Fix stalled TX requests bug Arnd Bergmann (1): sound: Remove OSSlib stuff from linux/soundcard.h Arve HjønnevĂ¥g (1): Staging: android: ram_console: Disable ECC when early init is enabled and validate buffer size Balaji Rao (1): pcf50633_charger: Fix typo Benjamin Herrenschmidt (1): powerpc/pci: mmap anonymous memory when legacy_mem doesn't exist Bob Copeland (1): ath5k: fix bf->skb==NULL panic in ath5k_tasklet_rx Borislav Petkov (1): x86/Kconfig.cpu: make Kconfig help readable in the console Carsten Otte (1): ext2/xip: refuse to change xip flag during remount with busy inodes Chris Mason (1): Btrfs: don't use spin_is_contended Chris Wilson (2): drm/i915: Unref the object after failing to set tiling mode. drm/i915: Unlock mutex on i915_gem_fault() error path Chuck Ebbert (1): pkt_sched: type should be __u32 in header Clemens Ladisch (1): i8327: fix outb() parameter order ClĂ©ment Lecigne (1): net: 4 bytes kernel memory disclosure in SO_BSDCOMPAT gsopt try #2 Cornelia Huck (1): [S390] dasd: bus_id -> dev_name() conversion. Daisuke Nishimura (1): migration: migrate_vmas should check "vma" Dan Carpenter (1): USB: ftdi_sio: unlock_kernel() on error in set_serial_info() Dave Airlie (2): i915: fix unneeded locking in i915 LVDS get modes code. drm/radeon: fix ioremap conflict with AGP mappings Dave Young (1): USB: usb-serial: fix the aircable_init failure path David Howells (2): RxRPC: Fix a potential NULL dereference FRV: in_interrupt() requires #inclusion of linux/hardirq.h not asm/hardirq.h now David S. Miller (7): sparc64: Call dump_stack() in die_nmi(). sparc64: Don't hook up pcr_ops on spitfire chips. ipv6: Disallow rediculious flowlabel option sizes. net_dma: call dmaengine_get only if NET_DMA enabled sunhme: Don't match PCI devices in SBUS probe. sparc64: Kill .fixup section bloat. sparc64: Fix probe_kernel_{read,write}(). Dhananjay Phadke (2): netxen: fix msi-x interrupt handling netxen: remove pcie workaround Dirk De Schepper (1): USB: option: New mobile broadband modems to be supported Eero Nurkkala (1): ASoC: TLV320AIC3X: Fix kcontrol's private value use in put callback Eric Anholt (5): drm/i915: Suppress GEM teardown on X Server exit in KMS mode. drm/i915: Skip SDVO/HDMI init when the chipset tells us it's not present. drm/i915: Set up an MTRR covering the GTT at driver load. drm/i915: Return error from i915_gem_object_get_fence_reg() when failing. drm/i915: Quiet the message on get/setparam ioctl with an unknown value. Eric Leblond (2): netfilter: fix tuple inversion for Node information request netfilter: nf_conntrack_ipv6: don't track ICMPv6 negotiation message Eric Miao (3): [ARM] pxa: fix missing of __REG() definition for ac97 registers access [ARM] pxa: make more SSCR0 bit definitions visible on multiple processors [ARM] pxa: stop and disable IRQ for each DMA channels at startup Eric Van Hensbergen (1): 9p: fix endian issues [attempt 3] Federico Cuello (1): writeback: fix break condition Gautam Kachroo (1): neigh: some entries can be skipped during dumping Greg Kroah-Hartman (3): Revert USB: option: add Pantech cards Revert Staging: at76_usb: update drivers/staging/at76_usb w/ mac80211 port Staging: android: fix up units in timed_gpio Heiko Carstens (1): syscall define: fix uml compile bug Herbert Xu (5): crypto: api - Fix algorithm test race that broke aead initialisation crypto: api - Fix zeroing on free crypto: shash - Fix tfm destruction crypto: scatterwalk - Avoid flush_dcache_page on slab pages bridge: Fix LRO crash with tun Herton Ronaldo Krzesinski (1): ALSA: hda - Change HP dv7 (103c:30f4) quirk from hp-m4 to hp-dv5 model Hin-Tak Leung (2): zd1211rw: adding 0ace:0xa211 as a ZD1211 device zd1211rw: treat MAXIM_NEW_RF(0x08) as UW2453_RF(0x09) for TP-Link WN322/422G Hugh Dickins (2): mm: fix error case in mlock downgrade reversion profiling: fix broken profiling regression Ian Dall (1): w1: w1 temp calculation overflow fix Ilkka Virta (1): sungem: Soft lockup in sungem on Netra AC200 when switching interface up Inaky Perez-Gonzalez (1): wimax: fix oops in wimax_dev_get_by_genl_info() when looking up non-wimax iface Ingo Molnar (4): Merge branch 'sched/urgent' into timers/urgent timers: split process wide cpu clocks/timers, remove spurious warning drm/i915: select framebuffer support automatically Merge branch 'tip/tracing/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent Ivan Kuten (1): USB: Correct Makefile to make isp1760 buildable Ivan Vecera (1): r8169: Don't update statistics counters when interface is down J. Bruce Fields (1): lockd: fix regression in lockd's handling of blocked locks James Treacy (1): USB: cdc-acm.c: remove duplicate lines for MTK gps support Jamie Lentin (1): Staging: at76_usb: Add support for OQO Model 01+ Jan Kara (2): jbd: fix return value of journal_start_commit() ext3: revert "ext3: wait on all pending commits in ext3_sync_fs" Jarek Poplawski (1): gianfar: Fix boot hangs while bringing up gianfar ethernet Jarkko Nikula (1): ASoC: WM8990: Fix kcontrol's private value use in put callback Jason Andryuk (1): Staging: at76_usb: fix bugs introduced by "Staging: at76_usb: cleanup dma on stack issues" Jeremy Fitzhardinge (2): x86: don't apply __supported_pte_mask to non-present ptes mm: rearrange exit_mmap() to unlock before arch_exit_mmap Jesper Dangaard Brouer (1): udp: Fix potential wrong ip_hdr(skb) pointers Jesse Barnes (4): drm/i915: add fence register management to execbuf drm/i915: sync SDVO code with stable userland modesetting driver drm/i915: capture last_vblank count at IRQ uninstall time too drm/i915: add get_vblank_counter function for GM45 Jiri Slaby (1): parport: parport_serial, don't bind netmos ibm 0299 Johannes Berg (1): mac80211: restrict to AP in outgoing interface heuristic Julia Lawall (3): arch/powerpc: Eliminate double sizeof drivers/atm: introduce missing kfree drivers/isdn: introduce missing kfree KAMEZAWA Hiroyuki (1): memcg: use __GFP_NOWARN in page cgroup allocation KOSAKI Motohiro (1): cgroups: add Li Zefan as a maintainer Kirill A. Shutemov (1): mm: Export symbol ksize() Kumar Gala (2): powerpc/fsl-booke: Fix mapping functions to use phys_addr_t powerpc/mm: Fix _PAGE_COHERENT support on classic ppc32 HW Kyle McMartin (3): x86, 64-bit: print DMI info in the oops trace x86: disable intel_iommu support by default x86: spinlocks: define dummy __raw_spin_is_contended Li Zefan (1): cgroups: fix lockdep subclasses overflow Linus Torvalds (23): Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 i915: Fix more size_t format string warnings Merge branch 'for-2.6.29' of git://linux-nfs.org/~bfields/linux Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.infradead.org/users/cbou/battery-2.6.29 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Linux 2.6.29-rc5 Lopez Cruz, Misael (1): ASoC: Update SDP3430 machine driver for snd_soc_card Mackenzie Morgan (1): ALSA: hda - Add quirk for Asus z37e (1043:8284) Marcel Selhorst (1): tpm: correct email address for tpm_infineon-driver Marco La Porta (1): lxfb: properly alloc cmap in all cases and don't leak the memory Mark Brown (1): ASoC: Only register AC97 bus if it's not done already Mark Langsdorf (1): [CPUFREQ] powernow-k8: Get transition latency from ACPI _PSS table Martin Schwidefsky (2): [S390] vdso: fix per cpu vdso pointer in lowcore [S390] Update default configuration. Meelis Roos (2): fore200: fix oops on failed firmware load sunhme: Fix Quattro HME irq registration on proble failures Mel Gorman (2): Do not account for the address space used by hugetlbfs using VM_ACCOUNT Do not account for hugetlbfs quota at mmap() time if mapping [SHM|MAP]_NORESERVE Michael Chan (4): bnx2: Update 5706/5708 firmware. bnx2: Update 5709 firmware. bnx2: Fix jumbo frames error handling. bnx2: Update version to 1.9.2 and copyright. Michael Neuling (3): powerpc/83xx: Build breakage for CONFIG_PM but no CONFIG_SUSPEND powerpc/cell: Add missing #include for oprofile powerpc: Add missing sparsemem.h include Mike Rapoport (1): [ARM] pxa: fix NAND and MMC clock initialization for pxa3xx MinChan Kim (1): mm: fix mlocked page counter mismatch Nick Holloway (1): USB: Storage: Update unusual_devs entry for Datafab KECF-USB Nick Piggin (1): Fix page writeback thinko, causing Berkeley DB slowdown Noriaki TAKAMIYA (1): IPv6: fix to set device name when new IPv6 over IPv6 tunnel device is created. Oleg Nesterov (1): ptrace, x86: fix the usage of ptrace_fork() Oliver Neukum (1): USB: two more usb ids for ti_usb_3410_5052 Ondrej Zary (1): 3c509: Fix resume from hibernation for PnP mode. Pablo Neira Ayuso (2): netfilter: ctnetlink: allow changing NAT sequence adjustment in creation netfilter: ctnetlink: fix echo if not subscribed to any multicast group Pallipadi, Venkatesh (1): x86: add clflush before monitor for Intel 7400 series Paul Clements (1): nbd: fix I/O hang on disconnected nbds Paul Collins (1): drm/i915: skip LVDS initialization on Apple Mac Mini Paulius Zaleckas (1): mdio-gpio: Add mdc pin direction initialization Pavel Emelyanov (2): x86: fix hpet timer reinit for x86_64 x86: clean up hpet timer reinit Peter Zijlstra (5): signal: re-add dead task accumulation stats. timers: split process wide cpu clocks/timers timers: split process wide cpu clocks/timers, fix timers: fix TIMER_ABSTIME for process wide cpu timers sched: revert recent sync wakeup changes Qu Haoran (1): netfilter: xt_sctp: sctp chunk mapping doesn't work Randy Dunlap (2): kernel-doc: preferred ending marker and examples kernel-doc: fix syscall wrapper processing Reinette Chatre (1): iwlwifi: fix suspend/resume and its usage of pci saved state Risto Suominen (1): de2104x: force correct order when writing to rx ring Robert Jarzmik (1): rtc: update maintainership of pxa rtc driver Roel Kluin (6): [ARM] AACI: timeout will reach -1 rtc: t reaches -1, tested 0 TG3: limit reaches -1 sun3: print when lance_open() fails IRDA: cnt is off by 1 3c505: do not set pcb->data.raw beyond its size Ron Mercer (7): qlge: bugfix: Use netif_receive_skb() and vlan_hwaccel_receive_skb(). qlge: bugfix: Fix fatal error recovery hang. qlge: bugfix: Add missing put_page() call. qlge: bugfix: Add missing dev_kfree_skb_any() call. qlge: bugfix: Fix TSO breakage. qlge: bugfix: Fix RX scaling values. qlge: bugfix: Add missing rx buf clean index on early exit. Russell King (1): Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 RĂ©mi Denis-Courmont (2): Phonet: fix double free in GPRS outbound packet error path Phonet: do not compute unused value Sachin P. Sant (1): Staging: panel: fix lcd panel driver build failure Sachin Sant (1): [S390] Fix init irq proc build break. Serge E. Hallyn (1): User namespaces: Only put the userns when we unhash the uid Stefan Richter (1): hugetlbfs: fix build failure with !CONFIG_HUGETLBFS Stefan Weinhuber (1): [S390] dasd: fix race in dasd timer handling Stephane Clerambault (1): USB: ftdi_sio: add support for the NDI Polaris system Steven Rostedt (3): powerpc/ftrace: Fix math to calculate offset in TOC tracing, x86: fix fixup section to return to original code tracing, x86: fix constraint for parent variable Suresh Siddha (1): sched: fix nohz load balancer on cpu offline Sven Wegener (1): mm: fix dirty_bytes/dirty_background_bytes sysctls on 64bit arches Takashi Iwai (8): ALSA: mtpav - Fix initial value for input hwport ALSA: hda - Register (new) devices at reconfig ALSA: hda - Add missing terminator in slave dig-out array ALSA: hda - Add snd_hda_multi_out_dig_cleanup() Merge branch 'fix/oss-header-fix' into for-linus Merge branch 'fix/misc' into for-linus Merge branch 'fix/hda' into for-linus Merge branch 'fix/asoc' into for-linus Tejun Heo (3): x86: include correct %gs in a.out core dump x86: math_emu info cleanup x86: fix math_emu register frame access Tobias Klauser (1): [ARM] Storage class should be before const qualifier Uwe Kleine-Koenig (1): video/framebuffer: move the probe func into .devinit.text in Blackfin LCD driver Venkatesh Pallipadi (1): [CPUFREQ] Make ignore_nice_load setting of ondemand work as expected. Wu Fengguang (4): ALSA: hda - allow multi-channel HDMI audio playback when ELD is not present ALSA: hda - enable HDMI audio pin out at module loading time ALSA: hda - compute checksum in HDMI audio infoframe ALSA: hda - add id for Intel IbexPeak integrated HDMI codec Yang Hongyang (1): netxen: fix compile waring "label ‘set_32_bit_mask’ defined but not used" on IA64 platform Yinghai Lu (1): x86: find nr_irqs_gsi with mp_ioapic_routing paulfax (1): powerpc/cpm2: Fix set interrupt type ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:42 2009 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, J_CHICKENPOX_14,J_CHICKENPOX_21 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQgf3183887 for ; Thu, 21 May 2009 15:26:42 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQg7o183858; Thu, 21 May 2009 15:26:42 -0500 Date: Thu, 21 May 2009 15:26:42 -0500 Message-Id: <200905212026.n4LKQg7o183858@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.29-rc4, created. v2.6.29-rc4 X-Git-Refname: refs/tags/v2.6.29-rc4 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 87c16e9e8bb74f14f4504305957e4346e7fc46ea 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 annotated tag, v2.6.29-rc4 has been created at 87c16e9e8bb74f14f4504305957e4346e7fc46ea (tag) tagging 8e4921515c1a379539607eb443d51c30f4f7f338 (commit) replaces v2.6.29-rc3 tagged by Linus Torvalds on Sun Feb 8 12:37:36 2009 -0800 - Log ----------------------------------------------------------------- Linus 2.6.29-rc4 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkmPQpUACgkQF3YsRnbiHLtjIQCgrDkhmrdpMou2QBF3tgZfv2UT 18wAoI0wpUeCvqte/csVEOnnR09vtIfU =ww1w -----END PGP SIGNATURE----- Aaro Koskinen (1): ARM: OMAP: gptimer min_delta_ns corrected Adrian Hunter (5): UBIFS: ensure orphan area head is initialized UBIFS: fix LPT out-of-space bug (again) UBIFS: sync wbufs after syncing inodes and pages UBIFS: spelling fix 'date' -> 'data' UBIFS: remount ro fixes Al Viro (1): braino in sg_ioctl_trans() Alberto Bertogli (3): Fix small typo in bio.h's documentation Fix misleading comment in bio.h bio.h: If they MUST be inlined, then use __always_inline Alex Buell (1): fbdev: incorrect URL given in drivers/video/Kconfig Alex Chiang (1): PCI: properly clean up ASPM link state on device remove Alexander Beregalov (1): sata_sil: Fix build breakage Alexander Duyck (3): igb: Fix DCA errors and do not use context index for 82576 igb: prevent skb_over panic w/ mtu smaller than 1K igb: fix link reporting when using sgmii Alexey Dobriyan (3): sky2: fix hard hang with netconsoling and iface going up alpha: fixup BUG macro seq_file: fix big-enough lseek() + read() Alexey Klimov (1): V4L/DVB (10317): radio-mr800: fix radio->muted and radio->stereo Andre Noll (1): md: Fix a bug in linear.c causing which_dev() to return the wrong device. Andrea Righi (1): fbmem: don't call copy_from/to_user() with mutex held Andreas Schwab (1): x86 setup: fix asm constraints in vesa_store_edid Andrew Morton (4): drivers/gpu/drm/i915/intel_lvds.c: fix locking snafu kernel/async.c: fix printk warnings revert "rlimit: permit setting RLIMIT_NOFILE to RLIM_INFINITY" hp-wmi: fix error path in hp_wmi_bios_setup() Andy Fleming (2): gianfar: Fix BD_LENGTH_MASK definition gianfar: Fix potential soft reset race Andy Walls (3): V4L/DVB (10218): cx23885: Fix Oops for mixed install of analog and digital only cards V4L/DVB (10219): saa7134: Prevent Oops due to stale IRQ status when enabling interrupts V4L/DVB (10229): cx88-dvb: Fix order of frontend allocations Anton Vorontsov (1): gianfar: Fix Wake-on-LAN support Antti Palosaari (2): V4L/DVB (10287): af9015: fix second FE V4L/DVB (10288): af9015: bug fix: stick does not work always when plugged Arjan van de Ven (1): ahci: add a module parameter to ignore the SSS flags for async scanning Artem Bityutskiy (20): UBI: improve ioctl commentaries UBI: remove unnecessry header inclusion UBI: allow all ioctls UBIFS: do not commit twice UBIFS: constify operations UBI: add ioctl compatibility UBI: use nicer 64-bit math UBIFS: do not treat all data as short term UBIFS: document dark_wm and dead_wm better UBI: remove unused variable UBI: fix resource de-allocation UBIFS: simplify locking UBIFS: fix LEB list freeing UBIFS: add re-mount debugging checks UBIFS: always clean up GC LEB space UBIFS: fix assertions UBIFS: fix no_chk_data_crc UBIFS: return sensible error codes UBIFS: remove fast unmounting write-back: fix nr_to_write counter Arve HjønnevĂ¥g (3): Staging: android: binder: fix arm build errors Staging: android: timed_gpio: Fix build to build on kernels after 2.6.25. Staging: android: Add lowmemorykiller documentation. Atsushi Nemoto (2): MIPS: TXx9: Add support for TX4939 internal RTC tx4939ide: typo fix and minor cleanup Atsushi SAKAI (1): lguest: typos fix Balaji Rao (1): mfd: Remove non exported references from pcf50633 Bartlomiej Zolnierkiewicz (4): block: export SSD/non-rotational queue flag through sysfs ide: fix ide_register_port() failure handling ide: add CS5536 host driver (v3) icside: fix PCB version 6 support (v2) Ben Hutchings (5): sfc: SFN4111T: Fix GPIO sharing between I2C and FLASH_CFG_1 sfc: Update board info for hardware monitor on SFN4111T-R5 and later sfc: SFT9001: Always enable XNP exchange on SFT9001 rev B sfc: SFX7101/SFT9001: Fix AN advertisements sfc: Replace stats_enabled flag with a disable count Benjamin Herrenschmidt (4): powerpc: Fix oops on some machines due to incorrect pr_debug() atyfb: Properly save PCI state before changing PCI PM level aty128fb: Properly save PCI state before changing PCI PM level radeonfb: Fix resume from D3Cold on some platforms Benjamin Zores (1): ipv4: fix infinite retry loop in IP-Config Bernd Schmidt (1): Blackfin arch: fix bug - traps test case 19 for exception 0x2d fails Bharath Ramesh (1): hwmon: applesmc: add support for MacPro 3 temperature sensors Bill Nottingham (1): Documentation/Changes: add required versions for new filesystems Boaz Harrosh (1): include/linux: Add bsg.h to the Kernel exported headers Bob Copeland (1): ath5k: fix locking in ath5k_config Borislav Petkov (2): ide-cd: fix DMA for non bio-backed requests x86: APIC: enable workaround on AMD Fam10h CPUs Bryan Wu (1): Blackfin arch: Add ANOMALY_05000380 to BF54x to kill the compile warning Carmelo AMOROSO (1): sh: fcnvds fix with denormalized numbers on SH-4 FPU. Carsten Otte (1): do_wp_page: fix regression with execute in place Chris Ball (1): Btrfs: Handle SGID bit when creating inodes Chris Mason (19): Btrfs: stop providing a bmap operation to avoid swapfile corruptions Btrfs: do less aggressive btree readahead Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Btrfs: fix readdir on 32 bit machines Btrfs: Catch missed bios in the async bio submission thread Btrfs: async threads should try harder to find work Btrfs: sort references by byte number during btrfs_inc_ref Btrfs: disable leak debugging checks in extent_io.c Btrfs: hash_lock is no longer needed Btrfs: Change btree locking to use explicit blocking points Btrfs: Make btrfs_drop_snapshot work in larger and more efficient chunks Btrfs: Don't try to compress pages past i_size Btrfs: Change btrfs_truncate_inode_items to stop when it hits the inode Btrfs: change btrfs_del_leaf to drop locks earlier Btrfs: fix btrfs_unlock_up_safe to walk the entire path Btrfs: Only prep for btree deletion balances when nodes are mostly empty Btrfs: don't return congestion in write_cache_pages as often Btrfs: Fix memory leak in cache_drop_leaf_ref Btrfs: Make sure dir is non-null before doing S_ISGID checks Christian Hesse (1): Btrfs: make btrfs acls selectable Christopher SMITH (1): sh: Only reserve memory under CONFIG_ZERO_PAGE_OFFSET when it != 0. Clemens Ladisch (1): sound: usb-audio: handle wMaxPacketSize for FIXED_ENDPOINT devices Cliff Brake (2): pxamci: replace #ifdef CONFIG_PXA27x with if (cpu_is_pxa27x()) pxamci: enable DMA for write ops after CMD/RESP Cord Walter (1): pcnet_cs: Fix misuse of the equality operator. Corentin Chary (10): UBI: add ioctl for map operation UBI: add ioctl for unmap operation UBI: add ioctl for is_mapped operation eeepc-laptop: split eeepc_backlight_exit() asus_acpi: Add R1F support asus-laptop: use generic netlink interface asus-laptop: hotkeys via the generic input interface asus-laptop: update Kconfig for input layer asus-laptop: fix label indentation eeepc-laptop: use netlink interface Cornelia Huck (4): async: Fix running list handling. async: Handle kthread_run() return codes. async: Add some documentation. async: Rename _special -> _domain for clarity. Daisuke Nishimura (1): memcg: get/put parents at create/free Dan Carpenter (2): fix emacs indenting howto filename expansion sx.c: fix missed unlock_kernel() on error path in sx_fw_ioctl() Daniel Marjamäki (1): netxen: fix memory leak in drivers/net/netxen_nic_init.c Darren Salt (1): eeepc-laptop: fix oops when changing backlight brightness during eeepc-laptop init Darrick J. Wong (1): PCI hotplug: fakephp: Allocate PCI resources before adding the device Dave Chinner (1): xfs: Check buffer lengths in log recovery Dave Jones (2): ipv6: compile fix for ip6mr.c x86: add cache descriptors for Intel Core i7 Dave Kleikamp (1): vfs: Don't call attach_nobh_buffers() with an empty list David Altobelli (2): hpilo: increment version hpilo: open/close fix David Brownell (1): rtc: rtc-dm355evm driver David Daney (3): MIPS: Fix a typo in watchpoint register structure. MIPS: Read watch registers with interrupts disabled. MIPS: Use hardware watchpoints on all R1 and R2 CPUs. David Howells (1): CRED: Fix SUID exec regression David Rientjes (1): slub: fix per cpu kmem_cache_cpu array memory leak David S. Miller (13): ipv6: Make mc_forwarding sysctl read-only. sparc64: Move generic PCR support code to seperate file. sparc: Probe PMU type and record in sparc_pmu_type. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 tun: Add some missing TUN compat ioctl translations. sparc64: Implement NMI watchdog on capable cpus. net: Fix userland breakage wrt. linux/if_tunnel.h sparc64: On non-Niagara, need to touch NMI watchdog in NOHZ mode. sparc64: Validate kernel generated fault addresses on sparc64. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 sparc64: Kill bogus TPC/address truncation during 32-bit faults. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Revert "tcp: Always set urgent pointer if it's beyond snd_nxt" David Vrabel (7): uwb: safely remove all reservations wusb: return -ENOTCONN when resetting a port with no connected device Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-upstream wusb: timeout when waiting for ASL/PZL updates in whci-hcd Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-upstream uwb: lock rc->rsvs_lock with spin_lock_bh() Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-upstream Davide Libenzi (1): epoll: drop max_user_instances and rely only on max_user_watches Dean Nelson (2): sgi-xp: link XPNET's net_device_ops to its net_device structure sgi-xp: fix writing past the end of kzalloc()'d space Devin Heitmueller (2): V4L/DVB (10261): em28xx: fix kernel panic on audio shutdown V4L/DVB (10411): s5h1409: Perform s5h1409 soft reset after tuning Dhananjay Phadke (1): netxen: revert jumbo ringsize Dimitris Michailidis (1): tcp: Fix length tcp_splice_data_recv passes to skb_splice_bits. Divy Le Ray (1): cxgb3: Fix lro switch Divyesh Shah (1): cfq-iosched: Allow RT requests to pre-empt ongoing BE timeslice Ed Swierk (1): signals, debug: fix BUG: using smp_processor_id() in preemptible code in print_fatal_signal() Eero Nurkkala (1): OMAP: ASoC: Fix spinlock misuse in omap-pcm.c Eric Biederman (1): seq_file: move traverse so it can be used from seq_read Eric Dumazet (4): udp: optimize bind(0) if many ports are in use net: wrong test in inet_ehash_locks_alloc() udp: increments sk_drops in __udp_queue_rcv_skb() modules: Use a better scheme for refcounting Eric Piel (1): lis3lv02d: add axes knowledge for HP 6530 Eric Sandeen (1): don't reallocate sxp variable passed into xfs_swapext Evgeniy Polyakov (1): mm: OOM documentation update Felix Blyakher (2): Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-linus [XFS] Warn on transaction in flight on read-only remount Filip Aben (1): hso: add new device id's Frank Seidel (1): ACPI: add missing KERN_* constants to printks Frans Pop (2): hp-wmi: fix regressions caused by missing if statement hp-wmi: set initial docking state Frederic Weisbecker (2): tracing/function-graph-tracer: fix a regression while suspend to disk hrtimers: increase clock min delta threshold while interrupt hanging Geert Uytterhoeven (1): staging: agnx: drivers/staging/agnx/agnx.h needs Gerhard Pircher (1): ide: Force VIA IDE legacy interrupts for AmigaOne boards Grace Pan (1): Blackfin arch: Add in cflag to support mlong-calls for kgdb_test Graf Yang (3): Blackfin arch: Fix bug - BF518 port F, G, and H have different mux offset compare to BF527 Blackfin arch: Fix bug - 561 SMP kernel can't boot from jffs2 Blackfin arch: add platform device bfin_mii-bus and KSZ8893M switch driver platform resources to board files Grant Likely (3): powerpc/5200: update defconfigs powerpc/5200: Bugfix for PCI mapping of memory and IMMR powerpc/5200: update device tree binding documentation Greg Kroah-Hartman (3): Staging: comedi: fix Kbuild Staging: meilhaus: fix Kbuild Staging: android: fix build error on 64bit boxes H. Peter Anvin (2): x86: correct the CPUID pattern for MSR_IA32_MISC_ENABLE availability x86: add x86@kernel.org to MAINTAINERS Haiying Wang (1): ucc_geth: Change uec phy id to the same format as gianfar's Hans J. Koch (1): UIO: Add missing documentation of features added recently Hans Verkuil (8): V4L/DVB (10214): Fix 'stb0899_get_srate' defined but not used warning V4L/DVB (10230): v4l2-device: fix buggy macro V4L/DVB (10243): em28xx: fix compile warning V4L/DVB (10248): v4l-dvb: fix a bunch of compile warnings. V4L/DVB (10250): cx25840: fix regression: fw not loaded on first use V4L/DVB (10270): saa7146: fix unbalanced mutex_lock/unlock V4L/DVB (10314): cx25840: ignore TUNER_SET_CONFIG in the command callback. V4L/DVB (10229): ivtv: fix memory leak Hans-Christian Egtvedt (1): atmel-ssc: fix misuse of dev_dbg when requested ssc instance is not found Herbert Xu (3): net: Fix frag_list handling in skb_seq_read packet: Avoid lock_sock in mmap handler ipv6: Copy cork options in ip6_append_data Holger Macht (1): ACPI: dock: Don't eval _STA on every show_docked sysfs read Huang Weiyi (5): uwb: remove unused #include 's Btrfs: removed unused #include 's Btrfs: remove duplicated #include V4L/DVB (10193): removed unused #include 's MIPS: Octeon: Remove duplicated #includes Ian Campbell (1): IDE: Unregister and disable devices if initialization fails. Inaky Perez-Gonzalez (1): wimax: fix build issue when debugfs is disabled Ingo Molnar (3): irq: export __set_irq_handler() and handle_level_irq() x86: tone down mtrr_trim_uncached_memory() warning Merge branch 'core/xen' into x86/urgent Ira W. Snyder (1): virtio_net: use correct accessors for scatterlists Ivan Kokshaysky (3): alpha: use syscall wrappers alpha: compile fixes alpha: fix the BUG() macro James Bottomley (1): x86/Voyager: make it build and boot Jan Engelhardt (2): UBI: constify file operations Btrfs: change/remove typedef Jan Kara (2): ocfs2: Push out dropping of dentry lock to ocfs2_wq ocfs2: Fix possible deadlock in ocfs2_write_dquot() Jarkko Nikula (1): ARM: OMAP: DMA: Fix uninitialized channel flags Jarod Wilson (1): HID: add antec-branded soundgraph imon devices to blacklist Jaswinder Singh Rajput (90): headers_check fix: can/bcm.h headers_check fix: dvb/audio.h headers_check fix: dvb/dmx.h headers_check fix: dvb/frontend.h headers_check fix: dvb/net.h headers_check fix: dvb/video.h headers_check fix: netfilter/xt_conntrack.h headers_check fix: nfsd/export.h headers_check fix: nfsd/nfsfh.h headers_check fix: nfsd/syscall.h headers_check fix: raid/md_p.h headers_check fix: spi/spidev.h headers_check fix: tc_act/tc_gact.h headers_check fix: tc_act/tc_mirred.h headers_check fix: tc_act/tc_pedit.h headers_check fix: tc_ematch/tc_em_cmp.h headers_check fix: tc_ematch/tc_em_meta.h headers_check fix: tc_ematch/tc_em_nbyte.h headers_check fix: tc_ematch/tc_em_text.h headers_check fix: usb/cdc.h headers_check fix: usb/gadgetfs.h headers_check fix: linux/aio_abi.h headers_check fix: linux/atalk.h headers_check fix: linux/atmbr2684.h headers_check fix: linux/auto_fs4.h headers_check fix: linux/bfs_fs.h headers_check fix: linux/blktrace_api.h headers_check fix: linux/capability.h headers_check fix: linux/cdrom.h headers_check fix: linux/cgroupstats.h headers_check fix: linux/dlm_plock.h headers_check fix: linux/dn.h headers_check fix: linux/edd.h headers_check fix: linux/efs_fs_sb.h headers_check fix: linux/elf-fdpic.h headers_check fix: linux/elf.h headers_check fix: linux/errqueue.h headers_check fix: linux/genetlink.h headers_check fix: linux/gfs2_ondisk.h headers_check fix: linux/hid.h headers_check fix: linux/hiddev.h headers_check fix: linux/icmpv6.h headers_check fix: linux/if_addr.h headers_check fix: linux/if_addrlabel.h headers_check fix: linux/if_fc.h headers_check fix: linux/if_hippi.h headers_check fix: linux/if_link.h headers_check fix: linux/if_ppp.h headers_check fix: linux/if_strip.h headers_check fix: linux/if_tr.h headers_check fix: linux/igmp.h headers_check fix: linux/inet_diag.h headers_check fix: linux/ip6_tunnel.h headers_check fix: linux/ipv6.h headers_check fix: linux/ipv6_route.h headers_check fix: linux/ipx.h headers_check fix: linux/irda.h headers_check fix: linux/minix_fs.h headers_check fix: linux/msdos_fs.h headers_check fix: linux/neighbour.h headers_check fix: linux/nfs_idmap.h headers_check fix: linux/phonet.h headers_check fix: linux/pkt_cls.h headers_check fix: linux/pkt_sched.h headers_check fix: linux/ppp_defs.h headers_check fix: linux/random.h headers_check fix: linux/signalfd.h headers_check fix: linux/sound.h headers_check fix: linux/synclink.h headers_check fix: linux/taskstats.h headers_check fix: linux/video_decoder.h headers_check fix: linux/video_encoder.h headers_check fix: linux/videodev.h headers_check fix: linux/virtio_blk.h headers_check fix: linux/virtio_console.h headers_check fix: linux/virtio_net.h headers_check fix: mtd/inftl-user.h headers_check fix: sound/hdsp.h headers_check fix: video/sisfb.h headers_check fix: video/uvesafb.h headers_check fix: linux/nubus.h headers_check fix: linux/rtnetlink.h headers_check fix: x86, e820.h headers_check fix: x86, kvm.h headers_check fix: x86, mce.h headers_check fix: x86, mtrr.h headers_check fix: x86, ptrace-abi.h headers_check fix: x86, sigcontext.h headers_check fix: x86, sigcontext32.h headers_check fix: x86, swab.h Jean-Francois Moine (1): V4L/DVB (10385): gspca - main: Fix memory leak when USB disconnection while streaming. Jeff Layton (2): cifs: turn smb_send into a wrapper around smb_sendv cifs: make sure we allocate enough storage for socket address Jeff Mahoney (1): kmalloc: return NULL instead of link failure Jens Axboe (8): block: get rid of the manual directory counting in blktrace block: seperate bio/request unplug and sync bits block: add bio_rw_flagged() for testing bio->bi_rw block: silently error an unsupported barrier bio block: add sysfs file for controlling io stats accounting block: fix oops in blk_queue_io_stat() block: fix inconsistent parenthesisation of QUEUE_FLAG_DEFAULT block: add text file detailing queue/ sysfs files Jeremy Fitzhardinge (2): xen: make sysfs files behave as their names suggest xen: disable interrupts before saving in percpu Jesper Dangaard Brouer (1): udp: Fix UDP short packet false positive Jesse Brandeburg (1): e1000: fix bug with shared interrupt during reset Jie Zhang (2): Blackfin arch: Add one more check on `fp' to prevent double fault Blackfin arch: fix 2 bugs related to debug Jim Owens (1): Btrfs: selinux support Jiri Kosina (2): HID: adjust report descriptor fixup for MS 1028 receiver HID: document difference between hid_blacklist and hid_ignore_list Jiri Pirko (1): net: fix xfrm reverse flow lookup for icmp6 Jiri Tersel (1): lis3lv02d: add axes knowledge for HP 6510b Joe Perches (1): Btrfs: MAINTAINERS entry Joel Becker (1): configfs: Silence lockdep on mkdir(), rmdir() and configfs_depend_item() Joerg Schirottke (1): ALSA: hda - Add quirk for HP DV6700 laptop Johannes Berg (1): mac80211: remove Michael Wu as maintainer Johannes Weiner (1): wait: prevent exclusive waiter starvation Josef Bacik (2): Btrfs: cleanup xattr code Btrfs: join the transaction in __btrfs_setxattr Juha Yrjola (1): ARM: OMAP: Fix race in OMAP2/3 DMA IRQ handling KAMEZAWA Hiroyuki (4): cgroups: use hierarchy mutex in creation failure path memcg: fix refcnt handling at swapoff memcg: update document to mention that swapoff should be tested memcg: NULL pointer dereference at rmdir on some NUMA systems Karsten Keil (1): e1000: Fix PCI enable to honor the need_ioport flag Kay Sievers (2): ide: struct device - replace bus_id with dev_name(), dev_set_name() ACPI: struct device - replace bus_id with dev_name(), dev_set_name() Kevin Hilman (1): ARM: OMAP: fix fault in enter_full_retention() Kuninori Morimoto (4): sh: mach-migor: Enable ov772x and tw9910 in defconfig. sh: ap325rxa: control camera power toggling. sh: ap325rxa: Add ov772x support. sh: ap325rxa: Enable ov772x in defconfig. Lai Jiangshan (1): ring_buffer: reset write when reserve buffer fail Larry Finger (1): rtl8187: Fix error in setting OFDM power settings for RTL8187L Laurent Pinchart (3): V4L/DVB (10197): uvcvideo: Whitespace and comments cleanup, copyright updates. V4L/DVB (10198): uvcvideo: Print the UVC version number in binary-coded decimal. V4L/DVB (10199): uvcvideo: Fix GET_DEF failure detection. Len Brown (7): ACPI: remove locking from PM1x_STS register reads ACPI: remove BM_RLD access from idle entry path ACPICA: add debug dump of BIOS _OSI strings ACPI: make some IO ports off-limits to AML ACPI: delete CPU_IDLE=n code ACPI: disable ACPI cleanly when bad RSDP found Merge branches 'release', 'asus', 'bugzilla-12450', 'cpuidle', 'debug', 'ec', 'misc', 'printk' and 'processor' into release Li Zefan (2): cgroups: fix lock inconsistency in cgroup_clone() fork.c: fix NULL pointer dereference when nr_threads == threads-max Liam Girdwood (1): ALSA: ASoC: email - update email addresses. Linus Torvalds (60): Fix OOPS in mmap_region() when merging adjacent VM_LOCKED file segments Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'linux-next' of git://git.infradead.org/ubi-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Allow opportunistic merging of VM_CAN_NONLINEAR areas Stop playing silly games with the VM_ACCOUNT flag Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'header-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Manually revert "mlock: downgrade mmap sem while populating mlocked regions" Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/dvrabel/uwb Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'linux-next' of git://git.infradead.org/ubifs-2.6 Merge branch 'for-linus' of git://git.o-hand.com/linux-mfd Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'sh/for-2.6.29' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'to-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-roland Merge branch 'x86/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-roland Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/arjan/linux-2.6-async-update Linux 2.6.29-rc4 Linus Walleij (1): mmci: Add support for ST Micro derivate Luis R. Rodriguez (2): cfg80211: Fix sanity check on 5 GHz when processing country IE cfg80211: print correct intersected regulatory domain Luke Yelavich (1): ALSA: hda - add another MacBook Pro 4, 1 subsystem ID Maciej Sosnowski (1): dca: redesign locks to fix deadlocks Magnus Damm (1): gpiolib: fix request related issue Manish Katiyar (2): r6040: Remove unused variable pdev from drivers/net/r6040.c rtc-ds1390: fix compilation warnings in drivers/rtc/rtc-ds1390.c Manuel Lauss (1): MIPS: Alchemy: time.c build fix Mark Brown (1): ASoC: Fix null string usage with WM8753 DAIs Mark Eggleston (1): ALSA: hda - Add support of iMac 24 Aluminium Mark Fasheh (2): ocfs2: add quota call to ocfs2_remove_btree_range() Revert "configfs: Silence lockdep on mkdir(), rmdir() and configfs_depend_item()" Mark Lord (1): sata_mv: Fix chip type for Hightpoint RocketRaid 1740/1742 Mark McLoughlin (1): virtio-pci: do not oops on config change if driver not loaded Mark Wallis (1): lguest: Fix a memory leak with the lg object during launcher close Markus Metzger (1): x86, ds, bts: cleanup/fix DS configuration Martin Dauskardt (1): V4L/DVB (10216): saa7127: fix broken S-Video with saa7129 Martin Hicks (1): x86: push old stack address on irqstack for unwinder Martin K. Petersen (3): block: Don't verify integrity metadata on read error block: Remove obsolete BUG_ON block: Allow empty integrity profile Martin Kebert (1): lis3lv02d: add axes knowledge for HP 6710 Masami Hiramatsu (2): kprobes: fix module compilation error with CONFIG_KPROBES=n prevent kprobes from catching spurious page faults Matthew Garrett (5): eeepc-laptop: Add support for extended hotkeys eeepc-laptop: Check return values from rfkill_register eeepc-laptop: Implement rfkill hotplugging in eeepc-laptop PCI hotplug: Change link order of pciehp & acpiphp misc: dell-laptop should depend on POWER_SUPPLY Matthew Wilcox (1): PCI MSI: Fix undefined shift by 32 Matthias Dahl (1): V4L/DVB (9054): implement proper locking in the dvb ca en50221 driver Mauro Carvalho Chehab (6): V4L/DVB (10192): em28xx: fix input selection V4L/DVB (10201): Fixes cx88 compilation bug V4L/DVB (10208): zoran: Re-adds udev entry removed by changeset 60b4bde4 V4L/DVB (10209): tveeprom: Properly initialize tuner type (BZ#11367) V4L/DVB (10228): em28xx: fix audio output PCM IN selection V4L/DVB (10403): saa7134-alsa: saa7130 doesn't support digital audio Miao Xie (1): cpuset: fix possible deadlock in async_rebuild_sched_domains Michael Hennerich (9): Blackfin arch: Fix Bug - Kernel does not boot if re-program clocks Blackfin arch: Fix Bug - request lines with peripheral_request_list, but don't get freed with peripheral_free_list Blackfin arch: reset POLAR setting when acquiring a gpio for the first time Blackfin arch: Faster Implementation of csum_tcpudp_nofold() Blackfin arch: Update CM-BF527 kernel config Blackfin arch: Add BF561 PPI POLS, POLC Masks Blackfin arch: Update Copyright information Blackfin arch: Fix udelay implementation Blackfin arch: Remove outdated code Mike Frysinger (15): Blackfin arch: scrub comments/whitespace/cvs keywords Blackfin arch: add support for mobile ddr bf54x parts Blackfin arch: line up machine-/cpu- vars after BF54xM addition Blackfin arch: fix bug - Dmacopy failed in BF537-STAMP Blackfin arch: cleanup bf54x ifdef mess in gpio code MAINTIANERS: Blackfin: remove subscribers-only marking Blackfin arch: sync reboot handler with version in u-boot Blackfin arch: bfin_reset->_bfin_reset redirection no longer needed Blackfin arch: drop CONFIG_I2C_BOARDINFO ifdefs Blackfin arch: fixup board init function name Blackfin arch: read SYSCR on newer parts that mirror the bits of SWRST in it Blackfin arch: base SIC_IWR# programming on whether the MMR exists Blackfin arch: build jtag tty driver as a module by default Blackfin arch: cplb mananger: use a do...while loop rather than a for loop Blackfin arch: define bfin_memmap as static since it is only used here Mike Galbraith (1): sched: clear buddies more aggressively Mike Isely (1): V4L/DVB (10240): Fix obvious swapped names in v4l2_subdev logic Mike Rapoport (1): drivers/video/backlight: rename da903x to da903x_bl Mikulas Patocka (1): Fix memory corruption in console selection Misael Lopez Cruz (1): ASoC: OMAP: Initialize XCCR and RCCR registers in McBSP DAI driver Myron Stowe (1): ACPICA: Fix table entry truncation calculation NeilBrown (2): md: Allow read error in a single drive raid1 to be passed up. md: Ensure an md array never has too many devices. Nicolas Fournier (1): V4L/DVB (10233): [PATCH] Terratec Cinergy DT XS Diversity new USB ID (0ccd:0081) Nicolas Pitre (1): [ARM] 5366/1: fix shared memory coherency with VIVT L1 + L2 caches Nikanth Karthikesan (1): Mark mandatory elevator functions in the biodoc.txt Oleg Nesterov (2): Staging: android: task_get_unused_fd_flags: fix the wrong usage of tsk->signal ftrace: do_each_pid_task() needs rcu lock Oliver Neukum (1): HID: fix reversed logic in disconnect testing of hiddev Pallipadi, Venkatesh (1): ACPI: Enable bit 11 in _PDC to advertise hw coord Pasi Kärkkäinen (1): [libata] sata_sil: Fix compilation error with libata debugging enabled Paul Larson (1): Add enable_ms to jsm driver Paul Menage (2): cgroups: add cpu_relax() calls in css_tryget() and cgroup_clear_css_refs() cgroup: fix root_count when mount fails due to busy subsystem Paul Mundt (1): sh: Fix up spurious syscall restarting. Pavel Herrmann (1): lis3lv02d: add axes knowledge for HP 6730 Pekka Enberg (1): Merge branches 'topic/slab/fixes' and 'topic/slub/fixes' into for-linus Peter Zijlstra (4): sched: fix sync wakeups sched: symmetric sync vs avg_overlap sched: fix buddie group latency generic swap(): don't return a value from swap() Petr Vandrovec (1): firewire: core: Remove card from list of cards when enable fails Phil Sutter (14): MIPS: RB532: Fix bit swapping in rb532_set_bit() MIPS: RC32434: Define io_map_base for PCI controller MIPS: RB532: Add set_type() function to IRQ struct. MIPS: RB532: Auto disable GPIO alternate function MIPS: RB532: remove useless CF GPIO initialisation MIPS: RB532: Detect uart type, add platform device MIPS: RB532: Use driver_data instead of platform_data MIPS: RB532: Fix init of rb532_dev3_ctl_res MIPS: RB532: Fix set_latch_u5() MIPS: RB532: Move dev3 init code to devices.c MIPS: RB532: Remove {get,set}_434_reg() MIPS: RB532: Simplify dev3 init MIPS: RB532: Update headers MIPS: RB532: Export rb532_gpio_set_func() Philipp Zabel (1): regulator: move bq24022 init back to module_init instead of subsys_initcall Philippe De Muyter (1): tulip: fix 21142 with 10Mbps without negotiation Qinghuang Feng (3): Btrfs: check return value for kthread_run() correctly Btrfs: simplify iteration codes Btrfs: open_ctree() error handling can oops on fs_info Rafael J. Wysocki (13): PM: Fix compilation warning in kernel/power/main.c ACPI suspend: Fix compilation warnings in drivers/acpi/sleep.c PCI PM: Fix suspend error paths and testing facility breakage PCI PM: Fix hibernation breakage on EeePC 701 PCI PM: Power up devices before restoring their state PCI PM: Do not wait for buses in B2 or B3 during resume PCI PM: Fix handling of devices without drivers PCI PM: Check if the state has been saved before trying to restore it PCI PM: Fix saving of device state in pci_legacy_suspend PCI: PCIe portdrv: Simplify suspend and resume PCI PM: Do not disable and enable bridges during suspend-resume PCI PM: Read power state from device after trying to change it on resume PCI PM: make the PM core more careful with drivers using the new PM framework Ralf Baechle (7): MIPS: SMTC: Fix build after recent creditial changes. MIPS: Avoid destructive invalidation on partial cachelines. MIPS: Port "mm: invoke oom-killer from page fault" from UML / x86 MIPS: atomic_*(): Change type of intermediate variables. MIPS: Add return value checks to user_termio_to_kernel_termios() MIPS: IP27: Switch from DMA_IP27 to DMA_COHERENT MIPS: R2: Fix broken installation of cache error handler. Randy Dunlap (7): driver-core: fix kernel-doc parameter name Documentation: move DMA-mapping.txt to Doc/PCI/ libata: fix kernel-doc warnings sched: add missing kernel-doc in sched.h sunrpc: fix rdma dependencies maintainers: general@lists.openfabrics.org is moderated atyfb: fix CONFIG_ namespace violations Reinette Chatre (2): iwlwifi: clean key table in iwl_clear_stations_table iwlwifi: save PCI state before suspend, restore after resume Risto Suominen (1): fbdev/atyfb: Fix DSP config on some PowerMacs & PowerBooks Robert Krakora (4): V4L/DVB (10254): em28xx: Fix audio URB transfer buffer race condition V4L/DVB (10256): em28xx: Fix for KWorld 330U AC97 V4L/DVB (10257): em28xx: Fix for KWorld 330U Board V4L/DVB (10325): em28xx: Fix for fail to submit URB with IRQs and Pre-emption Disabled Robin Getz (5): Blackfin arch: Print out where the bootmode is coming from (for easier debugging). Blackfin arch: don't accidently re-enable interrupts Blackfin arch: Fix URL Blackfin arch: Add a few more instructions that can cause the trace buffer to be discontiguous Blackfin arch: Add ability to count and display number of NMI interrupts Robin Holt (3): sgi-xpc: ensure flags are updated before bte_copy sgi-xpc: Remove NULL pointer dereference. sgi-xpc: fix up stale DBUG_ON statements Roel Kluin (10): panasonic-laptop: fix X[ ARRAY_SIZE(X) ] Staging: usbip: usbip_start_threads(): handle kernel_thread failure Staging: poch: fix verification of memory area smsc911x: timeout reaches -1 drivers/net/skfp: if !capable(CAP_NET_ADMIN): inverted logic leds: Fix bounds checking of wm8350->pmic.led ALSA: alsa: time reaches -1, tested 0 net: variables reach -1, but 0 tested cassini/sungem: limit reaches -1, but 0 tested ALSA: pcm_oss: AFMT_S24_LE is set twice in return value Roland Dreier (1): Btrfs: Remove extra KERN_INFO in the middle of a line Roland McGrath (2): elf core dump: fix get_user use x86-64: fix int $0x80 -ENOSYS return Ron Mercer (3): qlge: bugfix: Fix endian issue when reading flash. qlge: bugfix: Add flash offset for second port. qlge: bugfix: Add missing netif_napi_del call. Russell King (4): [ARM] etherh: continue fixing build failure [ARM] msm: fix build errors [ARM] call undefined instruction exception handler with irqs enabled Merge branch 'omap-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Rusty Russell (3): cpumask: convert lib/smp_processor_id to new cpumask ops sched_rt: don't use first_cpu on cpumask created with cpumask_and module: remove over-zealous check in __module_get() Samuel Thibault (1): Fix my email address in qd65xx.[ch]/pata_qdi.c Sascha Hauer (1): mmc: Add a MX2/MX3 specific SDHC driver Sebastian Andrzej Siewior (1): V4L/DVB (10202): [PATCH] v4l/tvp514x: Don't write after line end Sebastiano Di Paola (1): net: packet socket packet_lookup_frame fix Sebastien Dugue (1): hrtimers: allow the hot-unplugging of all cpus Sergei Shtylyov (1): ide/libata: fix ata_id_is_cfa() (take 4) Seth Heasley (1): PCI: irq and pci_ids patch for Intel Tigerpoint DeviceIDs Shyam Iyer (1): net: Fix OOPS in skb_seq_read(). Sidney Amani (1): UBI: allow direct user-space I/O Simon Harrison (1): V4L/DVB (10210): Fix a bug on v4lgrab.c Simon Holm Thøgersen (1): ext4: fix wrong use of do_div Sonic Zhang (2): Blackfin arch: enable bfin_eth in bf51x by default Blackfin arch: Fix bug - Run "reboot" hangs bf518-ezbrd Stanley.Miao (1): ARM: OMAP: Fix McBSP spin_lock deadlock Stefan Richter (18): firewire: insist on successive self ID complete events firewire: unnecessary BM delay after generation rollover firewire: keep highlevel drivers attached during brief connection loss firewire: ohci: change "context_stop: still active" log message firewire: ohci: increase AT req. retries, fix ack_busy_X from Panasonic camcorders and others ieee1394: ohci1394: increase AT req. retries, fix ack_busy_X from Panasonic camcorders and others firewire: core: optimize card shutdown ieee1394: support for speeds greater than S800 ieee1394: sbp2: update a help string ieee1394: sbp2: fix payload limit at S1600 and S3200 ieee1394: sbp2: don't assume zero model_id or firmware_revision if there is none firewire: sbp2: fix payload limit at S1600 and S3200 firewire: sbp2: define some magic numbers as macros firewire: sbp2: fix DMA mapping leak on the failure path firewire: sbp2: add workarounds for 2nd and 3rd generation iPods ieee1394: sbp2: add workarounds for 2nd and 3rd generation iPods ieee1394: dv1394: move deprecation message from module init to file open async: use list_move_tail Stephen Hemminger (1): net: update documentation ip aliases Stephen Rothwell (2): powerpc/ps3: Printing fixups for l64 to ll64 convserion drivers/net sparc: fixup for sparseirq changes Steve French (4): [CIFS] Rename md5 functions to avoid collision with new rt modules [CIFS] revalidate parent inode when rmdir done within that directory [CIFS] some cleanup to dir.c prior to addition of posix_open [CIFS] Make socket retry timeouts consistent between blocking and nonblocking cases Steve Glendinning (1): smsc9420: fix interrupt signalling test failures Steve Hodgson (6): sfc: SFT9001: Enable robust link training sfc: SFX7101: Remove workaround for bad link training sfc: SFT9001: Fix speed reporting in 1G PHY loopback sfc: Fix post-reset MAC selection sfc: Reinitialise the PHY completely in case of a PHY or NIC reset sfc: Test for PHYXS faults whenever we cannot test link state bits Steven Rostedt (6): ring-buffer: fix alignment problem trace: print ftrace_dump at KERN_EMERG log level trace: stop all recording to ring buffer on ftrace_dump trace: set max latency variable to zero on default ring-buffer: reset timestamps when ring buffer is reset generic-ipi: use per cpu data for single cpu ipi calls Stuart Menefy (1): sh: Handle calling csum_partial with misaligned data Sunil Mushran (1): ocfs2: Wakeup the downconvert thread after a successful cancel convert Takashi Iwai (14): ALSA: hda - Fix PCM reference NID for STAC/IDT analog outputs ALSA: hda - Fix compile warning with CONFIG_SND_JACK=n Merge branch 'fix/asoc' into for-linus Merge branch 'fix/hda' into for-linus ALSA: hda - Add quirk for another HP dv5 model ALSA: hda - No widget selection for volume knob widgets in proc output Merge branch 'fix/hda' into for-linus Merge branch 'fix/asoc' into for-linus ALSA: hda - Add quirk for FSC Amilo Xi2550 ALSA: hda - Fix misc workqueue issues ALSA: hda - Add missing initialization for ALC272 ALSA: hda - Add missing COEF initialization for ALC887 Merge branch 'fix/hda' into for-linus Merge branch 'fix/usb-audio' into for-linus Takashi Yoshii (1): sh: Fix up T-bit error handling in SH-4A mutex fastpath. Tao Ma (1): ocfs2: Access the xattr bucket only before modifying it. Teemu Likonen (1): Documentation: update CodingStyle tips for Emacs users Tejun Heo (9): sata_nv: ck804 has borked hardreset too libata: fix EH device failure handling libata: move ata_dev_disable() to libata-eh.c libata: check onlineness before using SPD in sata_down_spd_limit() libata: clear dev->ering in smarter way libata: add @spd_limit to sata_down_spd_limit() libata: improve probe failure handling libata: add no penalty retry request for EH device handling routines libata: implement HORKAGE_1_5_GBPS and apply it to WD My Book Tero Roponen (1): ACPI: Fix crash on ASUS laptops Thadeu Lima de Souza Cascardo (1): ext4: Fix building with EXT4FS_DEBUG Theodore Ts'o (8): ext4: only use i_size_high for regular files ext4: Add sanity check to make_indexed_dir ext3: Add sanity check to make_indexed_dir jbd2: On a __journal_expect() assertion failure printk "JBD2", not "EXT3-fs" ext4: Fix ext4_free_blocks() w/o a journal when files have indirect blocks ext4: Initialize the new group descriptor when resizing the filesystem ext4: Remove bogus BUG() check in ext4_bmap() block: Fix documentation for blkdev_issue_flush() Thierry Vignaud (1): ACPI: Kconfig text - Fix the ACPI_CONTAINER module name according to the real module name. Thomas Gleixner (1): hrtimer: prevent negative expiry value after clock_was_set() Thomas Goff (1): IPv6: Fix multicast routing bugs. Thomas Renninger (1): ACPI: cpufreq: Remove deprecated /proc/acpi/processor/../performance proc entries Tim 'mithro' Ansell (1): lguest: disable the FORTIFY for lguest. Timothy S. Nelson (1): PCI: return error on failure to read PCI ROMs Tony Battersby (1): shm: fix shmctl(SHM_INFO) lockup with !CONFIG_SHMEM Tony Broad (1): V4L/DVB (10265): budget.c driver: Kernel oops: "BUG: unable to handle kernel paging request at ffffffff Tony Lindgren (2): ARM: OMAP: Fix omap34xx revision detection for ES3.1 ARM: OMAP: Fix hsmmc init, v2 Trent Piepho (6): V4L/DVB (10212): Convert to be a pci driver V4L/DVB (10222): zoran: Better syntax for initializing array module params V4L/DVB (10223): zoran: Remove global device array V4L/DVB (10224): zoran: Use pci device table to get card type V4L/DVB (10225): zoran: Remove zr36057_adr field V4L/DVB (10226): zoran: Get rid of extra module ref count Tsugikazu Shibata (1): Sync patch for jp_JP/stable_kernel_rules.txt Tyler Hicks (1): eCryptfs: Regression in unencrypted filename symlinks Uwe Kleine-Koenig (1): Blackfin arch: explicit add a might sleep to gpio_free Uwe Kleine-König (6): Use __SPIN_LOCK_UNLOCKED to initialize bad_irq_desc.lock annotate that [fp, #-4] is the saved lr rename platform_driver name "flash" to "sa1100-mtd" NVRAM depends on RTC_DRV_CMOS add another mailmap entry for Uwe Kleine-König Add Sascha Hauer to .mailmap Wang Cong (1): Btrfs: cleanup fs/btrfs/super.c::btrfs_control_ioctl() Yan Zheng (4): Btrfs: fix locking issue in btrfs_remove_block_group Btrfs: Fix infinite loop in btrfs_extent_post_op Btrfs: fix stop searching test in replace_one_extent Btrfs: fix tree logs parallel sync Yehuda Sadeh (1): Btrfs: fiemap support Yinghai Lu (1): irq, x86: fix lock status with numa_migrate_irq_desc Yusuf Altin (1): V4L/DVB (10195): [PATCH] add Terratec Cinergy T Express to dibcom driver Zhao Yakui (2): ACPI: Skip the first two elements in the _BCL package ACPI: proc_dir_entry 'video/VGA' already registered Zhu, Yi (1): iwlwifi: fix kernel oops when ucode DMA memory allocation failure philipl@overt.org (1): ricoh_mmc: Use suspend_late/resume_early 김규́› (1): ARM: OMAP: Mask interrupts when disabling interrupts, v2 ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:48 2009 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, J_CHICKENPOX_44 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQm5L183968 for ; Thu, 21 May 2009 15:26:48 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQhsF183930; Thu, 21 May 2009 15:26:43 -0500 Date: Thu, 21 May 2009 15:26:43 -0500 Message-Id: <200905212026.n4LKQhsF183930@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.29-rc6, created. v2.6.29-rc6 X-Git-Refname: refs/tags/v2.6.29-rc6 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 0715562512ca6cf14c1b8f08e09d5907118deaf0 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 annotated tag, v2.6.29-rc6 has been created at 0715562512ca6cf14c1b8f08e09d5907118deaf0 (tag) tagging 20f4d6c3a2a23c5d7d9cc7f42fbb943ca7a03d1f (commit) replaces v2.6.29-rc5 tagged by Linus Torvalds on Sun Feb 22 20:19:54 2009 -0800 - Log ----------------------------------------------------------------- Linux 2.6.29-rc6 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkmiI/AACgkQF3YsRnbiHLv/eQCbBsy+I+x4hmnyUa2qmeV0vCPE ViwAnift2Mc0j/7UFHRfpGz7ialRtHdn =o65b -----END PGP SIGNATURE----- Adam Baker (1): V4L/DVB (10619): gspca - main: Destroy the URBs at disconnection time. Adam Lackorzynski (1): jsm: additional device support Al Viro (1): Fix incomplete __mntput locking Alan Jenkins (1): PM/hibernate: fix "swap breaks after hibernation failures" Alex Chiang (3): PCI: Documentation: fix minor PCIe HOWTO thinko [IA64] Revert "prevent ia64 from invoking irq handlers on offline CPUs" [IA64] Remove redundant cpu_clear() in __cpu_disable path Alexey Dobriyan (3): kbuild: fix tags generation of config symbols mfd: fix sm501 section mismatches eeepc: should depend on INPUT Alexey Starikovskiy (1): ACPI: EC: Add delay for slow MSI controller Alok N Kataria (1): x86, vmi: TSC going backwards check in vmi clocksource Andi Kleen (4): kbuild: create the source symlink earlier in the objdir x86, mce: reinitialize per cpu features on resume x86, mce: use force_sig_info to kill process in machine check x86, mce: fix ifdef for 64bit thermal apic vector clear on shutdown Andrew Vasquez (3): [SCSI] qla2xxx: Properly acknowledge IDC notification messages. [SCSI] qla2xxx: Mask out 'reserved' bits while processing FLT regions. [SCSI] qla2xxx: Update version number to 8.03.00-k3. Andrew Victor (2): [ARM] 5390/1: AT91: Watchdog fixes [ARM] 5391/1: AT91: Enable GPIO clocks earlier Andrey Borzenkov (1): PM: Fix pm_notifiers during user mode hibernation Aneesh Kumar K.V (3): ext4: Fix lockdep warning ext4: Initialize preallocation list_head's properly ext4: Implement range_cyclic in ext4_da_writepages instead of write_cache_pages Anirban Chakraborty (2): [SCSI] qla2xxx: Remove interrupt request bit check in the response processing path in multiq mode. [SCSI] qla2xxx: Correct slab-error overwrite during vport creation and deletion. Anssi Hannula (1): HID: move tmff and zpff devices from ignore_list to blacklist Arjan van de Ven (4): scripts: add x86 register parser to markup_oops.pl scripts: add x86 64 bit support to the markup_oops.pl script Consolidate driver_probe_done() loops into one place PM/resume: wait for device probing to finish Arve HjønnevĂ¥g (2): PM: Wait for console in resume PM: Fix suspend_console and resume_console to use only one semaphore Atsushi Nemoto (1): atmel_serial might lose modem status change Avi Kivity (2): KVM: Avoid using CONFIG_ in userspace visible headers KVM: VMX: Flush volatile msrs before emulating rdmsr Benjamin Herrenschmidt (1): vmalloc: add __get_vm_area_caller() Bernhard Walle (1): Bernhard has moved Bill Nottingham (1): vt: Declare PIO_CMAP/GIO_CMAP as compatbile ioctls. Bjorn Helgaas (1): ACPI: remove CONFIG_ACPI_SYSTEM Boaz Harrosh (1): bsg: Fix sense buffer bug in SG_IO Brian King (3): [SCSI] ibmvfc: Fix command timeout errors [SCSI] ibmvfc: Fix rport relogin [SCSI] ibmvfc: Increase cancel timeout Chip Coldwell (1): cciss: PCI power management reset for kexec Chris Ball (1): x86, olpc: fix model detection without OFW Chris Mason (5): Btrfs: process mount options on mount -o remount, Btrfs: use larger metadata clusters in ssd mode Btrfs: don't clean old snapshots on sync(1) Btrfs: make a lockdep class for the extent buffer locks Btrfs: check file pointer in btrfs_sync_file Chris Wilson (16): drm: Potential use-after-free on error path. drm: Free the object ref on error. drm/i915: Cleanup trivial leak on execbuffer error path. drm/i915: hold mutex for unreference() in i915_gem_tiling.c drm/i915: refleak along pin() error path. drm: Do not leak a new reference for flink() on an existing name drm/i915: Set framebuffer alignment based upon the fence constraints. drm/i915: Release and unlock on mmap_gtt error path. drm/i915: unpin for an invalid memory domain. drm/i915: Unpin the ringbuffer if we fail to ioremap it. drm/i915: Unpin the hws if we fail to kmap. drm/i915: Unpin the fb on error during construction. drm/i915: Cleanup the hws on ringbuffer constrution failure. drm: Check for a NULL encoder when reverting on error path drm: Propagate failure from setting crtc base. drm/i915: Fix regression in 95ca9d Christian Borntraeger (1): [S390] Fix timeval regression on s390 Clemens Ladisch (2): sound: usb-audio: fix uninitialized variable with M-Audio MIDI interfaces sound: virtuoso: revert "do not overwrite EEPROM on Xonar D2/D2X" Dan Carpenter (3): ext4: Fix NULL dereference in ext4_ext_migrate()'s error handling HID: unlock properly on error paths in hidraw_ioctl() sx.c: avoid referencing freed memory if copy_from_user() fails Dan Williams (1): atmel-mci: fix initialization of dma slave data Dave Hansen (1): powerpc/mm: Fix numa reserve bootmem page selection David Brownell (2): omap_hsmmc: card detect irq bugfix omap_hsmmc: only MMC1 allows HCTL.SDVS != 1.8V David Howells (1): mn10300: fix oprofile David Vrabel (1): wusb: whci-hcd: always lock whc->lock with interrupts disabled David Woodhouse (2): iommu: fix Intel IOMMU write-buffer flushing Fix Intel IOMMU write-buffer flushing Davide Libenzi (1): timerfd: add flags check Ed Cashin (1): aoe: ignore vendor extension AoE responses Eric Anholt (3): drm/i915: Cut two args to set_to_gpu_domain that confused this tricky path. drm/i915: Don't let a device flush to prepare buffers clear new write_domains. drm/i915: Retire requests from i915_gem_busy_ioctl. Eric Biederman (1): seq_file: properly cope with pread Felix Blyakher (2): Revert "[XFS] use scalable vmap API" Revert "[XFS] remove old vmap cache" Frank Seidel (1): MAINTAINERS: Switch hdaps to Frank Seidel Frederic Weisbecker (1): tracing/function-graph-tracer: trace the idle tasks Geert Uytterhoeven (1): m68k: atari - Rename "mfp" to "st_mfp" Geoff Levand (1): powerpc/ps3: Move ps3_mm_add_memory to device_initcall Giuseppe Bilotta (2): lis3lv02d: support both one- and two-byte sensors lis3lv02d: add axes knowledge of HP Pavilion dv5 models Gregory CLEMENT (1): [ARM] 5400/1: Add support for inverted rdy_busy pin for Atmel nand device controller H. Peter Anvin (1): x86, mce: remove incorrect __cpuinit for mce_cpu_features() Hannes Reinecke (1): block: fix deadlock in blk_abort_queue() for drivers that readd to timeout list Hans Verkuil (2): V4L/DVB (10625): ivtv: fix decoder crash regression V4L/DVB (10626): ivtv: fix regression in get sliced vbi format Hans de Goede (1): hwmon: Fix ACPI resource check error handling Hartley Sweeten (1): [ARM] 5405/1: ep93xx: remove unused gesbc9312.h header Heiko Carstens (1): [S390] fix "mem=" handling in case of standby memory Helmut Schaa (1): sdhci: fix led naming Herbert Xu (1): crypto: lrw - Fix big endian support Igor Mammedov (1): [CIFS] Prevent OOPs when mounting with remote prefixpath. Ilpo Järvinen (1): sx.c: fix dbl statement if - add missing braces Ingo Molnar (5): sched: cpu hotplug fix inotify: fix GFP_KERNEL related deadlock Merge branch 'tip/tracing/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent x86: use the right protections for split-up pagetables PM: Split up sysdev_[suspend|resume] from device_power_[down|up], fix Isaku Yamahata (1): [IA64] fixes configs and add default config for ia64 xen domU James Smart (1): [SCSI] scsi_scan: add missing interim SDEV_DEL state if slave_alloc fails Jan Kara (3): jbd2: Fix return value of jbd2_journal_start_commit() Revert "ext4: wait on all pending commits in ext4_sync_fs()" jbd2: Avoid possible NULL dereference in jbd2_journal_begin_ordered_truncate() Jean Delvare (2): mfd: terminate pcf50633 i2c_device_id list hwmon: (f71882fg) Hide misleading error message Jean Pihet (2): omap_hsmmc: recover from transfer failures omap_hsmmc: Change while(); loops with finite version Jeff Layton (3): cifs: refactor new_inode() calls and inode initialization cifs: properly handle case where CIFSGetSrvInodeNumber fails cifs: posix fill in inode needed by posix open Jeff Mahoney (2): Btrfs: balance_level checks !child after access Btrfs: remove btrfs_init_path Jens Axboe (2): block: fix bad definition of BIO_RW_SYNC block: revert part of 18ce3751ccd488c78d3827e9f6bf54e6322676fb Jeremy Fitzhardinge (2): x86/cpa: make sure cpa is safe to call in lazy mmu mode x86/paravirt: make arch_flush_lazy_mmu/cpu disable preemption Jesse Barnes (4): drm/i915: take struct mutex around fb unref drm/i915: Keep refs on the object over the lifetime of vmas for GTT mmap. drm/i915: suspend/resume GEM when KMS is active drm/i915: fix WC mapping in non-GEM i915 code. Jiri Slaby (3): HID: fix bus endianity in file2alias x86_64: acpi/wakeup_64 cleanup x86_64: Fix S3 fail path Johannes Weiner (3): slab: introduce kzfree() swsusp: dont fiddle with swappiness swsusp: clean up shrink_all_zones() Joris van Rantwijk (1): ALSA: usb-audio - Workaround for misdetected sample rate with CM6207 Josef Bacik (1): Btrfs: make sure all pending extent operations are complete Josh Hunt (1): kbuild: add vmlinux to kernel rpm Julia Lawall (3): [SCSI] lpfc: introduce missing kfree Btrfs: fs/btrfs/volumes.c: remove useless kzalloc mfd: Fix egpio kzalloc return test KAMEZAWA Hiroyuki (2): mm: clean up for early_pfn_to_nid() mm: fix memmap init for handling memory hole Kristian Høgsberg (5): drm: Release user fbs in drm_release drm: Add locking around cursor gem operations. drm: Bring PLL limits in sync with DDX values. drm: Collapse identical i8xx_clock() and i9xx_clock(). drm: Use spread spectrum when the bios tells us it's ok. Krzysztof Helt (1): fbdev/drm: fix Kconfig submenu mess in "Graphics support" Len Brown (1): Merge branches 'release', 'bugzilla-12011', 'bugzilla-12632', 'misc' and 'suspend' into release Li Zefan (4): cgroups: update documentation about css_set hash table cgroups: fix possible use after free README: fix a wrong filename cpuset: various documentation fixes and updates Linus Torvalds (41): Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge branch 'kvm-updates/2.6.29' of git://git.kernel.org/pub/scm/virt/kvm/kvm Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/dvrabel/uwb Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge branch 'for-linus' of git://git.o-hand.com/linux-mfd Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'hibernate' Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 x86: Add IRQF_TIMER to legacy x86 timer interrupt descriptors Merge branch 'core/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Linux 2.6.29-rc6 Luca Bigliardi (1): uml: fix vde network backend in user mode linux Makito SHIOKAWA (1): [ARM] 5404/1: Fix condition in arm_elf_read_implies_exec() to set READ_IMPLIES_EXEC Marcelo Tosatti (4): KVM: mmu_notifiers release method KVM: PIT: fix i8254 pending count read KVM: x86: disable kvmclock on non constant TSC hosts KVM: x86: fix LAPIC pending count calculation Mark Brown (5): mfd: Initialise WM8350 interrupts earlier mfd: Improve diagnostics for WM8350 ID register probe mfd: Mark WM835x USB_SLV_500MA bit as accessible mfd: Fix TWL4030 build on some ARM variants mfd: Ensure all WM8350 IRQs are masked at startup Mark McLoughlin (1): KVM: Fix assigned devices circular locking dependency Markus Metzger (1): x86, ptrace, mm: fix double-free on race Martin Peschke (1): [SCSI] sg: fix device number in blktrace data Matthew Wilcox (1): PCI/MSI: fix msi_mask() shift fix Mauro Carvalho Chehab (3): V4L/DVB (10527): tuner: fix TUV1236D analog/digital setup V4L/DVB (10572): Revert commit dda06a8e4610757def753ee3a541a0b1a1feb36b 8250: fix boot hang with serial console when using with Serial Over Lan port Michael Buesch (2): spi-gpio: sanitize MISO bitvalue spi_bitbang: add more lowlevel function documentation Michael Neuling (2): powerpc/vsx: Fix VSX alignment handler for regs 32-63 bootgraph: fix for use with dot symbols Michael Tokarev (1): HID: blacklist Powercom USB UPS Mike Christie (1): [SCSI] libiscsi: Fix scsi command timeout oops in iscsi_eh_timed_out Mike Frysinger (1): kbuild,setlocalversion: shorten the make time when using svn Mike Murphy (2): PATCH [1/2] Documentation/driver-model/device.txt: fix struct device_attribute PATCH [2/2] Documentation/filesystems/sysfs.txt: fix descriptions of device attributes Neil Brown (1): block: fix booting from partitioned md array Nick Piggin (1): mm: task dirty accounting fix Nicolas Pitre (2): [ARM] 5401/1: Orion: fix edge triggered GPIO interrupt support [ARM] 5402/1: fix a case of wrap-around in sanity_check_meminfo() Paul E. McKenney (1): x86, rcu: fix strange load average and ksoftirqd behavior Paul Moore (2): cipso: Fix documentation comment selinux: Fix the NetLabel glue code for setsockopt() Paul Turner (1): vfs: separate FMODE_PREAD/FMODE_PWRITE into separate flags Pavel Machek (2): Pavel has moved hp accelerometer: add freefall detection Pekka Paalanen (3): mmiotrace: count events lost due to not recording trace: mmiotrace to the tracer menu in Kconfig doc: mmiotrace.txt, buffer size control change Peter Oberparleiter (1): [S390] sclp: handle empty event buffers Peter Zijlstra (3): futex: fix reference leak timers: more consistently use clock vs timer fs/super.c: add lockdep annotation to s_umount Philipp Zabel (1): mfd: fix htc-egpio iomem resource handling using resource_size Philippe De Muyter (1): floppy: request and release only the ports we actually use Philippe Gerum (1): powerpc/mm: Fix _PAGE_CHG_MASK to protect _PAGE_SPECIAL Pierre Ossman (1): Revert "sdhci: force high speed capability on some controllers" Pierre Willenbrock (1): drm/i915: Add missing mutex_lock(&dev->struct_mutex) Qinghuang Feng (1): Btrfs: remove unused code in split_state() Rabin Vincent (2): kbuild: add sys_* entries for syscalls in tags mmc_test: fix basic read test Rafael J. Wysocki (4): USB/PCI: Fix resume breakage of controllers behind cardbus bridges pm: fix build for CONFIG_PM unset PM: fix build for CONFIG_PM unset PM: Split up sysdev_[suspend|resume] from device_power_[down|up] Rakib Mullick (1): mfd: Fix sm501_register_gpio section mismatch Randy Dunlap (7): PCI: fix rom.c kernel-doc warning PCI: fix struct pci_platform_pm_ops kernel-doc PCI: fix missing kernel-doc and typos x86: dell-laptop: depends on POWER_SUPPLY docsrc: use config instead of menuconfig docbook: split kernel-api for device-drivers acpi/doc: add missing param value Richard Hughes (1): battery: don't assume we are fully charged when not charging or discharging Robert Jennings (1): [SCSI] ibmvscsi: Correct DMA mapping leak Robin Holt (1): [IA64] bte_copy of BTE_MAX_XFER trips BUG_ON. Roel Kluin (4): mfd: wm8350 tries reaches -1 FRV: __pte_to_swp_entry doesn't expand correctly paride/pg.c: xs(): &&/|| confusion [ARM] 5403/1: pxa25x_ep_fifo_flush() *ep->reg_udccs always set to 0 Roland Dreier (1): drm/i915: Fix potential AB-BA deadlock in i915_gem_execbuffer() Russell King (3): [ARM] omap: fix omap2_divisor_to_clksel() error return value [ARM] omap: fix _omap2_clksel_get_src_field() [ARM] omap: fix clock reparenting in omap2_clk_set_parent() Rusty Russell (2): cpumask: fix powernow-k8: partial revert of 2fdf66b491ac706657946442789ec644cc317e1a cpumask: Use cpu_*_mask accessors code: alpha Sergei Shtylyov (1): libata-sff: fix 32-bit PIO ATAPI regression Sheng Yang (4): KVM: Add kvm_arch_sync_events to sync with asynchronize events KVM: Fix racy in kvm_free_assigned_irq KVM: MMU: Map device MMIO as UC in EPT KVM: Fix INTx for device assignment Shyam_Iyer@Dell.com (1): [SCSI] qla2xxx: fix Kernel Panic with Qlogic 2472 Card. Steve Aarnio (1): drm/i915: Don't add panel_fixed_mode to the probed modes list at LVDS init. Steve French (5): [CIFS] ipv6_addr_equal for address comparison Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6 [CIFS] Fix oops in cifs_strfromUCS_le mounting to servers which do not specify their OS [CIFS] improve posix semantics of file create [CIFS] Fix multiuser mounts so server does not invalidate earlier security contexts Steven Rostedt (3): tracing: disable tracing while testing ring buffer tracing: have function trace select kallsyms tracing: limit the number of loops the ring buffer self test can make Subhash Peddamallu (1): fs/bio: bio_alloc_bioset: pass right object ptr to mempool_free Suresh Siddha (1): x86, pat: fix warn_on_once() while mapping 0-1MB range with /dev/mem Takashi Iwai (6): Revert "Sound: hda - Restore PCI configuration space with interrupts off" ALSA: usb-audio - Fix non-continuous rate detection ALSA: jack - Use card->shortname for input name Merge branch 'fix/hda' into for-linus Merge branch 'fix/misc' into for-linus Merge branch 'fix/usb-audio' into for-linus Tejun Heo (2): sata_nv: give up hardreset on nf2 vmalloc: call flush_cache_vunmap() from unmap_kernel_range() Thomas Gleixner (3): x86: warn if arch_flush_lazy_mmu_cpu is called in preemptible context x86: CPA avoid repeated lazy mmu flush x86, vm86: fix preemption bug Tobias Klauser (1): drm/i915: Storage class should be before const qualifier Tobias Lorenz (2): V4L/DVB (10532): Correction of Stereo detection/setting and signal strength indication V4L/DVB (10533): fix LED status output Tony Luck (2): [IA64] Build fix for __early_pfn_to_nid() undefined link error [IA64] xen_domu build fix Tony Vroon (1): fujitsu-laptop: Use RFKILL support bitmask from firmware Trent Piepho (1): V4L/DVB (10516a): zoran: Update MAINTAINERS entry Wei Yongjun (2): ext4: Fix to read empty directory blocks correctly in 64k mn10300: fix typo && -> || in arch/mn10300/unit-asb2305/pci.c Wim Van Sebroeck (1): [WATCHDOG] iTCO_wdt: fix SMI_EN regression 2 Yan Zheng (2): Btrfs: Avoid using __GFP_HIGHMEM with slab allocator Btrfs: hold trans_mutex when using btrfs_record_root_in_trans Yang Hongyang (1): atyfb: remove unused local variable `pwr_command' Yang Zhang (1): KVM: ia64: fix fp fault/trap handler Yauhen Kharuzhy (1): s3cmci: Fix hangup in do_pio_write() Yi Li (1): MMC: fix bug - SDHC card capacity not correct Zachary Amsden (1): MAINTAINERS: paravirt-ops maintainers update Zlatko Calusic (1): Add support for VT6415 PCIE PATA IDE Host Controller etienne (1): drm/radeon: update sarea copies of last_ variables on resume. john stultz (1): x86, hpet: fix for LS21 + HPET = boot hang wanzongshun (1): [ARM] 5398/1: Add Wan ZongShun to MAINTAINERS for W90P910 ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:26:49 2009 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_21,J_CHICKENPOX_32,J_CHICKENPOX_34,J_CHICKENPOX_41 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQne2184008 for ; Thu, 21 May 2009 15:26:49 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKQm8W183978; Thu, 21 May 2009 15:26:48 -0500 Date: Thu, 21 May 2009 15:26:48 -0500 Message-Id: <200905212026.n4LKQm8W183978@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.29-rc7, created. v2.6.29-rc7 X-Git-Refname: refs/tags/v2.6.29-rc7 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: b21232ea962bbaf0e909365f4964f6cceb2ba8ce 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 annotated tag, v2.6.29-rc7 has been created at b21232ea962bbaf0e909365f4964f6cceb2ba8ce (tag) tagging fec6c6fec3e20637bee5d276fb61dd8b49a3f9cc (commit) replaces v2.6.29-rc6 tagged by Linus Torvalds on Tue Mar 3 17:05:33 2009 -0800 - Log ----------------------------------------------------------------- Linux 2.6.29-rc7 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkmt0+QACgkQF3YsRnbiHLvvlQCeOtkWT8BYmw9aH4Lw713Z/Qdc 5CcAnjn9mbvo79spmk1KGS4y4KYHQvhJ =HfY+ -----END PGP SIGNATURE----- Adam Richter (1): USB: Quirk for Hummingbird huc56s / Conexant ACM modem Alan Cox (3): [MTD] map_rom has NULL erase pointer [libata] pata_amd: program FIFO [libata] pata_legacy: for VLB 32bit PIO don't try tricks with slop Alan Stern (3): USB: usb-storage: add IGNORE_RESIDUE flag for Genesys Logic adapters USB: g_file_storage: automatically disable stalls under Atmel USB: usb_get_string should check the descriptor type Alexey Korolev (1): [MTD] [LPDDR] qinfo_probe depends on lpddr Anand Gadiyar (1): USB: musb: resume suspended root hub on disconnect Andrei Birjukov (1): [ARM] at91: fix for Atmel AT91 powersaving Andres Salomon (2): [JFFS2] force the jffs2 GC daemon to behave a bit better sdhci: Add NO_BUSY_IRQ quirk for Marvell CAFE host chip Andrew Patterson (1): PCI: Enable PCIe AER only after checking firmware support Andrey Borzenkov (1): orinoco: do not resgister NULL pm_notifier function Andy Whitcroft (9): checkpatch: make in_atomic ok in the core checkpatch: do not warn about -p0 patches when checking files checkpatch: correctly handle type spacing in the face of modifiers checkpatch: pointer type star may have modifiers following checkpatch: a modifier is not an identifier at the end of a type checkpatch: extend attribute testing to all modifiers checkpatch: add __ref as a sparse modifier checkpatch: version 0.28 Input: synaptics - ensure we reset the device on resume Anssi Hannula (1): ALSA: aw2: do not grab every saa7146 based device Arjan Opmeer (1): Input: elantech - touchpad driver miss-recognising logitech mice Atsushi Nemoto (1): [MTD] [MAPS] physmap: fix wrong free and del_mtd_{partition,device} Bartlomiej Zolnierkiewicz (3): it821x: remove dead URL ide-cd: document capacity hack ide: fix refcounting in device drivers Bastien Nocera (1): Input: uvc - the button on the camera is KEY_CAMERA Beat Michel Liechti (1): firedtv: dvb_frontend_info for FireDTV S2, fix "frequency limits undefined" error Ben Backx (2): firesat: fix DVB-S2 device recognition firesat: add DVB-S support for DVB-S2 devices Ben Dooks (1): sdhci: Add quirk for controllers with no end-of-busy IRQ Ben Gardner (1): w1_ds2433: clear the validcrc flag after a write Benjamin Herrenschmidt (1): powerpc/44x: Fix address decoding setup of PCI 2.x cells Benny Halevy (1): EXPORT_SYMBOL(d_obtain_alias) rather than EXPORT_SYMBOL_GPL Bjørn Mork (2): cdc_ether: add usb id for Ericsson F3507g usbnet: make usbnet_get_link() fall back to ethtool_op_get_link() Catalin Marinas (1): [ARM] 5417/1: Set the correct cacheid for ARMv6 CPUs with ARMv7 style MMU Chris Leech (2): net headers: cleanup dcbnl.h net headers: export dcbnl.h Chris Wilson (1): drm: Correct unbalanced drm_vblank_put() during mode setting. Chris Wright (1): PCI: add some sysfs ABI docs Christoph Hellwig (1): Fix FREEZE/THAW compat_ioctl regression Clemens Noss (1): netns: build fix for net_alloc_generic Costantino Leandro (1): Staging: panel: fix oops on panel_cleanup_module Dan Streetman (1): Input: usbtouchscreen - allow reporting calibrated data Daniel Lezcano (2): veth : add the set_mac_address capability netns: fix double free at netns creation Daniel Mierswa (1): Input: atkbd - make forced_release_keys[] static Daniel Ritz (1): Input: usbtouchscreen - fix eGalax HID ignoring Dave Airlie (2): drm/i915: make hw page ioremap use ioremap_wc drm/i915: convert DRM_ERROR to DRM_DEBUG in phys object pwrite path David Altobelli (1): hpilo: new pci device David Brownell (2): USB: gadget: fix build error in omap_apollon_2420_defconfig usb: musb: make Davinci *work* in mainline David Daney (1): MIPS: Only allow Cavium OCTEON to be configured for boards that support it David Fries (1): ide: ide.c 'clear' fix, update "ide=nodma" documentation David Howells (1): Fix recursive lock in free_uid()/free_user_ns() David S. Miller (7): sparc64: Fix crashes in jbusmc_print_dimm() net: Kill skb_truesize_check(), it only catches false-positives. Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ David Woodhouse (1): [MTD] [MAPS] Remove MODULE_DEVICE_TABLE() from ck804rom driver. Dhananjay Phadke (2): netxen: fix physical port mapping netxen: handle pci bar 0 mapping failure Dhaval Giani (1): sched: don't allow setuid to succeed if the user does not have rt bandwidth Divy Le Ray (1): cxgb3: Add support for PCI ID 0x35. Dmitriy Taychenachev (2): USB: cdc-acm: add usb id for motomagx phones zaurus: add usb id for motomagx phones Dmitry Krivoschekov (1): USB: musb: fix musb_host_tx() for shared endpoint FIFO Eric Anholt (1): drm/i915: Fix use-before-null-check in i915_irq_emit(). Eric Leblond (3): netfilter: nf_conntrack_ipv6: fix nf_log_packet message in icmpv6 conntrack netfilter: nfnetlink_log: fix per-rule qthreshold override netfilter: nfnetlink_log: fix timeout handling Eric Sandeen (1): ext4: don't call jbd2_journal_force_commit_nested without journal Eric W. Biederman (2): PCI: pciehp: Handle interrupts that happen during initialization. veth: Fix carrier detect Eugene Teo (1): net: amend the fix for SO_BSDCOMPAT gsopt infoleak Felipe Balbi (2): usb: gadget: obex: select correct ep descriptors USB: musb: be careful with 64K+ transfer lengths (gadget side) Fenghua Yu (1): Fix iwlan DMA mapping direction Greg Kroah-Hartman (2): DVB: add firesat driver asix: new device ids Guennadi Liakhovetski (1): V4L/DVB (10663): soc-camera: fix S_CROP breakage on PXA and SuperH Harvey Harrison (1): ALSA: pcxhr.h replace signed one-bit bitfields Helge Bahmann (1): proc: fix PG_locked reporting in /proc/kpageflags Henrik Kurelid (5): firesat: update isochronous interface, add CI support firesat: avc resend firedtv: fix returned struct for ca_info firedtv: use length_field() of PMT as length firedtv: fix registration - adapter number could only be zero Herbert Xu (2): crypto: api - Fix module load deadlock with fallback algorithms netpoll: Add drop checks to all entry points Herton Ronaldo Krzesinski (1): w1: add missing Kconfig/Makefile entries for DS2431 slave driver HighPoint Linux Team (1): [SCSI] hptiop: Add new PCI device ID Hiroshi Shimamoto (1): sched_rt: don't start timer when rt bandwidth disabled Hugh Dickins (1): shmem: fix shared anonymous accounting Ilpo Järvinen (2): tcp: remove obsoleted comment about different passes tcp: fix retrans_out leaks Inaky Perez-Gonzalez (1): wimax/i2400m: driver loads firmware v1.4 instead of v1.3 Ingo Molnar (1): x86: i915 needs pgprot_writecombine() and is_io_mapping_possible() Ivan Vecera (1): r8169: read MAC address from EEPROM on init (2nd attempt) James Bottomley (2): [SCSI] fix ABORTED_COMMAND looping forever problem x86, Voyager: fix compile by lifting the degeneracy of phys_cpu_present_map Jan Engelhardt (1): netfilter: make proc/net/ip* print names from foreign NFPROTO Jan Kara (1): ext4: Fix deadlock in ext4_write_begin() and ext4_da_write_begin() Jarek Poplawski (2): vlan: Update skb->mac_header in __vlan_put_tag(). pkt_sched: sch_drr: Fix oops in drr_change_class. Jean Delvare (3): Input: psmouse - make MOUSE_PS2_LIFEBOOK depend on X86 i2c-dev: Clarify the unit of ioctl I2C_TIMEOUT i2c: Make sure i2c_algo_bit_data.timeout is HZ-independent Jens Axboe (4): block: fix bogus gcc warning for uninitialized var usage cciss: shorten 30s timeout on controller reset block: reduce stack footprint of blk_recount_segments() xen/blkfront: use blk_rq_map_sg to generate ring entries Jeremy Fitzhardinge (1): xen: disable interrupts early, as start_kernel expects Jesse Barnes (5): i915: suspend/resume interrupt state drm/i915: remove PLL debugging messages drm/i915: handle bogus VBT panel timing drm: Fix ordering of bit fields in EDID structure leading huge vsync values. drm: disable encoders before re-routing them Jesse Sung (1): USB: option: add BenQ 3g modem information Jie Yang (1): atl1c: Atheros L1C Gigabit Ethernet driver Joe Perches (1): tcp_scalable: Update malformed & dead url Joerg Roedel (1): intel-iommu: fix build error with INTR_REMAP=y and DMAR=n Josef Bacik (2): Btrfs: add better -ENOSPC handling Btrfs: try committing transaction before returning ENOSPC Josef Drexler (1): netfilter: xt_recent: fix proc-file addition/removal of IPv4 addresses Juan Jesus Garcia de Soria (1): ALSA: hda - Quirk for Acer Aspire 6530G Julia Lawall (1): firedtv: Use DEFINE_SPINLOCK Karen Xie (6): [SCSI] cxgb3i: transmit work-request fixes [SCSI] cxgb3i: added per-task data to track transmit progress [SCSI] cxgb3i: Outgoing pdus need to observe skb's MAX_SKB_FRAGS [SCSI] cxgb3i: added missing include in cxgb3i_ddp.h [SCSI] cxgb3i: Fix spelling errors in documentation [SCSI] cxgb3i: update the driver version to 1.0.1 Karsten Keil (1): Change email address Karsten Wiese (2): Fix an oops in i915_gem_retire_requests() USB: EHCI: slow down ITD reuse Kay Sievers (1): Input: struct device - replace bus_id with dev_name(), dev_set_name() Kiran Divekar (1): libertas: fix misuse of netdev_priv() and dev->ml_priv Krzysztof HaÅ‚asa (1): crypto: ixp4xx - Fix qmgr_request_queue build failure Krzysztof Sachanowicz (1): proc: proc_get_inode should de_put when inode already initialized Kuninori Morimoto (1): serial: sh-sci: fix overrun error handling for SH7785 SCIF. Kyle McMartin (4): x86, doc: fix references to Documentation/x86/i386/boot.txt drm: edid revision 0 is valid [IA64] enable setting DMAR on by default x86: enable DMAR by default Larry Finger (1): rtl8187: New USB ID's for RTL8187L Lee Nipper (1): crypto: ahash - Fix digest size in /proc/crypto Li Yang (1): USB: fsl_usb2_udc: fix potential queue head corruption Linus Torvalds (47): Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'firedtv-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge branch 'proc-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc drm: Fix shifts of EDID vsync offset/width fields. Merge git://git.infradead.org/iommu-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Make ieee1394_init a fs-initcall Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 Merge git://git.infradead.org/mtd-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'sh/for-2.6.29' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'fix/hda' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Revert "menu: fix embedded menu snafu" Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing/mmiotrace' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Linux 2.6.29-rc7 Luke Yelavich (1): ALSA: hda - add another MacBook Pro 3,1 SSID Mark Brown (1): [ARM] 5411/1: S3C64XX: Fix EINT unmask Mark Lord (1): sata_mv: fix SoC interrupt breakage Mark Nelson (2): powerpc: Fix 64bit memcpy() regression powerpc: Fix 64bit __copy_tofrom_user() regression Michael Buesch (2): b44: Unconditionally enable interrupt routing on reset b44: Disable device on shutdown Michael Neuling (1): powerpc: Fix load/store float double alignment handler Mike Frysinger (2): [MTD] [MAPS] blackfin: fix memory leak in error path [MTD] [MAPS] blackfin async requires complex mappings MĂ¡rton NĂ©meth (1): block: add documentation for register_blkdev() NeilBrown (3): md/raid10: Don't skip more than 1 bitmap-chunk at a time during recovery. md/raid10: Don't call bitmap_cond_end_sync when we are doing recovery. md: avoid races when stopping resync. Nick Piggin (1): mm: vmap fix overflow Nicola Soranzo (1): V4L/DVB (10659): em28xx: register device to soundcard for sysfs Ondrej Zary (1): pata_it821x: resume from hibernation fails with RAID volume Pallipadi, Venkatesh (1): fix warning in io_mapping_map_wc() Patrick Boettcher (1): V4L/DVB (10694): [PATCH] software IRQ watchdog for Flexcop B2C2 DVB PCI cards Patrick McHardy (2): Merge branch 'master' of /repos/git/net-2.6 netfilter: nf_conntrack: don't try to deliver events for untracked connections Patrik Kullman (1): USB: serial: add support for second revision of Ericsson F3507G WWAN card Paul E. McKenney (1): rcu: Teach RCU that idle task is not quiscent state at boot Paul Moore (1): selinux: Fix a panic in selinux_netlbl_inode_permission() Paul Mundt (1): sh: ap325rxa: Revert ov772x support. Pavel Emelyanov (1): ipv6: don't use tw net when accounting for recycled tw Pavel Machek (1): Staging: w35und: fix registration with wlan stack Pekka Enberg (1): Staging: w35und: fix usb_control_msg() error handling in wb35_probe() Pekka Paalanen (5): x86: count errors in testmmiotrace.ko x86: add far read test to testmmiotrace x86 mmiotrace: fix save/restore page table state x86 mmiotrace: split set_page_presence() x86 mmiotrace: fix race with release_kmmio_fault_page() Ralf Baechle (2): MIPS: CVE-2009-0029: Enable syscall wrappers. Revert "MIPS: Print irq handler description" Rambaldi (1): firedtv: rename files, variables, functions from firesat to firedtv Randy Dunlap (4): ISDN: fix sc/shmem printk format warning net: fix hp-plus build error Staging: rtl8187se: fix Kconfig dependencies menu: fix embedded menu snafu Rini van Zetten (1): gianfar: Do right check on num_txbdfree Roel Kluin (16): [MTD] slram: Handle negative devlength correctly Input: bf54x-keys - fix debounce time validation Input: pxa930_trkball - fix write timeout handling Input: ambakmi - fix timeout handling in amba_kmi_write() ATM: misplaced parentheses? TG3: &&/|| confusion sundance: missing parentheses? SMSC: timeout reaches -1 sunlance: Beyond ARRAY_SIZE of ib->btx_ring i2c: Fix misplaced parentheses i2c: Timeouts reach -1 amd74xx: device/vendor confusion atiixp: fix missing parentheses [IA64] Do not go beyond ARRAY_SIZE of unw.hash [IA64] Don't go beyond iosapic_intr_info's arraysize MIPS: Alchemy: In plat_time_init() t reaches -1, tested: 0 Roland McGrath (2): x86-64: syscall-audit: fix 32/64 syscall hole x86-64: seccomp: fix 32/64 syscall hole Russell King (3): [ARM] RiscPC: Fix etherh oops Add i2c_board_info for RiscPC PCF8583 [ARM] fix lots of ARM __devexit sillyness Sebastian Siewior (2): net/mv643xx: use GFP_ATOMIC while atomic net/mv643xx: don't disable the mib timer too early and lock properly Sergei Shtylyov (5): USB: musb: fix urb_dequeue() method USB: musb: host endpoint_disable() oops fixes USB: musb: fix data toggle saving with shared FIFO USB: musb: be careful with 64K+ transfer lengths, host side USB: musb: use right poll limit for low speed devices Seth Forshee (1): [ARM] 5416/1: Use unused address in v6_early_abort Stefan Assmann (1): PCI: AMD 813x B2 devices do not need boot interrupt quirk Stefan Richter (7): firesat: copyrights, rename to firedtv, API conversions, fix remote control input ieee1394: use correct barrier types between accesses of nodeid and generation ieee1394: add hpsb_node_read() and hpsb_node_lock() ieee1394: inherit ud vendor_id from node vendor_id ieee1394: remove superfluous assertions firedtv: cleanups and minor fixes firedtv: massive refactoring Steve Chen (1): ALSA: fix excessive background noise introduced by OSS emulation rate shrink Steve Glendinning (2): smsc9420: fix another postfixed timeout smsc9420: handle magic field of ethtool_eeprom Stuart Bennett (2): x86 mmiotrace: WARN_ONCE if dis/arming a page fails x86 mmiotrace: improve handling of secondary faults Sunil Mushran (4): ocfs2/dlm: Retract fix for race between purge and migrate ocfs2: Cleanup the lockname print in dlmglue.c ocfs2/dlm: Use ast_lock to protect ast_list ocfs2/dlm: Make dlm_assert_master_handler() kill itself instead of the asserter Takashi Iwai (7): ALSA: hda - Fix parse of init_verbs sysfs entry ALSA: emu10k1 - Fix digital/analog switch on audigy2 ZS Merge branch 'fix/hda' into for-linus Merge branch 'fix/misc' into for-linus ALSA: hda - Fix digital mic on dell-m4-1 and dell-m4-3 ALSA: hda - Add quirk for new HP xw series ALSA: hda - Add probe_mask default for Toshiba laptop with ALC268 Tao Ma (3): ocfs2: Access and dirty the buffer_head in mark_written. ocfs2: Use the right access_* method in ctime update of xattr. ocfs2: lock the metaecc process for xattr bucket Tejun Heo (1): [SCSI] sd: revive sd_index_lock Theodore Ts'o (3): ext4: Add fallback for find_group_flex ext4: Remove duplicate call to ext4_commit_super() in ext4_freeze() ext4: Reorder fs/Makefile so that ext2 root fs's are mounted using ext2 Thomas Gleixner (1): [JFFS2] fix mount crash caused by removed nodes Thomas Hellstrom (3): drm: Don't return ERESTARTSYS to user-space. drm: Wake up all lock waiters when the master disappears. drm: Avoid client deadlocks when the master disappears. Tiger Yang (1): ocfs2: set gap to seperate entry and value when xattr in bucket Tim Blechmann (1): x86: oprofile: don't set counter width from cpuid on Core2 Tobias Diedrich (1): net: forcedeth: Fix wake-on-lan regression Tobias Klauser (1): sh: Storage class should be before const qualifier Tony Battersby (1): intel-iommu: fix endless "Unknown DMAR structure type" loop Uwe Bugla (2): V4L/DVB (10695): Update Technisat card documentation V4L/DVB (10696): Remove outdated README for the flexcop-driver Uwe Kleine-König (4): Input: corgikbd - mark probe function as __devinit Input: corgi_ts - mark probe function as __devinit Input: omap-keypad - mark probe function as __devinit Input: spitzkbd - mark probe function as __devinit Vasanthakumar Thiagarajan (1): ath9k: Fix panic upon attach failure Vegard Nossum (1): mm: fix lazy vmap purging (use-after-free error) Venkatesh Pallipadi (2): gpu/drm, x86, PAT: Handle io_mapping_create_wc() errors in a clean way gpu/drm, x86, PAT: io_mapping_create_wc and resource_size_t Vikram Pandita (1): USB: musb: fix srp sysfs entry deletion Yinghai Lu (4): PCI quirk: enable MSI on 8132 [SCSI] mpt: fix disable lsi sas to use msi as default PCI: don't enable too many HT MSI mappings x86: fix init_memory_mapping() to handle small ranges Yu Zhao (1): VT-d: handle Invalidation Queue Error to avoid system hang leandro Costantino (1): Staging: rtl8187se: Fix oops and memory poison caused by builtin ieee80211. roel kluin (1): sungem: another error printed one too early wengang wang (1): ocfs2: add IO error check in ocfs2_get_sector() ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:27:05 2009 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,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKR5f4184198 for ; Thu, 21 May 2009 15:27:05 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKR2ZQ184143; Thu, 21 May 2009 15:27:02 -0500 Date: Thu, 21 May 2009 15:27:02 -0500 Message-Id: <200905212027.n4LKR2ZQ184143@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.30-rc3, created. v2.6.30-rc3 X-Git-Refname: refs/tags/v2.6.30-rc3 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: b2fdb301af8f488952aaab7de3ff8d3294c3274f 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 annotated tag, v2.6.30-rc3 has been created at b2fdb301af8f488952aaab7de3ff8d3294c3274f (tag) tagging 091069740304c979f957ceacec39c461d0192158 (commit) replaces v2.6.30-rc2 tagged by Linus Torvalds on Tue Apr 21 20:07:15 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.30-rc3 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAknuiekACgkQF3YsRnbiHLsmGgCdHtIQKhBM9qBPw/ma0vTXZDOU kesAoKqbiIeaVVPcoJpBkbonwQv4hQ19 =XgA3 -----END PGP SIGNATURE----- Aaro Koskinen (1): [ARM] 5450/1: Flush only the needed range when unmapping a VMA Adrian McMenamin (1): Documentation/filesystems: remove out of date reference to BKL being held Ajit Khaparde (1): be2net: fix for default setting of pause auto-negotiation Akinobu Mita (1): hugetlbfs: return negative error code for bad mount option Al Viro (7): Fix AUTOFS_DEV_IOCTL_REQUESTER_CMD Touch all affected namespaces on propagation of mount Safer nfsd_cross_mnt() No need for crossing to mountpoint in audit_tag_tree() Fix autofs_expire() autofs4: use memchr() in invalid_string() reiserfs: fix j_last_flush_trans_id type Alan Cox (4): ata: Report 16/32bit PIO as best we can vfat: Note the NLS requirement Staging: aten2011: Clean up some tty bits pata_via: Cache and rewrite the device bit Alan Stern (2): USB: usb-storage: augment unusual_devs entry for Simple Tech/Datafab usb-storage: fix mistake in Makefile Alex Chiang (1): sysfs: don't use global workqueue in sysfs_schedule_callback() Alexander Beregalov (38): fs_enet: convert to netdev_ops ibm_newemac: convert to netdev_ops ariadne: convert to net_device_ops am79c961a: convert to net_device_ops at91_ether: convert to net_device_ops ep93xx_eth: convert to net_device_ops ether1: convert to net_device_ops ether3: convert to net_device_ops xtsonic: convert to net_device_ops tsi108_eth: convert to net_device_ops tc35815: convert to net_device_ops sun3_82586: convert to net_device_ops sh_eth: convert to net_device_ops macsonic: convert to net_device_ops macb: convert to net_device_ops mac89x0: convert to net_device_ops isa-skeleton: convert to net_device_ops ioc3-eth: convert to net_device_ops eth_v10: convert to net_device_ops ehea: Fix incomplete conversion to net_device_ops a2065: convert to net_device_ops atarilance: convert to net_device_ops au1000: convert to net_device_ops bfin_mac: convert to net_device_ops declance: convert to net_device_ops Input: hp_sdc_rtc should depend on serio Staging: at76: convert to netdev_ops Staging: epl: convert to netdev_ops Staging: et131x: convert to netdev_ops Staging: otus: convert to netdev_ops Staging: rt2860: convert to netdev_ops Staging: rt2870: convert to netdev_ops Staging: rt3070: convert to netdev_ops Staging: slicoss: convert to netdev_ops Staging: sxg: convert to netdev_ops Staging: wlan-ng: convert to netdev_ops Staging: line6: convert to snd_card_create() fs/compat_ioctl: fix build when !BLOCK Alexander Duyck (5): net: netif_device_attach/detach should start/stop all queues ixgbe: only allow WOL for 82599 KX4 NIC igb: fix unused external references introduced with sr-iov changes igbvf: fix unused external references igb: do not check for vf_data if we didn't enable vfs Anatolij Gustschin (2): phylib: Allow early-out in phy_change phylib: Add interrupt source check function to M88E1121R driver Andi Kleen (1): Don't set relatime when noatime is specified Arjan van de Ven (4): Input: i8042 - introduce a tougher reset Input: i8042 - add a DMI table for the i8042.reset option Input: remove unnecessary synchronize_rcu() call driver synchronization: make scsi_wait_scan more advanced Arve HjønnevĂ¥g (8): Staging: binder: Remove VM_EXEC check. Staging: binder: Don't create two proc entries with the same name if the driver is opened twice in one process. Staging: binder: mmap fixes. Staging: binder: Add more offset validation. Staging: binder: Keep a reference to the files_struct while the driver is mmapped Staging: binder: Cast to uintptr_t instead of size_t when aligning pointers Staging: binder: Prevent the wrong thread from adding a transaction to the stack. Staging: binder: Defer flush and release operations to avoid deadlocks. Atsushi Nemoto (1): phylib: Fix delay argument of schedule_delayed_work Barry Carroll (1): Input: atkbd - add forced release keys quirk for Samsung NC20 Bartlomiej Zolnierkiewicz (1): ide: fix barriers support Ben Dooks (20): [ARM] s3c2410_defconfig: update to 2.6.30-rc2 [ARM] s3c2410_defconfig: Update network options [ARM] s3c2410_defconfig: Update machine configuration [ARM] s3c2410_defconfig: Add MMC/SD core and drivers [ARM] s3c2410_defconfig: Add sound drivers [ARM] s3c2410_defconfig: Add video/radio drivers [ARM] s3c2410_defconfig: Update filesystem options [ARM] s3c2410_defconfig: Update USB device drivers [ARM] s3c2410_defconfig: Update miscellaneous drivers [ARM] S3C: Export s3c_gpio_cfgpin and s3c_gpio_setpull for modules ASoC: Fix jive_wm8750.c build problems ASoC: s3c-i2s-v2.c fix for s3c_i2sv2_iis_calc_rate ASoC: Fix s3c-i2s-v2.c snd_soc_dai changes ASoC: Fix include build error in s3c2412-i2s.c [ARM] S3C24XX: Fix sparse error in gpiolib.c [ARM] S3C: Fix sparse warning from missing 's3c_device_hwmon' [ARM] JIVE: Fix sparse warnings about items which should be static [ARM] Anubis: Fix sparse warnings for items that should be static [ARM] Osiris: Fix double initialisation in machine block [ARM] S3C: Fix ADC driver sparse warning Ben Hutchings (3): net: Update maintainers sfc: Match calls to netif_napi_add() and netif_napi_del() sfc: Use correct macro to set event bitfield Ben Nizette (1): Input: ads7846 - fix unsafe disable_irq Brian Haley (1): Bonding: fix zero address hole bug in arp_ip_target list Chris Mason (7): Export filemap_write_and_wait_range Add block_write_full_page_endio for passing endio handler Btrfs: use WRITE_SYNC for synchronous writes Btrfs: add a priority queue to the async thread helpers Btrfs: fix oops on page->mapping->host during writepage Btrfs: use the right node in reada_for_balance Btrfs: fix btrfs fallocate oops and deadlock Christian Ehrhardt (1): [S390] s390: move machine flags to lowcore Christoph Hellwig (4): md: tiny md.h cleanups block: move bio list helpers into bio.h GFS2: cleanup file_operations mess kill vfs_stat_fd / vfs_lstat_fd Cliff Wickman (4): x86: UV BAU and nodes with no memory x86: UV BAU messaging timeouts x86: UV: BAU partition-relative distribution map x86: UV BAU distribution and payload MMRs Corey Minyard (3): ipmi: fix platform return check ipmi: test for event buffer before using ipmi: fix statistics counting issues Cornelia Huck (1): [S390] dasd: Use the new async framework for autoonlining. Dan Carpenter (1): phy: error handling for platform_device_register_simple() Daniel Mack (3): ALSA: snd-usb-caiaq: clean up header includes ALSA: snd-usb-caiaq: rename files to remove redundant information in file pathes ASoC: pxa-ssp: allow setting of dai format 0 Daniel Ribeiro (2): [ARM] pxa: fix typo of cs_deassert() in pxa2xx-spi.c pxa2xx_spi: restore DRCMR on resume Daniel T Chen (2): ALSA: Intel8x0: Remove conflicting quirk for SSID 0x103c0934 ALSA: Intel8x0: Add hp_only quirk for SSID 0x1028016a (Dell Inspiron 8600) Daniele Napolitano (2): Staging: rt2870: add ID for Sitecom WL-315 otus/zdusb.c: additional USB idnetifier Darius Augulis (2): MX1ADS: remove I2C ifdefs Fix ifdef in plat-mxc/irc.c Dave Airlie (1): drm: check for minor master before allowing drop master. Dave Jiang (1): edac: ppc mpc85xx fix mc err detect David Brownell (3): USB: musb_host, minor enqueue locking fix (v2) USB: musb_host, fix ep0 fifo flushing spi: documentation: emphasise spi_master.setup() semantics David Howells (10): MN10300: Discard duplicate PFN_xxx() macros MN10300: Wire up missing system calls MN10300: Stop gcc from generating uninitialised variable warnings after BUG() The default CONFIG_BUG=n version of BUG() should have an empty do...while RCU: Don't try and predeclare inline funcs as it upsets some versions of gcc FRV: Don't attempt to #include as it doesn't exist FS-Cache: Add MAINTAINERS record for FS-Cache and CacheFiles frv: insert PCI root bus resources for the MB93090 devel motherboard FRV: Fix the section attribute on UP DECLARE_PER_CPU() PERCPU: Collect the DECLARE/DEFINE declarations together David S. Miller (4): forcedeth: Use napi_complete() not __napi_complete(). Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ sparc64: Fix smp_callin() locking. Revert "rose: zero length frame filtering in af_rose.c" David Vrabel (6): USB: add reset endpoint operations USB: whci-hcd: provide a endpoint_reset method USB: whci-hcd: check return value of usb_hcd_link_urb_to_ep() WUSB: disconnect all devices when stopping a WUSB HCD WUSB: fix oops when completing URBs for disconnected devices WUSB: correct format of wusb_chid sysfs file David Woodhouse (1): Fix i_mutex vs. readdir handling in nfsd Denis V. Lunev (1): pxafb: lcsr1 is unused without CONFIG_FB_PXA_OVERLAY Dimitri Sivanich (1): [IA64] smp_flush_tlb_mm() should only send IPI's to cpus in cpu_vm_mask Dmitry Adamushko (1): x86: fix microcode driver newly spewing warnings Dmitry Torokhov (3): Input: gameport - fix attach driver code Input: atkbd - add forced release keys quirk for Samsung Q45 Merge branch 'next' into for-linus Dr. Greg Wettstein (1): USB device codes for Motorola phone. Eric Dumazet (1): packet: avoid warnings when high-order page allocation fails Eric Miao (5): [ARM] pxa/colibri: fix missing variable name in inline functions ASoC: magician: remove un-necessary #include of pxa-regs.h and hardware.h Input: ads7846 - introduce platform specific way to synchronize sampling Input: da9034-ts - add Bin Yang as co-author of the driver Input: da9034-ts - make pen {down,up} events more reliable Eric Paris (1): scsi: mpt: suppress debugobjects warning Etienne Basset (1): Smack: check for SMACK xattr validity in smack_inode_setxattr Evgeniy Polyakov (13): Staging: pohmelfs: Populate dentry cache when receiving the new readdir entry. Staging: Pohmelfs: Move parent lock to the place where we really have to send a lookup request to the server. Staging: Pohmelfs: Disable read lock in pohmelfs_getattr(). Staging: Pohmelfs: Added 'need_lock' variable into debug print. Staging: Pohmelfs: Set NETFS_INODE_REMOTE_SYNCED and clear NETFS_INODE_OWNED bits in the root inode. Staging: Pohmelfs: Extend remount option. Staging: Pohmelfs: Sync fs before killing it, since dentry cache is shrunk before writeback is invoked via generic_shutdown_super() Staging: Pohmelfs: Reduce debugging noise about non-existing objects. Staging: Pohmelfs: Use wait_on_page_timeout when waiting for remote directory sync instead of hardcoded 25 seconds. Staging: Pohmelfs: Drop ftrans debugging code. Staging: Pohmelfs: Added ->show_stats() callback. Staging: Pohmelfs: Added IO permissions and priorities. Staging: Pohmelfs: Add load balancing between network states with the same priority. FUJITA Tomonori (1): block: fix SG_IO to return a proper error value Gautham R Shenoy (1): sched: Avoid printing sched_group::__cpu_power for default case Geert Uytterhoeven (1): Staging: STLC45XX should depend on GENERIC_HARDIRQS Gerald Schaefer (1): [S390] appldata: Use new mod_virt_timer_periodic() function. Greg Kroah-Hartman (3): driver core: prevent device_for_each_child from oopsing Revert USB: usb-serial ch341: support for DTR/RTS/CTS Staging: go7007: fix build issues H Hartley Sweeten (1): kernel/softirq.c: fix sparse warning Hans J. Koch (1): UIO: fix specific device driver missing statement for depmod Hartley Sweeten (2): [ARM] 5451/1: ep93xx:core.c: build warning fix [ARM] 5454/1: ep93xx_eth: fix sparse warnings Heiko Carstens (3): [S390] wire up preadv/pwritev system calls [S390] call nmi_enter/nmi_exit on machine checks [S390] smp: fix cpu_possible_map initialization Helge Deller (1): drivers/input/serio/hp_sdc.c: fix crash when removing hp_sdc module Herbert Xu (3): gro: Normalise skb before bypassing GRO on netpoll VLAN path tun: Fix crash with non-GSO users gro: Restore correct value to gso_size Hirokazu Takata (2): m32r: move include/asm-m32r headers to arch/m32r/include/asm m32r: move include/asm-m32r/* to arch/m32r/include/asm/ Holger Schurig (2): imx21: fixes some clocknames imx21: activate i2c Huang Weiyi (2): [ARM] pxa/em-x270: remove duplicated #include [ARM] S3C: remove duplicated #include Hugh Dickins (3): powerpc: Allow 256kB pages with SHMEM Revert "kobject: don't block for each kobject_uevent". mm: pass correct mm when growing stack Igor Mammedov (1): Remote DFS root support. Ilpo Järvinen (2): tcp: fix >2 iw selection Input: pc110pad - remove unused variable dev Ilya Yanok (1): qong: remove AIPS[12] mappings from machine-specific iotable Ingo Molnar (1): x86: disable X86_PTRACE_BTS for now Isaku Yamahata (1): [IA64] fix allmodconfig compilation breakage. Jack Steiner (2): x86, UV: Fix for nodes with memory and no cpus x86, uv: add Kconfig dependency on NUMA for UV systems Jack Stone (1): ide: Remove void casts James Bottomley (1): tg3: fix big endian MAC address collection failure Jan Glauber (2): [S390] extend virtual timer interface by mod_virt_timer_periodic [S390] qdio: remove dead timeout handler Jarkko Nikula (2): ASoC: OMAP: Fix DSP_B format in OMAP McBSP DAI driver ASoC: OMAP: Fix FS polarity in OSK5912 machine driver Jaroslav Kysela (6): [ALSA] hda_intel: fix unexpected ring buffer positions [ALSA] pcm-midlevel: Add more strict buffer position checks based on jiffies [ALSA] intel8x0: an attempt to make ac97_clock measurement more reliable [ALSA] intel8x0: do not use zero value from PICB register [ALSA] intel8x0: fix wrong conditions in ac97_clock measure routine [ALSA] intel8x0: add one retry to the ac97_clock measurement routine Jason Baron (1): Driver core: remove pr_fmt() from dynamic_dev_dbg() printk Jaswinder Singh Rajput (2): x86: pci-swiotlb.c swiotlb_dma_ops should be static x86, documentation: kernel-parameters replace X86-32,X86-64 with X86 Jay Vosburgh (1): bonding: Remove debug printk Jean Delvare (1): go7007: Convert to the new i2c device binding model Jeff Layton (9): cifs: flush data on any setattr cifs: vary timeout on writes past EOF based on offset (try #5) cifs: remove dnotify thread code cifs: no need to use rcu_assign_pointer on immutable keys cifs: fix unicode string area word alignment in session setup cifs: fix buffer size for tcon->nativeFileSystem field cifs: add cFYI messages with some of the saved strings from ssetup/tcon cifs: remove unneeded bcc_ptr update in CIFSTCon cifs: when renaming don't try to unlink negative dentry Jens Axboe (13): block: fix bad spelling of quiesce Document and move the various READ/WRITE types cfq-iosched: use rw_is_sync() to see if rw flags are sync or not cfq-iosched: get rid of private SYNC/ASYNC defines as-iosched: get rid of private REQ_SYNC/REQ_ASYNC defines block: update biodoc.txt on plugging buffer: switch do_emergency_thaw() away from pdflush_operation() cfq-iosched: don't delay queue kick for a merged request bio: add documentation to bio_alloc() cfq-iosched: no need to save interrupts in cfq_kick_queue() cfq-iosched: tweak kick logic a bit more cfq-iosched: log responsible 'cfqq' in idle timer arm cfq-iosched: add close cooperator code Jesse Brandeburg (1): e1000/e1000: fix compile warning Jiri Slaby (1): Input: mainstone-wm97xx - fix condition in pen_up Joe Perches (4): ALSA: hda_intel.c - Consolidate bitfields ALSA: MAINTAINERS - Update SOUND MAINTAINERS: remove include/asm-*/suspend* file patterns MAINTAINERS: update KMEMTRACE pattern after file rename Jonas Bonn (1): drm: set/clear is_master when master changed Jonathan Corbet (1): Trivial: fix a typo in slow-work.h Jonathan McDowell (1): usb gadget: fix ethernet link reports to ethtool Justin Mattock (1): ALSA: add missing definitions(letters) to HD-Audio.txt KAMEZAWA Hiroyuki (1): memcg: use rcu_dereference to access mm->owner KOSAKI Motohiro (3): sysfs: sysfs poll keep the poll rule of regular file. proc: mounts_poll() make consistent to mdstat_poll vmscan,memcg: reintroduce sc->may_swap Kay Sievers (2): driver core: allow non-root users to listen to uevents driver: dont update dev_name via device_add path Kim Kyuwon (1): USB: musb: fix possible panic while resuming Krzysztof Halasa (1): rtc-cmos: fix printk output Kumar Gala (3): powerpc: Fix tlbilx opcode powerpc: Add support for early tlbilx opcode powerpc/mm: Fix compile warning Lai Jiangshan (1): tracing, sched: mark get_parent_ip() notrace Li Zefan (10): ALSA: sound/core: use memdup_user() ALSA: sound/isa: use memdup_user() ALSA: sound/usb: use memdup_user() ALSA: sound/pci: use memdup_user() xattr: use memdup_user() btrfs: use memdup_user() sysfs: use memdup_user() xfs: use memdup_user() ncpfs: use memdup_user() ecryptfs: use memdup_user() Linus Torvalds (39): acpi-cpufreq: fix 'smp_call_function_many()' confusion Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'x86/uv' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev Get rid of final remnants of include/asm-$(ARCH) Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Remove 'recurse into child resources' logic from 'reserve_region_with_split()' Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-lguest-and-virtio Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 Merge branch 'sh/for-2.6.30' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Linux 2.6.30-rc3 Linus Walleij (1): [ARM] 5455/1: Fix IRQ noise from VIC code Lior Dotan (1): Revert Staging: SLICOSS: use gfp_kernel where possible Ma Ling (1): drm: clean dirty memory after device release Magnus Damm (3): Driver Core: early platform driver clocksource: pass clocksource to read() callback clocksource: add enable() and disable() callbacks Marcelo Tosatti (2): [IA64] export smp_send_reschedule virtio: fix suspend when using virtio_balloon Marek Vasut (2): [ARM] pxa: add missing declaration of pxa26x_init_irq() [ARM] pxa: PalmTX and PalmT5 USB fixes Mark Brown (7): ASoC: Disable S3C64xx support in Kconfig Input: wm97xx - don't specify IRQF_SAMPLE_RANDOM [ARM] 5449/1: S3C: Use disable_irq_nosync() to fix boot lockups [ARM] SMDK6410: Request GPIOs for LCD power control mx31ads: imoux pins should be passed in as unsigned int mx31ads: Depend on all the WM8350 core dependencies for WM1133-EV1 board mx31ads: Mark as having full regulatoion constraints with 1133-EV1 board Mark Lord (2): sata_mv: tidy up qc->tf usage in qc_prep() functions sata_mv: workaround for multi_count errata sata24 Markus Brunner (1): gianfar: stop send queue before resetting gianfar Martin Schwidefsky (5): [S390] stp synchronization retry timer [S390] fix idle time accounting [S390] cpu hotplug and accounting values [S390] add read_persistent_clock [S390] boot cputime accounting Matias Zabaljauregui (1): lguest: fix crash on vmlinux images Matt Kraai (2): AFS: Guard afs_file_readpage_read_complete() definition with CONFIG_AFS_FSCACHE lguest: tell git to ignore Documentation/lguest/lguest Matt Mackall (1): MAINTAINERS: add Matt Mackall to embedded maintainers Matthew Garrett (1): USB: qcserial: Add extra device IDs Michael Ellerman (1): dynamic debug: resurrect old pr_debug() semantics as pr_devel() Michael Hennerich (2): Input: ad7877, ad7879 - remove depreciated IRQF_SAMPLE_RANDOM flag Input: bf54x-keys - remove depreciated IRQF_SAMPLE_RANDOM flag Michal Schmidt (1): skge: fix occasional BUG during MTU change Mike Mason (1): powerpc/pseries: Set error_state to pci_channel_io_normal in eeh_report_reset() Mike Rapoport (1): [ARM] pxa/em-x270: explicitly set .gpio_cs in TDO35S SPI chip data Miklos Szeredi (6): splice: split up __splice_from_pipe() splice: remove i_mutex locking in splice_from_pipe() splice: fix i_mutex locking in generic_splice_write() ocfs2: fix i_mutex locking in ocfs2_splice_to_file() splice: remove generic_file_splice_write_nolock() splice: add helpers for locking pipe inode Ming Lei (1): driver core: fix driver_match_device Mithlesh Thukral (4): Staging: sxg: Fire watchdog timer at end of open routine to change the link Staging: sxg: Use correct queue_id for transmitting non-TCP packets Staging: sxg: Fix sleep in atomic context warning while loading driver Staging: sxg: Fix leaks and checksum errors in transmit code path NeilBrown (4): md: allow setting newly added device to 'in_sync' via sysfs. md: improve usefulness and accuracy of sysfs file md/sync_completed. md: update sync_completed and reshape_position even more often. md: support bitmaps on RAID10 arrays larger then 2 terabytes Nick Piggin (2): brd: support barriers brd: fix cacheflushing Nikanth Karthikesan (5): block: Remove code handling bio_alloc failure with __GFP_WAIT dio: Remove code handling bio_alloc failure with __GFP_WAIT ext4: Remove code handling bio_alloc failure with __GFP_WAIT gfs2: Remove code handling bio_alloc failure with __GFP_WAIT swap: Remove code handling bio_alloc failure with __GFP_WAIT Oleg Drokin (1): Separate out common fstatat code into vfs_fstatat Oliver Neukum (1): USB: fix oops in cdc-wdm in case of malformed descriptors PJ Waskiewicz (1): ixgbe: Move the LED blink code to common, since 82599 also uses it Pallipadi, Venkatesh (1): x86, PAT: Remove page granularity tracking for vm_insert_pfn maps Pascal Terjan (1): USB: option: Add ids for D-Link DWM-652 3.5G modem Paul E. McKenney (1): rcu: Make hierarchical RCU less IPI-happy Paul Mackerras (1): powerpc: Fix data-corrupting bug in __futex_atomic_op Paul Mundt (4): rtc: rtc-sh: clock framework support. sh: sh7722: Don't default enable the RTC clock. sh: sh7723: Don't default enable the RTC clock. Merge branch 'sh/stable-updates' into sh/for-2.6.30 Paulius Zaleckas (1): MXC: remove orphan imx_init_uart() definition Peter Korsgaard (1): USB: ftdi_sio: add vendor/project id for JETI specbos 1201 spectrometer Rafael J. Wysocki (5): NET/e1000: Fix powering off during shutdown NET/e1000e: Fix powering off during shutdown NET/ixgbe: Fix powering off during shutdown PM/Hibernate: Fix memory shrinking PM/Suspend: Introduce two new platform callbacks to avoid breakage Ralf Baechle (1): needs to include . Ramax Lo (1): [ARM] S3C24XX: ADC: Check pending queue before freeing adc client Randy Dunlap (2): splice: fix new kernel-doc warnings doc: fix kernel-parameters.txt mistaken deletions Robert P. J. Day (1): MAINTAINERS: add a more searchable string for the H8300 architecture. Robin Holt (1): sgi-xp/sgi-gru: allow modules to load on non-uv systems Roel Kluin (4): ALSA: emu10k1 - off by 1 in snd_emu10k1_wait() drm: count reaches -1 spi: pxa2xx: limit reaches -1 bfin_5xx: misplaced parentheses Russ Anderson (2): x86, UV: system table in bios accessed after unmap x86: prevent /sys/firmware/sgi_uv from being created on non-uv systems Russell King (6): Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Update MAINTAINERS [ARM] remove .gitignore from include/asm-arm Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 Merge branch 'v2630-rc2-fixes' of git://aeryn.fluff.org.uk/bjdooks/linux Merge branch 'defconfig-s3c2410' of git://aeryn.fluff.org.uk/bjdooks/linux Rusty Russell (2): lguest: fix guest crash on non-linear addresses in gdt pvops lguest: document 32-bit and PAE requirements Sachin Sant (1): powerpc: pseries/dtl.c should include asm/firmware.h Sam Ravnborg (2): kbuild: support include/generated kbuild: introduce subdir-ccflags-y Samuel Thibault (1): Revert "console ASCII glyph 1:1 mapping" Sascha Hauer (3): pcm037 board support: Fix eth interrupt gpio setting MX31: Add more alternate pin definitions mxc defconfig updates Sergei Poselenov (1): phylib: Basic support for the M88E1121R Marvell chip Sergei Shtylyov (8): pata_hpt37x: fix HPT370 DMA timeouts libata: use ATA_ID_CFA_* USB: musb: bugfixes for multi-packet TXDMA support USB: musb: sanitize clearing TXCSR DMA bits (take 2) USB: musb: fix isochronous TXDMA (take 2) hpt366: fix HPT370 DMA timeouts hpt366: use ATA_DMA_* constants cs5536: define dma_sff_read_status() method Shaohua Li (1): agp: zero pages before sending to userspace Stanislaw Gruszka (1): myr10ge: again fix lro_gen_skb() alignment Stefan Weinhuber (1): [S390] dasd: fix idaw boundary checking for track based ccw Stephen Hemminger (2): netsched: Allow meta match on vlan tag on receive staging: slicoss: update README Stephen Rothwell (1): sparc: asm/atomic.h on 32bit should include asm/system.h for xchg Steve French (6): [CIFS] Endian convert UniqueId when reporting inode numbers from server files [CIFS] Fix build break from recent DFS patch when DFS support not enabled [CIFS] remove some build warnings [CIFS] Add support for posix open during lookup [CIFS] Fix sparse warnings [CIFS] Fix build break caused by change to new current_umask helper function Steven Whitehouse (5): GFS2: Make quotad's waiting interruptible GFS2: Fix symlink creation race GFS2: Move umount flush rwsem GFS2: Clear dirty bit at end of inode glock sync GFS2: Fix page_mkwrite() return code Stoyan Gaydarov (1): sbus: changed ioctls to unlocked Suresh Siddha (3): x86, CPA: Change idmap attribute before ioremap attribute setup x86, PAT: Consolidate code in pat_x_mtrr_type() and reserve_memtype() x86, PAT: Remove duplicate memtype reserve in devmem mmap SĂ©guier RĂ©gis (1): via-velocity : fix compilation warning. Takashi Iwai (19): Merge branch 'for-2.6.30' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 into topic/asoc ALSA: add private_data to struct snd_jack ALSA: hda - Avoid call of snd_jack_report at release ALSA: hda - Add quirk mask for Fujitsu Amilo laptops with ALC883 Merge branch 'master' of git://git.alsa-project.org/alsa-kernel into for-linus Merge branch 'topic/jack-free-fix' into topic/hda Merge branch 'topic/hda' into for-linus Merge branch 'topic/asoc' into for-linus Merge branch 'topic/usb-caiaq' into for-linus Merge branch 'topic/memdup_user' into for-linus ALSA: hda - Fix the cmd cache keys for amp verbs Merge branch 'topic/hda' into for-linus ALSA: hda - Fix headphone-detection on some machines with STAC/IDT codecs ALSA: hda - Add upper-limit of mixer amp for AD1884A-laptop model, too ALSA: hda - Set function_id only on FG nodes Merge branch 'fix/asoc' into for-linus Merge branch 'fix/hda' into for-linus Merge branch 'fix/intel8x0' into for-linus Merge branch 'fix/misc' into for-linus Tejun Heo (2): libata: handle SEMB signature better pata_legacy: fix no device fail path Tetsuo Handa (1): fs: Mark get_filesystem_list() as __init function. Thomas Bogendoerfer (1): Fix SYSCALL_ALIAS for older MIPS assembler Toshinobu Sugioka (1): sh: Fix mmap2 for handling differing PAGE_SIZEs. Trond Myklebust (1): NFS: Fix the XDR iovec calculation in nfs3_xdr_setaclargs Valentin Longchamp (2): MX31: pin definition for sdhc2 mx31: pin definition for csi Vlad Yasevich (1): ipv6: Fix NULL pointer dereference with time-wait sockets Vlada Peric (1): asiliantfb: add missing return statement Vladimir Barinov (1): MX31: Add I2C pin definitions WANG Cong (1): uml: kill a kconfig warning Wei Yongjun (3): tr: fix leakage of device in net/802/tr.c sparc: remove some pointless conditionals before kfree() cifs: remove some pointless conditionals before kfree() Werner Cornelius (1): USB: usb-serial ch341: support for DTR/RTS/CTS Wolfgang Grandegger (4): powerpc/85xx: TQM85xx: correct address of LM75 I2C device nodes powerpc/85xx: TQM8548: use proper phy-handles for enet2 and enet3 powerpc/85xx: TQM8548: update defconfig powerpc: Document new FSL I2C bindings and cleanup Wu Fengguang (2): ixgbe: fix tx queue index ixgbe: update real_num_tx_queues on changing num_rx_queues Xu Gang (1): GFS2: Use DEFINE_SPINLOCK Yang Hongyang (1): ipv6:remove useless check Zhaolei (2): tracing: Fix power tracer header tracing: Fix branch tracer header Zhenwen Xu (1): [libata] fix build error on drivers/ata/pata_legacy.c dann frazier (1): ipmi: add oem message handling eric miao (1): [ARM] 5453/1: fix building breakage of sys_oabi-compat.c due to missing kmalloc/kfree venkatesh.pallipadi@intel.com (3): x86, PAT: Change order of cpa and free in set_memory_wb x86, PAT: Handle faults cleanly in set_memory_ APIs x86, PAT: Changing memtype to WC ensuring no WB alias ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From felixb@oss.sgi.com Thu May 21 15:27:07 2009 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_21,J_CHICKENPOX_31,J_CHICKENPOX_45 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKR7b8184237 for ; Thu, 21 May 2009 15:27:07 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4LKR6pm184208; Thu, 21 May 2009 15:27:06 -0500 Date: Thu, 21 May 2009 15:27:06 -0500 Message-Id: <200905212027.n4LKR6pm184208@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.30-rc4, created. v2.6.30-rc4 X-Git-Refname: refs/tags/v2.6.30-rc4 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 176c5e45fe4f1c83df9429b7c2668b41446baac2 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 annotated tag, v2.6.30-rc4 has been created at 176c5e45fe4f1c83df9429b7c2668b41446baac2 (tag) tagging 091438dd5668396328a3419abcbc6591159eb8d1 (commit) replaces v2.6.30-rc3 tagged by Linus Torvalds on Wed Apr 29 21:48:33 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.30-rc4 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkn5LaYACgkQF3YsRnbiHLtDZgCgjk6Opyi4o4487zH36wsY8ZxL MKcAniWmN+aHwzPYi8AE8dPFo1/4Rx19 =+u6i -----END PGP SIGNATURE----- Adrian Bunk (1): net: Fix LL_MAX_HEADER for CONFIG_TR_MODULE Adrian McMenamin (1): maple: input: fix up maple mouse driver Alan Cox (3): ax25: proc uid file misses header cafe_nand: Fix warning radio_si470x: Fix free memory corruption Alan Stern (2): USB: serial: fix lifetime and locking problems USB: g_file_storage: fix use-after-free bug when closing files Alexander Beregalov (3): powerpc: Make macintosh/mediabay driver depend on CONFIG_BLOCK USB: musb: fix build when !CONFIG_PM pktcdvd.h should include mempool.h Almer S. Tigelaar (4): sony-laptop: Duplicate SNC 127 Event Fix sony-laptop: SNC 127 Initialization Fix sony-laptop: SNC input event 38 fix ACPI: EC: Fix ACPI EC resume non-query interrupt message Andreas Herrmann (1): x86: hpet: fix periodic mode programming on AMD 81xx Andreas Schwab (1): powerpc/32: Don't clobber personality flags on exec Andy Walls (1): V4L/DVB (11494): cx18: Send correct input routing value to external audio multiplexers Anton Blanchard (1): ipv4: Limit size of route cache hash table Anton Vorontsov (2): powerpc/5200: Bring the legacy fsl_spi_platform_data hooks back fsl_rio: Pass the proper device to dma mapping routines Avi Kivity (1): KVM: MMU: Fix off-by-one calculating large page count Ayaz Abdulla (1): forcedeth: tx timeout fix Bartlomiej Zolnierkiewicz (5): powerpc: Fix modular build of ide-pmac when mediabay is built in mediabay: fix build for CONFIG_BLOCK=n palm_bk3710: palm_bk3710_udmatimings[] CodingStyle fixup MAINTAINERS: update IDE entry mg_disk: fix CONFIG_LBD=y warning Ben Hutchings (1): net: Fix GRO for multiple page fragments Bjorn Helgaas (6): ACPI: button: whitespace changes ACPI: button: remove unnecessary null pointer checks ACPI: button: use Linux style for getting driver_data ACPI: button: cache hid/name/class pointers ACPI: button: remove button->device pointer ACPI: button: remove control method/fixed hardware distinctions Bruno PrĂ©mont (1): ide: Stop disks on reboot for laptop which cuts power Chien Tung (8): RDMA/nes: Fix compiler warning at nes_verbs.c:1955 RDMA/nes: Modify thermo mitigation to flip SerDes1 ref clk to internal RDMA/nes: Correct CDR loop filter setting for port 1 RDMA/nes: Enable repause timer for port 1 RDMA/nes: Set trace length to 1 inch for SFP_D RDMA/nes: Fix fw_ver in /sys RDMA/nes: Fix unused variable compile warning when INFINIBAND_NES_DEBUG=n RDMA/nes: Update iw_nes version Chris Ball (1): Btrfs: When shrinking, only update disk size on success Chris Mason (7): Btrfs: fix fallocate deadlock on inode extent lock Btrfs: fix deadlocks and stalls on dead root removal Btrfs: remove #if 0 code Btrfs: ratelimit IO error printks Btrfs: remove unused btrfs_bit_radix slab Btrfs: fix acl caching Btrfs: look for acls during btrfs_read_locked_inode Chris Wright (1): drm/i915: fix up error path leak in i915_cmdbuffer Christian Borntraeger (1): virtio-rng: Remove false BUG for spurious callbacks Christian Lamparter (7): p54: replace MAC80211_LEDS with P54_LEDS in p54.h p54spi: fix locking warning in p54spi_op_tx ar9170: add Cace Airpcap NX usb_id p54usb: add Telsey 802.11g USB2.0 Adapter ar9170usb: add ZyXEL NWD271N p54: deactivate broken powersave function ar9170usb: fix hang on resume Christoph Hellwig (4): Btrfs: simplify makefile Btrfs: don't export symbols Btrfs: kill btrfs_cache_create quota: remove obsolete comments in fs/quota/Makefile Christopher Pascoe (1): V4L/DVB (11626): cx23885: Two fixes for DViCO FusionHDTV DVB-T Dual Express Chuck Ebbert (1): ext4: really print the find_group_flex fallback warning only once Chuck Short (1): USB: Unusual Device support for Gold MP3 Player Energy Coly Li (2): uv_time: add parameter to uv_read_rtc() microblaze: add parameter to microblaze_read() Dan Carpenter (4): ext2: missing unlock in ext2_quota_write() unreachable code in drms_uA_update() V4L/DVB (11515): drivers/media/video/saa5249.c: fix use-after-free and leak V4L/DVB (11516): drivers/media/video/saa5246a.c: fix use-after-free Dan Streetman (1): USB: ehci-sched.c: EHCI SITD scheduling bugfix Dan Williams (1): airo: queue SIOCSIWAUTH-requested auth mode change for next commit Daniel Mack (1): ALSA: snd-usb-caiaq: fix reported elapsed periods Daniel T Chen (1): ALSA: Atiixp: Add SSID for mute_led quirk (unknown HP model) David Brownell (4): [ARM] 5457/1: mach-imx gpio buildfix palm_bk3710: UDMA performance fix palm_bk3710: those registers/bitfields don't exist USB: gadget: omap_udc uses platform_driver_probe() David Howells (5): MN10300: Update the ASB2303 defconfig ROMFS: romfs_lookup() shouldn't be doing a partial name comparison ROMFS: Advance destination buffer pointer when reading from a blockdev FRV: Wire up new syscalls FRV: Stop gcc from generating uninitialised variable warnings after BUG() David Lopo (1): USB: Gadget: MIPS CI13xxx UDC bugfixes David S. Miller (10): Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6 sparc64: Update defconfig. sparc32: Update defconfig. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 sparc: Fix bus type probing for ESP and LE devices. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6 Dean Anderson (1): V4L/DVB (11570): patch: s2255drv: fix race condition on set mode Devin Heitmueller (1): V4L/DVB (11652): au0828: fix kernel oops regression on USB disconnect. Diego Liziero (1): drivers/regulator: fix when type is different from REGULATOR_VOLTAGE or REGULATOR_CURRENT Divy Le Ray (4): cxgb3: fix link fault handling cxgb3: fix workqueue flush issues cxgb3: Fix potential msi-x vector leak cxgb3: Fix EEH final recovery attempt Dmitry Baryshkov (1): [ARM] 5458/1: pcmcia: pxa2xx-sharpsl: check if we do have Scoop config Don Wood (1): RDMA/nes: Fix bugs in nes_reg_phys_mr() Elina Pasheva (1): USB: serial: sierra driver bug fix for composite interface Eric Anholt (1): drm/i915: Don't let an oops get triggered from irq_emit without dma init. Eric Dumazet (2): netfilter: nf_log regression fix net: Avoid extra wakeups of threads blocked in wait_for_packet() Eric Miao (1): [ARM] pxa/magician: remove un-necessary #include of pxa-regs.h and hardware.h Erik Waling (2): macb: Handle Retry Limit Exceeded errors macb: process the RX ring regardless of interrupt status FUJITA Tomonori (1): bio: fix memcpy corruption in bio_copy_user_iov() Faisal Latif (5): RDMA/nes: Do not set apbvt entry for loopback RDMA/nes: Check for sequence number wrap-around RDMA/nes: Increase rexmit timeout interval RDMA/nes: Fix hang issues for large cluster dynamic connections RDMA/nes: Fix error path in nes_accept() Frank Munzert (1): [S390] Use tape_generic_offline directly. Fred Isaman (1): lib: find_last_bit.o needed by a module only, move it from lib to obj Geert Uytterhoeven (4): scsi: a4000 - Correct driver unregistration in case of failure m68k,m68knommu: Wire up preadv and pwritev m68k: Update defconfigs for 2.6.30-rc3 m68k: arch/m68k/kernel/sun3-head.S needs Geoff Levand (4): powerpc/ps3: Fix CONFIG_PS3_FLASH=n build warning maintainers: Fix PS3 patterns powerpc/pasemi: Fix build error on UP powerpc/ps3: Fix build error on UP Gerald Schaefer (1): [S390] appldata: avoid deadlock with appldata_mem Gerrit Renker (1): mac80211: Fragmentation threshold (typo) Grant Likely (2): powerpc/5200: Add FLASH nodes to lite5200 device tree powerpc/5200: defconfig updates Greg Ungerer (9): m68knommu: fix missing .data.cacheline_aligned section m68knommu: remove unused kernel stats offsets m68knommu: fix DMA support for ColdFire m68knommu: update the defconfig for the ColdFire 5208evb board m68knommu: add a defconfig for the ColdFire M5272C3 board m68knommu: update the default config for the ColdFire 5249EVB. m68knommu: update the default config for the ColdFire 5257EVB board m68knommu: update the default config for the ColdFire 5307C3 board m68knommu: update the default config for the ColdFire 5407C3 board Guennadi Liakhovetski (2): [ARM] pxa/pcm990: start external GPIOs immediately after built-in ones V4L/DVB (11561a): move media after i2c H. Peter Anvin (1): x86, kbuild: make "make install" not depend on vmlinux Hannes Reinecke (1): block: fix intermittent dm timeout based oops Heiko Carstens (2): [S390] ipl: fix compile breakage [S390] omit frame pointers on s390 when possible Heiko Schocher (1): ucc_geth.c: Fix upsmr setting in RMII mode Helge Deller (1): ide-cd: fix kernel crash on hppa regression Hendrik Brueckner (4): af_iucv: fix oops in iucv_sock_recvmsg() for MSG_PEEK flag af_iucv: Reject incoming msgs if RECV_SHUTDOWN is set af_iucv: Test additional sk states in iucv_sock_shutdown af_iucv: Fix race when queuing incoming iucv messages Henrique de Moraes Holschuh (5): thinkpad-acpi: silence hotkey enable warning for module parameter thinkpad-acpi: fix LED blinking through timer trigger thinkpad-acpi: fix use of MODULE_AUTHOR thinkpad-acpi: simplify module autoloading thinkpad-acpi: bump up version to 0.23 Herbert Xu (3): gro: Fix use after free in tcp_gro_receive tun: Only free a netdev when all tun descriptors are closed tun: Fix sk_sleep races when attaching/detaching Herton Ronaldo Krzesinski (1): rt2x00: prevent double kfree when failing to register hardware Ilpo Järvinen (2): tcp: fix mid-wq adjustment helper powerpc: Fix of_node_put() exit path in of_irq_map_one() Ingo Molnar (3): Merge branch 'linus' into x86/urgent Merge commit 'v2.6.30-rc3' into x86/urgent locking: clarify kernel-taint warning message Ivo van Doorn (2): rt2x00: Add rt73usb USB IDs rt2x00: Don't free register information on suspend Jack Morgenstein (1): IB/mthca: Fix timeout for INIT_HCA and a few other commands Jack Steiner (3): x86/uv: fix init of memory-less nodes x86/uv: fix init of cpu-less nodes x86/uv: fix for no memory at paddr 0 Jamie Lentin (1): at76c50x-usb: Add device ID for OQO model 01+ Jan Engelhardt (1): netfilter: xt_recent: fix stack overread in compat code Jan Kiszka (2): KVM: Fix overlapping check for memory slots KVM: Unregister cpufreq notifier on unload Jarek Poplawski (1): net: sch_netem: Fix an inconsistency in ingress netem timestamps. Jarkko Nikula (2): ASoC: OMAP: Update contact addresses USB: musb: Remove my email address from few musb related drivers Jaroslav Kysela (2): [ALSA] ac97_codec: increase timeout for analog subsections [ALSA] intel8x0: another attempt to fix ac97_clock measure routine Jaswinder Singh Rajput (1): x86: mm/numa_32.c calculate_numa_remap_pages should use __init Jay Sternberg (1): iwlwifi: fix EEPROM validation mask to include OTP only devices Jay Vosburgh (1): vlan: update vlan carrier state for admin up/down Jean Delvare (4): ALSA: AOA: Convert onyx and tas codecs to new-style i2c drivers ALSA: keywest: Convert to new-style i2c driver net/netrom: Fix socket locking V4L/DVB (11568): cx18: Fix the handling of i2c bus registration error Jeff Moyer (2): cfq-iosched: make seek_mean converge more quickly cfq-iosched: use the default seek distance when there aren't enough seek samples Jens Axboe (4): block: make blk_abort_queue() ignore non-request based devices cfq-iosched: clear ->prio_trees[] on cfqd alloc cfq-iosched: fix bug with aliased request and cooperation detection cfq-iosched: cache prio_tree root in cfqq->p_root Jerome Marchand (1): block: simplify I/O stat accounting Jes Sorensen (1): KVM: ia64: fix locking order entering guest Jesse Barnes (1): drm/i915: allow tiled front buffers on 965+ Jesse Brandeburg (2): e1000e: fix bug in restart queue logic e1000: fix transmit routine exit bug Jianjun kong (1): 8139too: fix HW initial flow Joe Perches (3): MAINTAINERS - Add section NETWORKING DRIVERS MAINTAINERS - Update NETWORKING W: url and standardize T: git url iwl3945-base.c: Add missing space to debug print Joel Becker (2): Btrfs: Fix a trivial warning using max() of u64 vs ULL. Btrfs: Fix a bunch of printk() warnings. Joerg Albert (1): mwl8k: fix module re-insertion bug Joerg Roedel (1): KVM: x86: release time_page on vcpu destruction Johan Hedberg (1): Bluetooth: Fix removing of RFCOMM DLC timer with DEFER_SETUP Johannes Berg (11): mac80211: correct wext transmit power handler fix iwl3945 registration regression ar9170: fix struct layout on arm mac80211: avoid crashing when no scan sdata cfg80211: copy hold when replacing BSS cfg80211: do not replace BSS structs mac80211: validate TIM IE length mac80211: fix basic rate bitmap calculation atmel: fix netdev ops conversion mac80211: fix alignment calculation bug USB: pass mem_flags to dma_alloc_coherent Jonathan Corbet (1): Delete slow-work timers properly Josef Bacik (1): Btrfs: try to keep a healthy ratio of metadata vs data block groups Josh Boyer (1): maintainers: Fix PowerPC 4xx git tree Jouni Malinen (1): nl80211: Make nl80211_send_mlme_event() atomic Kailang Yang (2): ALSA: hda - Fix alc662_init_verbs ALSA: hda - Add quirks for Realtek codecs Kalle Valo (1): mac80211: fix beacon loss detection after scan Karsten Keil (1): Add reference to CAPI 2.0 standard Karsten Wiese (2): ALSA: us122l: Fix signedness in comparisions ALSA: us122l: add snd_us122l_free() Keith Packard (1): drm/i915: fix transition to I915_TILING_NONE Ken Kawasaki (1): pcnet_cs: add cis(firmware) of the Allied Telesis LA-PCM Kumar Gala (6): powerpc/85xx: Updated generic mpc85xx_defconfig powerpc/85xx: Enabled a bunch of FSL specific drivers/options powerpc/85xx: Added SMP defconfig powerpc/85xx: Remove defconfigs that mpc85xx_{smp_}defconfig cover Revert "powerpc: Add support for early tlbilx opcode" powerpc: ppc32 needs elf_read_implies_exec() Laszlo Attila Toth (1): netfilter: Kconfig: TProxy doesn't depend on NF_CONNTRACK Len Brown (23): ACPI: Disable _GTS and _BFS support by default ACPI: add /sys/firmware/acpi/interrupts/sci_not counter ACPI: idle: mark_tsc_unstable() at init-time, not run-time ACPI: delete obsolete "bus master activity" proc field ACPI/hpet: prevent boot hang when hpet=force used on ICH-4M ACPI: prevent processor.max_cstate=0 boot crash Revert "ACPICA: delete check for AML access to port 0x81-83" Merge branch 'video-ac-dc' into release Merge branch 'thinkpad-acpi' into release Merge branch 'thermal-regression' into release Merge branch 'sony-laptop' into release Merge branch 'irq' into release Merge branch 'idle' into release Merge branch 'cpufreq' into release Merge branch 'bugzilla-13041' into release Merge branch 'bugzilla-12270' into release Merge branch 'bugzilla-12249' into release x86, hpet: Stop soliciting hpet=force users on ICH4M Merge branch 'hpet' into release Merge branch 'bugzilla-13142' into release Merge branch 'bugzilla-13048' into release Merge branch 'bugzilla-13036' into release Merge branch 'bjorn.button' into release Lin Ming (1): I/O port protection: update for windows compatibility. Linus Torvalds (37): Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'kvm-updates/2.6.30' of git://git.kernel.org/pub/scm/virt/kvm/kvm Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'fixes-for-linus' of git://git.monstr.eu/linux-2.6-microblaze Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sh/for-2.6.30' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-quota-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Revert "linux.conf.au 2009: Tuz" Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'drm-intel-next' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6 Linux 2.6.30-rc4 Luis R. Rodriguez (1): cfg80211: fix NULL pointer deference in reg_device_remove() Marc Dionne (1): CacheFiles: Fix the documentation to use the correct credential pointer names Marcel Holtmann (4): Bluetooth: Fallback from eSCO to SCO on unspecified error Bluetooth: Add workaround for wrong HCI event in eSCO setup Bluetooth: Add different pairing timeout for Legacy Pairing Bluetooth: Fix connection establishment with low security requirement Marcelo Tosatti (1): KVM: MMU: disable global page optimization Marcin Slusarz (1): net: fix "compatibility" typos Marek Vasut (1): [ARM] pxa/palm27x: General fix for Palm27x aSoC driver Mark A. Greer (1): USB: musb: Prevent multiple includes of musb.h Mark Brown (6): [ARM] pxa: merge AC97 platform data structures ASoC: Fix offset of freqmode in WM8580 PLL configuration ASoC: Fix WM8580 volume update handling for large register changes Merge commit 'takashi/fix/asoc' into for-2.6.30 ASoC: s3c-i2s-v2 needs to declare a license for modular builds regulator: Fix default constraints for fixed voltage regulators Martin Fuzzey (1): USB: pwc : do not pass stack allocated buffers to USB core. Martin Schwidefsky (2): [S390] /proc/stat idle field for idle cpus [S390] update default configuration. Martyn Welch (1): powerpc/86xx: Add device_type entry to soc for ppc9a Masakazu Mokuno (1): net/ps3: Fix wireless AP connect error handling Matt Carlson (1): tg3: Fix SEEPROM accesses Matt Kraai (1): RDMA/nes: Remove root_256()'s unused pbl_count_256 parameter Matthew Garrett (5): drm/i915: Register ACPI video even when not modesetting drm/i915: Unregister ACPI video driver when exiting drm/i915: Enable ASLE if present thermal: Fix polling frequency for systems without passive cooling ACPI, i915: Register ACPI video even when not modesetting Matthew Wilcox (1): x86/PCI: Move set_pci_bus_resources_arch_default into arch/x86 Matthias Kaehlcke (1): USB: ci13xxx_udc: fix build error Mattia Dongili (2): sony-laptop: fix bogus error message display on resume sony-laptop: always try to unblock rfkill on load Mauro Carvalho Chehab (1): V4L/DVB (11494a): cx231xx Kconfig fixes Michael Buesch (4): b43: Poison RX buffers b43: Refresh RX poison on buffer recycling b43: Do radio lock assertion in software mac80211: quiet beacon loss messages Michael Ellerman (2): powerpc: Fix crash on CPU hotplug powerpc/cell: Select PCI for IBM_CELL_BLADE AND CELLEB Michael K. Johnson (1): x86: more than 8 32-bit CPUs requires X86_BIGSMP Michal Simek (16): microblaze: Remove unneded per cpu SYSCALL_SAVE variable microblaze: Remove while(1) loop from show_regs function microblaze: Remove uncache shadow condition microblaze: Rename kernel_mode to pt_mode in pt_regs microblaze: Move task_pt_regs up microblaze: Remove sparse error in traps.c microblaze: Add missing declaration for die and _exception func microblaze: Add missing preadv and pwritev syscalls microblaze: Move start_thread to process.c microblaze: Remove redundant variable microblaze: Correspond CONFIG...PCMP in Makefile/Kconfig microblaze: Fix USR1/2 pvr printing message microblaze: Do not use PVR configuration for broken MB version microblaze: Do not check use_dcache microblaze: Add STATE_SAVE_ARG_SPACE for noMMU kernel too microblaze: Use CFLAGS_KERNEL instead of CFLAGS Mikael Pettersson (1): [ARM] 5456/1: add sys_preadv and sys_pwritev Mike Rapoport (2): net: Fix typo in net_device_ops description. regulator/virtual: fix strings compare predicates Miroslaw Walukiewicz (1): RDMA/nes: Fix resource issues in nes_create_cq() and nes_destroy_cq() Nicolas Dichtel (1): xfrm: wrong hash value for temporary SA Nicolas Morey-Chaisemartin (1): mlx4_core: Fix memory leak in mlx4_enable_msi_x() Nicolas Pitre (1): [ARM] 5460/1: Orion: reduce namespace pollution Niels de Vos (1): serial: remove contact data Oleg Nesterov (3): do_execve() must not clear fs->in_exec if it was set by another thread check_unsafe_exec: s/lock_task_sighand/rcu_read_lock/ ptrace: ptrace_attach: fix the usage of ->cred_exec_mutex Oliver Hartkopp (1): can: Network Drop Monitor: Make use of consume_skb() in af_can.c Oliver Neukum (3): pegasus: Handle disconnect error code correctly. USB: removal of tty->low_latency hack dating back to the old serial code USB: correct error handling in cdc-wdm PJ Waskiewicz (2): ixgbe: Fix DCB traffic class mapping for 82599 ixgbe: Fix the DCB PFC thresholds for 82599 Pablo Neira Ayuso (4): netfilter: ctnetlink: report error if event message allocation fails netfilter: nfnetlink: return ENOMEM if we fail to create netlink socket netfilter: ctnetlink: fix gcc warning during compilation netfilter: nf_ct_dccp: add missing role attributes for DCCP Pallipadi, Venkatesh (2): x86, irq: Remove IRQ_DISABLED check in process context IRQ move x86, acpi_cpufreq: Fix the NULL pointer dereference in get_measured_perf Patrick McHardy (4): netfilter: nf_conntrack: fix crash when unloading helpers netfilter: nf_nat: add support for persistent mappings vlan/macvlan: fix NULL pointer dereferences in ethtool handlers netfilter: nf_ct_dccp/udplite: fix protocol registration error Paul Mackerras (2): Merge branch 'merge' of git://git.secretlab.ca/git/linux-2.6 into merge Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx into merge Paul Moore (1): netlabel: Always remove the correct address selector Paul Mundt (1): sh: Fix up unsigned syscall_nr in SH-5 pt_regs. Paul Walmsley (1): regulator core: fix double-free in regulator_register() error path Pavel Roskin (2): ath9k: fix access to a freed skb in ath_rx_tasklet() orinoco: correct timeout logic in __orinoco_hw_set_tkip_key() Peter Zijlstra (1): lockdep: more robust lockdep_map init sequence Philip Rakity (1): libertas: don't leak skb on receive error Philipp Zabel (2): ASoC: pxa-ssp: Don't use SSCR0_SerClkDiv and SSCR0_SCR regulator/bq24022: fix bug in is_enabled function Rafael J. Wysocki (1): PM/Hibernate: Fix waiting for image device to appear on resume Rami Rosen (1): mwl8: fix build warning. Randy Dunlap (3): docbooks: add/fix PCI kernel-doc ecryptfs: fix printk format warning regulator: fix header file missing kernel-doc Reinette Chatre (4): iwl3945: use cancel_delayed_work_sync to cancel rfkill_poll mac80211: do not print WARN if config interface iwlwifi: add debugging for TX path iwlwifi: DMA fixes Richard Retanubun (1): m68knommu: Fixed GPIO pin initialization for CONFIG_M5271 FEC. Robert Jarzmik (2): [ARM] pxa/mioa701: use GPIO95 as AC97 reset line USB: otg: Fix bug on remove path without transceiver Robert P. J. Day (1): MAC80211: Remove unused MAC80211_VERBOSE_SPECT_MGMT_DEBUG. Roel Kluin (1): microblaze: iowrite upon timeout Roger Quadros (1): Bluetooth: Ensure that HCI sysfs add/del is preempt safe Roland Dreier (2): mlx4_en: Fix cleanup if workqueue create in mlx4_en_add() fails Merge branches 'cxgb3', 'ipoib', 'mthca', 'mlx4' and 'nes' into for-linus Russell King (1): Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Russell King - ARM Linux (1): ASoC: Fix warning in wm9705 Rusty Russell (2): x86: fix boot crash in NMI watchdog with CONFIG_CPUMASK_OFFSTACK=y and flat APIC x86: avoid theoretical spurious NMI backtraces with CONFIG_CPUMASK_OFFSTACK=y Sage Weil (1): umem: fix request_queue lock warning Sascha Hauer (1): V4L/DVB (11612): mx3_camera: Fix compilation with CONFIG_PM Stefan Roese (2): powerpc/of-device-tree: Factor MTD physmap bindings out of booting-without-of powerpc/device-tree: Document MTD nodes with multiple "reg" tuples Stephen Hemminger (2): veth: prevent oops caused by netdev destructor netfilter: revised locking for x_tables Stephen Rothwell (1): powerpc: fix for long standing bug noticed by gcc 4.4.0 Steve Wise (2): RDMA/cxgb3: Adjust ORD/IRD (if needed) for peer2peer connections RDMA/cxgb3: Don't zero QP attrs when moving to IDLE Steven Rostedt (1): lockdep, x86: account for irqs enabled in paranoid_exit Steven Whitehouse (3): bitops: Add __ffs64 bitop GFS2: Fix bug in block allocation GFS2: Ensure that the inode goal block settings are updated Subrata Modak (1): ALSA: Fix Trivial Warnining in sound/pci/cmipci.c Suresh Siddha (1): x86-64: fix FPU corruption with signals and preemption Takashi Iwai (13): Merge branch 'fix/hda' into for-linus Merge branch 'fix/asoc' into for-linus Merge branch 'fix/misc' into for-linus Merge branch 'fix/usx2y' into for-linus ALSA: hda - Add quirk for Packard Bell RS65 Merge branch 'fix/hda' into for-linus Merge commit 'alsa/master' into for-linus ASoC: remove non-existing referece to CONFIG_SND_SOC_CODEC_WM8991 ALSA: hda - Fix init verbs of AD1884A mobile model Merge branch 'fix/asoc' into for-linus Merge branch 'fix/hda' into for-linus Merge branch 'fix/caiaq' into for-linus Merge branch 'fix/misc' into for-linus Tejun Heo (8): scatterlist: make sure sg_miter_next() doesn't return 0 sized mappings block: fix SG_IO vector request data length handling block: fix queue bounce limit setting bio: fix bio_kmalloc() bio: use bio_kmalloc() in copy/map functions block: include empty disks in /proc/diskstats mg_disk: fix locking hd: fix locking Thadeu Lima de Souza Cascardo (1): e100: do not go D3 in shutdown unless system is powering off Theodore Ts'o (7): jbd2: use SWRITE_SYNC_PLUG when writing synchronous revoke records jbd: use SWRITE_SYNC_PLUG when writing synchronous revoke records ext4: Make the extent validity check more paranoid ext4: Fix potential inode allocation soft lockup in Orlov allocator ext4: Fix softlockup caused by illegal i_file_acl value in on-disk inode ext4: Ignore i_file_acl_high unless EXT4_FEATURE_INCOMPAT_64BIT is present ext4: Do not try to validate extents on special files Thomas Renninger (4): acpi-cpufreq: Cleanup: Use printk_once acpi-cpufreq: style-only: add parens to math expression acpi-cpufreq: Do not let get_measured perf depend on internal variable PCI quirk: disable MSI on VIA VT3364 chipsets Tilman Schmidt (2): update Documentation/isdn/00-INDEX Documentation/isdn/INTERFACE.CAPI Tim Abbott (20): Add new HEAD_TEXT_SECTION macro. xtensa: convert to use __HEAD and HEAD_TEXT macros. alpha: convert to use __HEAD and HEAD_TEXT macros. frv: convert frv to use __HEAD and HEAD_TEXT macros. m32r: convert to use __HEAD and HEAD_TEXT macros. m68k: convert to use __HEAD and HEAD_TEXT macros. mn10300: convert to use __HEAD and HEAD_TEXT macros. powerpc: convert to use __HEAD and HEAD_TEXT macros. s390: convert to use __HEAD and HEAD_TEXT macros. sh: convert to use __HEAD and HEAD_TEXT macros. sparc: convert to use __HEAD and HEAD_TEXT macros. FRV: Remove unused header asm/init.h. FRV: Use __INIT macro instead of .text.init. arm: Use __INIT macro instead of .text.init. powerpc: Use TEXT_TEXT macro in linker script. powerpc: Use __REF macro instead of old .text.init.refok. sh: Use __INIT macro instead of .text.init. sparc: cleanup references to deprecated .text.init* sections. Remove unused support code for refok sections. powerpc: Revert switch to TEXT_TEXT in linker script Timur Tabi (1): powerpc: don't disable SATA interrupts on Freescale MPC8610 HPCD Tony Breeds (1): ixgbe: Be explict with what we are !'ing in ixgbe_sfp_config_module_task() Tony Cook (2): USB: mos7840: add new device id USB: fix mos7840 problem with minor numbers Tyler Hicks (8): eCryptfs: Copy lower inode attrs before dentry instantiation eCryptfs: NULL pointer dereference in ecryptfs_send_miscdev() eCryptfs: Print FNEK sig properly in /proc/mounts eCryptfs: Fix data corruption when using ecryptfs_passthrough eCryptfs: Remove ecryptfs_unlink_sigs warnings eCryptfs: Lock lower directory inode mutex during lookup eCryptfs: Larger buffer for encrypted symlink targets eCryptfs: Fix min function comparison warning Ursula Braun (1): af_iucv: consider state IUCV_CLOSING when closing a socket Valentine Barshak (1): powerpc/44x: Correct memory size calculation for denali-based boards Vasanthakumar Thiagarajan (1): mac80211: Fix bug in getting rx status for frames pending in reorder buffer Waskiewicz Jr, Peter P (1): ixgbe: Fix WoL functionality for 82599 KX4 devices Weidong Han (1): docs, x86: add nox2apic back to kernel-parameters.txt Wu Fengguang (1): drm/i915: fix unpaired i915 device mutex on entervt failure. Yevgeny Petrilin (7): mlx4_en: Fix error handling while activating RX rings mlx4_en: Fix a race at restart task mlx4_en: Assign dummy event handler for TX queue mlx4_en: use NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM for tx csum at initialization mlx4_en: Move to SW counters for total bytes and packets mlx4_en: Fix cleanup flow on cq activation mlx4_en: Handle page allocation failure during receive Yinghai Lu (6): x86/irq: mark NUMA_MIGRATE_IRQ_DESC broken x86/PCI: don't call e820_all_mapped with -1 in the mmconfig case x86/PCI: set_pci_bus_resources_arch_default cleanups PCI: cleanup debug output resources x86/PCI: don't bother with root quirks if _CRS is used x86: check boundary in setup_node_bootmem() Yoshihiro Shimoda (1): sh: sh7785lcr: fix defconfig for 29-bit mode Yossi Etigin (1): IPoIB: Disable NAPI while CQ is being drained Yu Zhao (1): PCI: only save/restore existent registers in the PCIe capability Zhang Rui (3): ACPI: Revert conflicting workaround for BIOS w/ mangled PRT entries ACPI video: handle indexed _BQC correctly ACPI video: fix an error when the brightness levels on AC and on Battery are same Zhenyu Wang (1): drm/i915: add support for G41 chipset hummerbliss@gmail.com (1): netfilter: bridge: allow fragmentation of VLAN packets traversing a bridge ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From xfs-bounces@oss.sgi.com Thu May 21 15:52:06 2009 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKQgMW183913 for ; Thu, 21 May 2009 15:26:42 -0500 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: Thu, 21 May 2009 15:26:41 -0500 Precedence: bulk X-BeenThere: xfs@oss.sgi.com X-Mailman-Version: 2.1.11 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 annotated tag, v2.6.29-rc1, created. v2.6.29-rc1 Is being held until the list moderator can review it for approval. The reason it is being held: Message body is too big: 545220 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/66b1e7a996c0690cada0f1f89ff20db0d1f5c0d6 From xfs-bounces@oss.sgi.com Thu May 21 15:52:06 2009 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4LKRDOH184258 for ; Thu, 21 May 2009 15:27:13 -0500 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: Thu, 21 May 2009 15:26:58 -0500 Precedence: bulk X-BeenThere: xfs@oss.sgi.com X-Mailman-Version: 2.1.11 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 annotated tag, v2.6.30-rc1, created. v2.6.30-rc1 Is being held until the list moderator can review it for approval. The reason it is being held: Message body is too big: 608133 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/9695dfd631b3b0948665c1b5eae4b3077d24e123 From nagual.hsu@gmail.com Fri May 22 09:16:39 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4MEGcxc221342 for ; Fri, 22 May 2009 09:16:38 -0500 X-ASG-Debug-ID: 1243001809-79b100a60000-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 2F2141A0A6DC for ; Fri, 22 May 2009 07:16:49 -0700 (PDT) Received: from rv-out-0708.google.com (rv-out-0708.google.com [209.85.198.244]) by cuda.sgi.com with ESMTP id Z7I8PyFvg5rhUEfe for ; Fri, 22 May 2009 07:16:49 -0700 (PDT) Received: by rv-out-0708.google.com with SMTP id k29so526229rvb.32 for ; Fri, 22 May 2009 07:16:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type:content-transfer-encoding; bh=I2Y0OCUCf/qzvDz3Co7qCPYInIqvRxumNhToZ84hmug=; b=d2uvR0CCrPL4+U2gzGDzvPuOzx5H9cWXReaDKFaFL9h3qp13CTrXtAr6rh0zlwGhtw 56dqtrGQgUmBz01MPIDLz1w3Io0SadrLz6igKfwNoSk975asVreRmpzz8THMxqjurbJm 9TOY/wVxHJzzIS8PqNzVQ6ymPhaBxECv7HlzM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; b=wvVjJKjIS0Q6FFJ1iBs8vqMlusIrG6sjXV+uluiqD6QF8ZnTB8NVa4ZHxNUqv5BFiK qJGBUOhAj8Rn5Orq9yUYjNJeB2oE4hzjafPo5Eh19Klp1oUY/5NX1Zx6mS0he7tKcTHR 48yHrfAceq2egS4BFYN/JCVq77JPf0stfxnaw= MIME-Version: 1.0 Received: by 10.110.37.3 with SMTP id k3mr117192tik.1.1243001808309; Fri, 22 May 2009 07:16:48 -0700 (PDT) Date: Fri, 22 May 2009 22:16:48 +0800 Message-ID: <7fe205990905220716v7d06b9bch40fe6136af17e345@mail.gmail.com> X-ASG-Orig-Subj: about XFS_IOC_RESVSP Subject: about XFS_IOC_RESVSP From: Joe Hsu To: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: rv-out-0708.google.com[209.85.198.244] X-Barracuda-Start-Time: 1243001810 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0238 1.0000 -1.8664 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.87 X-Barracuda-Spam-Status: No, SCORE=-1.87 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26456 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I pre-allocate blocks for a file. Then I use "open" and "write" system calls to generate the content for that file. After the file is really written to the disk, I want to set all the extent(s) of that file unwritten. Then I will write new content to the same file. Is that possible? That means: I want to dis-care the content just written and use the same allocated blocks. In another words, I want to restore the state of the file to the state when it was first pre-allocated. Why am I doing this? Why not just over-write it? When doing partial over-writing, some blocks may be read for partial update before they are written out. This hurts some IO performance and If I can, I would prefer to dis-care old content of the file and use same (pre)allocated blocks. (In my case, I am doing intensive IO.) Any one can give me some hints? Thanks. -- The sun is shinny but the ice is slippery. From sandeen@sandeen.net Fri May 22 10:49:07 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4MFn7V1223933 for ; Fri, 22 May 2009 10:49:07 -0500 X-ASG-Debug-ID: 1243007687-7a5303440000-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 9A88AFF6F13 for ; Fri, 22 May 2009 08:54:47 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id CU0YJA1L8siOgpsI for ; Fri, 22 May 2009 08:54:47 -0700 (PDT) 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 n4MFnGwU016099; Fri, 22 May 2009 11:49:16 -0400 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 n4MFnFHc020337; Fri, 22 May 2009 11:49:15 -0400 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 n4MFnEm5008776; Fri, 22 May 2009 11:49:15 -0400 Message-ID: <4A16C97A.2020909@sandeen.net> Date: Fri, 22 May 2009 10:49:14 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Joe Hsu CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: about XFS_IOC_RESVSP Subject: Re: about XFS_IOC_RESVSP References: <7fe205990905220716v7d06b9bch40fe6136af17e345@mail.gmail.com> In-Reply-To: <7fe205990905220716v7d06b9bch40fe6136af17e345@mail.gmail.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: 1243007687 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0153 1.0000 -1.9211 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= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26461 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Joe Hsu wrote: > I pre-allocate blocks for a file. Then I use "open" and "write" system > calls to generate the content for that file. After the file is really > written to the disk, > I want to set all the extent(s) of that file unwritten. Then I will > write new content to > the same file. Is that possible? That means: > I want to dis-care the content just written and use the same allocated blocks. > In another words, I want to restore the state of the file to the state > when it was > first pre-allocated. > > Why am I doing this? Why not just over-write it? When doing > partial over-writing, > some blocks may be read for partial update before they are written > out. This hurts > some IO performance and If I can, I would prefer to dis-care old > content of the file and > use same (pre)allocated blocks. (In my case, I am doing intensive IO.) > > Any one can give me some hints? Thanks. > Do you really need the exact same blocks? What if you just truncate to 0 & re-allocate? -Eric From nagual.hsu@gmail.com Fri May 22 12:36:17 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4MHaGHC226479 for ; Fri, 22 May 2009 12:36:16 -0500 X-ASG-Debug-ID: 1243013787-38fb00120000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-pz0-f190.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 627862A4338 for ; Fri, 22 May 2009 10:36:28 -0700 (PDT) Received: from mail-pz0-f190.google.com (mail-pz0-f190.google.com [209.85.222.190]) by cuda.sgi.com with ESMTP id HaA1gTYk7x31ZX9r for ; Fri, 22 May 2009 10:36:28 -0700 (PDT) Received: by pzk28 with SMTP id 28so1608945pzk.20 for ; Fri, 22 May 2009 10:36:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=86jiLlcdydPyWyiHWW8ga0SGG6j6K7984gFr4sFioGA=; b=DooUrIPHOe78VLCjbvx809sswz3kFekDWMl3QVvcK3u15kYQdGnAgCR3Vlx4nBABmT haxN2/Fp6ZL2V0jJkbSqgaSzh1poVOfpaif9e+NzL5X+qhlJ8Zp9VqM76JyWl8Y/wZ0p emFGXfRgGB0aAOXUXfkZfzQ1bVud0+y2mc3vs= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=e+FxznFYXLgcseflV+2vl9eU2vN76SvUBRSbZ01O4Oui6EWt6vt1G9mDxy9Ljns0oX TGw/9/QRHqqOZUe98E0xW8qbcuqeBqQmKgD2r1j27gvMmABUMmoGH95FdL4hm4OOKF/S cyo2KaJjLy05ZAXycmO6PG2MDfCy3ujKKziQo= MIME-Version: 1.0 Received: by 10.110.73.3 with SMTP id v3mr114523tia.17.1243013786696; Fri, 22 May 2009 10:36:26 -0700 (PDT) In-Reply-To: <4A16C97A.2020909@sandeen.net> References: <7fe205990905220716v7d06b9bch40fe6136af17e345@mail.gmail.com> <4A16C97A.2020909@sandeen.net> Date: Sat, 23 May 2009 01:36:26 +0800 Message-ID: <7fe205990905221036h71823b2bwf88123a38a406324@mail.gmail.com> X-ASG-Orig-Subj: Re: about XFS_IOC_RESVSP Subject: Re: about XFS_IOC_RESVSP From: Joe Hsu To: Eric Sandeen Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-pz0-f190.google.com[209.85.222.190] X-Barracuda-Start-Time: 1243013788 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0052 1.0000 -1.9869 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.99 X-Barracuda-Spam-Status: No, SCORE=-1.99 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26467 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Well, I have multiple processes running concurrently, and each writes on its own files( the sort of files I mentioned), while at the same time, I have other programs doing normal but light I/O to other files on the same xfs partition. Once I thought maybe I can pre-allocate these special files within a directory, which has fixed allocation groups(I guess that means fixed sets of blocks), and then I can try to make 'truncate to 0 and pre-allocate' requests sequential for the running processes. But, XFS seems to have this feature, I cannot find how to do that. 2009/5/22 Eric Sandeen : > Joe Hsu wrote: > Do you really need the exact same blocks? =A0What if you just truncate to > 0 & re-allocate? > > -Eric > --=20 The sun is shinny but the ice is slippery. From Richard.Ems@cape-horn-eng.com Sat May 23 10:01:25 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4NF1OsC010477 for ; Sat, 23 May 2009 10:01:25 -0500 X-ASG-Debug-ID: 1243091229-202301f40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtprelay08.ispgateway.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 253BD12FB5D4 for ; Sat, 23 May 2009 08:07:09 -0700 (PDT) Received: from smtprelay08.ispgateway.de (smtprelay08.ispgateway.de [80.67.31.42]) by cuda.sgi.com with ESMTP id SrFd8Ievhhqpbc0T for ; Sat, 23 May 2009 08:07:09 -0700 (PDT) Received: from [62.43.225.238] (helo=[192.168.30.191]) by smtprelay08.ispgateway.de with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.68) (envelope-from ) id 1M7sj8-0003b9-6k for xfs@oss.sgi.com; Sat, 23 May 2009 17:01:34 +0200 Message-ID: <4A180FCD.9080905@cape-horn-eng.com> Date: Sat, 23 May 2009 17:01:33 +0200 From: Richard Ems User-Agent: Thunderbird 2.0.0.21 (X11/20090310) MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument Subject: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument X-Enigmail-Version: 0.95.7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Df-Sender: 337294 X-Barracuda-Connect: smtprelay08.ispgateway.de[80.67.31.42] X-Barracuda-Start-Time: 1243091230 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26535 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi list, I'm getting the error "xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument" while trying to grow an XFS partition. This is on openSUSE 11.1 64 bit, with xfsprogs-2.10.2-3.1 from http://download.opensuse.org/repositories/filesystems/openSUSE_11.1/x86_64/xfsprogs-2.10.2-3.1.x86_64.rpm . This error is the same or looks similar to the one reported some months ago at http://oss.sgi.com/archives/xfs/2009-02/msg00028.html . There is apparently a fix for it, see http://oss.sgi.com/archives/xfs/2008-12/msg01794.html : ********************************************************* commit 471d59103167c84f17b9bcfee22ed10b44ff206e Author: sandeen@xxxxxxxxxxx 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 ********************************************************* I tried different 2.6.27 versions, one 2.6.29 and one 2.6.30-rc6 version, all gave the same error, check https://bugzilla.novell.com/show_bug.cgi?id=506361 for the different kernel versions and errors. Is this fix still not included in Linus / openSUSE trees? Or am I hitting another error? Thanks, Richard -- Richard Ems mail: Richard.Ems@Cape-Horn-Eng.com Cape Horn Engineering S.L. C/ Dr. J.J. Dómine 1, 5º piso 46011 Valencia Tel : +34 96 3242923 / Fax 924 http://www.cape-horn-eng.com From sandeen@sandeen.net Sat May 23 10:50:16 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4NFoFdX011581 for ; Sat, 23 May 2009 10:50:15 -0500 X-ASG-Debug-ID: 1243093826-75f6022f0000-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 7BFEF19DAAE6 for ; Sat, 23 May 2009 08:50:26 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id lSXNc6pagxzD7lEA for ; Sat, 23 May 2009 08:50:26 -0700 (PDT) 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 DF6F8AC358C; Sat, 23 May 2009 10:50:24 -0500 (CDT) Message-ID: <4A181B40.9080608@sandeen.net> Date: Sat, 23 May 2009 10:50:24 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Richard Ems CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument Subject: Re: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument References: <4A180FCD.9080905@cape-horn-eng.com> In-Reply-To: <4A180FCD.9080905@cape-horn-eng.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: 1243093827 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26538 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Richard Ems wrote: > Hi list, > > I'm getting the error "xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: > Invalid argument" while trying to grow an XFS partition. > > This is on openSUSE 11.1 64 bit, with xfsprogs-2.10.2-3.1 from > http://download.opensuse.org/repositories/filesystems/openSUSE_11.1/x86_64/xfsprogs-2.10.2-3.1.x86_64.rpm The compat handlers should only matter if you're using 32 bit userspace with a 64 bit kernel... Are you certain that your xfsprogs userspace is 64-bit? > > This error is the same or looks similar to the one reported some months > ago at http://oss.sgi.com/archives/xfs/2009-02/msg00028.html . > > There is apparently a fix for it, see > http://oss.sgi.com/archives/xfs/2008-12/msg01794.html : > > ********************************************************* > commit 471d59103167c84f17b9bcfee22ed10b44ff206e > Author: sandeen@xxxxxxxxxxx > 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 > ********************************************************* > > I tried different 2.6.27 versions, one 2.6.29 and one 2.6.30-rc6 > version, all gave the same error, check > https://bugzilla.novell.com/show_bug.cgi?id=506361 for the different > kernel versions and errors. I don't see in that bug where you tested .29 or .30, or what the results were... > Is this fix still not included in Linus / openSUSE trees? As for Linus' tree, AFAIK everything works; I can't speak to what SuSE has. -Eric > Or am I hitting another error? > > Thanks, Richard > > From richard.ems@cape-horn-eng.com Sat May 23 11:07:13 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.9 required=5.0 tests=BAYES_00,MIME_QP_LONG_LINE, RCVD_NUMERIC_HELO autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4NG7CCE011925 for ; Sat, 23 May 2009 11:07:12 -0500 X-ASG-Debug-ID: 1243095177-570a00fe0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtprelay07.ispgateway.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3DA7414856FD for ; Sat, 23 May 2009 09:12:57 -0700 (PDT) Received: from smtprelay07.ispgateway.de (smtprelay07.ispgateway.de [80.67.31.41]) by cuda.sgi.com with ESMTP id 6YDITMorfIQnxLZS for ; Sat, 23 May 2009 09:12:57 -0700 (PDT) Received: from [80.67.16.111] (helo=localhost) by smtprelay07.ispgateway.de with esmtpa (Exim 4.68) (envelope-from ) id 1M7tkn-0004O8-CD; Sat, 23 May 2009 18:07:21 +0200 Received: from 84.126.78.226.dyn.user.ono.com (84.126.78.226.dyn.user.ono.com [84.126.78.226]) by webmail.df.eu (Horde Framework) with HTTP; Sat, 23 May 2009 18:07:21 +0200 Message-ID: <20090523180721.94212hyfjppuupmo@webmail.df.eu> Date: Sat, 23 May 2009 18:07:21 +0200 From: richard.ems@cape-horn-eng.com To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument Subject: Re: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument References: <4A180FCD.9080905@cape-horn-eng.com> <4A181B40.9080608@sandeen.net> In-Reply-To: <4A181B40.9080608@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; DelSp="Yes"; format="flowed" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable User-Agent: Dynamic Internet Messaging Program (DIMP) H3 (1.1.2) X-Originating-IP: 84.126.78.226 X-Df-Sender: 337294 X-Barracuda-Connect: smtprelay07.ispgateway.de[80.67.31.41] X-Barracuda-Start-Time: 1243095178 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: 0.05 X-Barracuda-Spam-Status: No, SCORE=0.05 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MIME_QP_LONG_LINE, NO_REAL_NAME, RCVD_NUMERIC_HELO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26539 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 1.25 RCVD_NUMERIC_HELO Received: contains an IP address used for HELO 0.82 MIME_QP_LONG_LINE RAW: Quoted-printable line longer than 76 chars X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Quoting Eric Sandeen : > Richard Ems wrote: >> Hi list, >> >> I'm getting the error "xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: >> Invalid argument" while trying to grow an XFS partition. >> >> This is on openSUSE 11.1 64 bit, with xfsprogs-2.10.2-3.1 from >> http://download.opensuse.org/repositories/filesystems/openSUSE_11.1/x86_6= 4/xfsprogs-2.10.2-3.1.x86_64.rpm > > The compat handlers should only matter if you're using 32 bit userspace > with a 64 bit kernel... > > Are you certain that your xfsprogs userspace is 64-bit? Yes. c3m:~ # type -a xfs_growfs xfs_growfs is /usr/sbin/xfs_growfs c3m:~ # file /usr/sbin/xfs_growfs /usr/sbin/xfs_growfs: ELF 64-bit LSB executable, x86-64, version 1 =20 (SYSV), for GNU/Linux 2.6.4, dynamically linked (uses shared libs), =20 not stripped > >> >> This error is the same or looks similar to the one reported some months >> ago at http://oss.sgi.com/archives/xfs/2009-02/msg00028.html . >> >> There is apparently a fix for it, see >> http://oss.sgi.com/archives/xfs/2008-12/msg01794.html : >> >> ********************************************************* >> commit 471d59103167c84f17b9bcfee22ed10b44ff206e >> Author: sandeen@xxxxxxxxxxx >> 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 >> ********************************************************* >> >> I tried different 2.6.27 versions, one 2.6.29 and one 2.6.30-rc6 >> version, all gave the same error, check >> https://bugzilla.novell.com/show_bug.cgi?id=3D506361 for the different >> kernel versions and errors. > > I don't see in that bug where you tested .29 or .30, or what the results > were... Sorry, I wrote a 2nd comment into bugzilla but forgot to submit it 8( . Now it's there, please check again ( =20 https://bugzilla.novell.com/show_bug.cgi?id=3D506361#c1 ) . > > >> Is this fix still not included in Linus / openSUSE trees? > > As for Linus' tree, AFAIK everything works; I can't speak to what SuSE has= . So the Vanilla kernel I tried should have this fix included, is it =20 then a new bug? Thanks, Richard -- Richard Ems mail: Richard.Ems@Cape-Horn-Eng.com Cape Horn Engineering S.L. C/ Dr. J.J. D=F3mine 1, 5=BA piso 46011 Valencia Tel : +34 96 3242923 / Fax 924 http://www.cape-horn-eng.com From sandeen@sandeen.net Sat May 23 12:35:09 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4NHZ9Hj013189 for ; Sat, 23 May 2009 12:35:09 -0500 X-ASG-Debug-ID: 1243100120-713703b70000-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 8B26C2A6898 for ; Sat, 23 May 2009 10:35:20 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id NN52UNTUOXxWwT2n for ; Sat, 23 May 2009 10:35:20 -0700 (PDT) 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 614BDAC358C; Sat, 23 May 2009 12:35:19 -0500 (CDT) Message-ID: <4A1833D7.30608@sandeen.net> Date: Sat, 23 May 2009 12:35:19 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: richard.ems@cape-horn-eng.com CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument Subject: Re: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument References: <4A180FCD.9080905@cape-horn-eng.com> <4A181B40.9080608@sandeen.net> <20090523180721.94212hyfjppuupmo@webmail.df.eu> In-Reply-To: <20090523180721.94212hyfjppuupmo@webmail.df.eu> 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: 1243100121 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26544 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean richard.ems@cape-horn-eng.com wrote: > Quoting Eric Sandeen : > >> Richard Ems wrote: ... >>> I tried different 2.6.27 versions, one 2.6.29 and one 2.6.30-rc6 >>> version, all gave the same error, check >>> https://bugzilla.novell.com/show_bug.cgi?id=506361 for the different >>> kernel versions and errors. >> I don't see in that bug where you tested .29 or .30, or what the results >> were... > > Sorry, I wrote a 2nd comment into bugzilla but forgot to submit it 8( . > Now it's there, please check again ( > https://bugzilla.novell.com/show_bug.cgi?id=506361#c1 ) . > >> >>> Is this fix still not included in Linus / openSUSE trees? >> As for Linus' tree, AFAIK everything works; I can't speak to what SuSE has. > > So the Vanilla kernel I tried should have this fix included, is it > then a new bug? Not sure ... how big is the current fs and how big is the device? Can you provide: # xfs_info /mnt # grep sda1 /proc/partitions -Eric From richard.ems@cape-horn-eng.com Sat May 23 12:45:42 2009 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=BAYES_00,MIME_QP_LONG_LINE, RCVD_NUMERIC_HELO autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4NHjgRK013405 for ; Sat, 23 May 2009 12:45:42 -0500 X-ASG-Debug-ID: 1243100753-3ff402fb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtprelay08.ispgateway.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6D9211A130EA for ; Sat, 23 May 2009 10:45:53 -0700 (PDT) Received: from smtprelay08.ispgateway.de (smtprelay08.ispgateway.de [80.67.31.31]) by cuda.sgi.com with ESMTP id fvzrPKw9TCE33WoJ for ; Sat, 23 May 2009 10:45:53 -0700 (PDT) Received: from [80.67.16.115] (helo=localhost) by smtprelay08.ispgateway.de with esmtpa (Exim 4.68) (envelope-from ) id 1M7vI8-0004sG-Dy; Sat, 23 May 2009 19:45:52 +0200 Received: from 84.126.78.226.dyn.user.ono.com (84.126.78.226.dyn.user.ono.com [84.126.78.226]) by webmail.df.eu (Horde Framework) with HTTP; Sat, 23 May 2009 19:45:52 +0200 Message-ID: <20090523194552.66062w3zquwvms00@webmail.df.eu> Date: Sat, 23 May 2009 19:45:52 +0200 From: richard.ems@cape-horn-eng.com To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument Subject: Re: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument References: <4A180FCD.9080905@cape-horn-eng.com> <4A181B40.9080608@sandeen.net> <20090523180721.94212hyfjppuupmo@webmail.df.eu> <4A1833D7.30608@sandeen.net> In-Reply-To: <4A1833D7.30608@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; DelSp="Yes"; format="flowed" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable User-Agent: Dynamic Internet Messaging Program (DIMP) H3 (1.1.2) X-Originating-IP: 84.126.78.226 X-Df-Sender: 337294 X-Barracuda-Connect: smtprelay08.ispgateway.de[80.67.31.31] X-Barracuda-Start-Time: 1243100754 X-Barracuda-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.05 X-Barracuda-Spam-Status: No, SCORE=0.05 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MIME_QP_LONG_LINE, NO_REAL_NAME, RCVD_NUMERIC_HELO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26544 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 1.25 RCVD_NUMERIC_HELO Received: contains an IP address used for HELO 0.82 MIME_QP_LONG_LINE RAW: Quoted-printable line longer than 76 chars X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Quoting Eric Sandeen : > Not sure ... how big is the current fs and how big is the device? Can > you provide: > > # xfs_info /mnt > # grep sda1 /proc/partitions It is a 16TB FS, and I add 4 x 1 TB HDDs to the RAID 6 array, so the =20 device went from 16 TB to 20 TB. c3m:~ # xfs_info /backup/IFT meta-data=3D/dev/sda1 isize=3D256 agcount=3D52, agsize=3D762= 88719 blks =3D sectsz=3D512 attr=3D1 data =3D bsize=3D4096 blocks=3D3905982455, imaxp= ct=3D25 =3D sunit=3D0 swidth=3D0 blks naming =3Dversion 2 bsize=3D4096 ascii-ci=3D0 log =3Dinternal bsize=3D4096 blocks=3D32768, version=3D= 1 =3D sectsz=3D512 sunit=3D0 blks, lazy-coun= t=3D0 realtime =3Dnone extsz=3D4096 blocks=3D0, rtextents=3D0 c3m:~ # grep sda1 /proc/partitions 8 1 19529912286 sda1 c3m:~ # parted /dev/sda print Model: IFT A24U-G2421 (scsi) Disk /dev/sda: 20.0TB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 20.0TB 20.0TB xfs LD01 , , , , , , , , , , , thanks, Richard --=20 Richard Ems mail: Richard.Ems@Cape-Horn-Eng.com Cape Horn Engineering S.L. C/ Dr. J.J. D=F3mine 1, 5=BA piso 46011 Valencia Tel : +34 96 3242923 / Fax 924 http://www.cape-horn-eng.com From sandeen@sandeen.net Sat May 23 13:47:00 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4NIl0ln014382 for ; Sat, 23 May 2009 13:47:00 -0500 X-ASG-Debug-ID: 1243104432-36c8016b0000-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 AE5E12A6ADA for ; Sat, 23 May 2009 11:47:12 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id RWvebx0sMbKE6gTz for ; Sat, 23 May 2009 11:47:12 -0700 (PDT) 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 BCBE3AC358C; Sat, 23 May 2009 13:47:11 -0500 (CDT) Message-ID: <4A1844AF.7030906@sandeen.net> Date: Sat, 23 May 2009 13:47:11 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: richard.ems@cape-horn-eng.com CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument Subject: Re: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument References: <4A180FCD.9080905@cape-horn-eng.com> <4A181B40.9080608@sandeen.net> <20090523180721.94212hyfjppuupmo@webmail.df.eu> <4A1833D7.30608@sandeen.net> <20090523194552.66062w3zquwvms00@webmail.df.eu> In-Reply-To: <20090523194552.66062w3zquwvms00@webmail.df.eu> 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: 1243104432 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26548 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean richard.ems@cape-horn-eng.com wrote: > Quoting Eric Sandeen : >> Not sure ... how big is the current fs and how big is the device? Can >> you provide: >> >> # xfs_info /mnt >> # grep sda1 /proc/partitions > > It is a 16TB FS, and I add 4 x 1 TB HDDs to the RAID 6 array, so the > device went from 16 TB to 20 TB. > > c3m:~ # xfs_info /backup/IFT > meta-data=/dev/sda1 isize=256 agcount=52, agsize=76288719 blks > = sectsz=512 attr=1 > data = bsize=4096 blocks=3905982455, imaxpct=25 > = sunit=0 swidth=0 blks > naming =version 2 bsize=4096 ascii-ci=0 > log =internal bsize=4096 blocks=32768, version=1 > = sectsz=512 sunit=0 blks, lazy-count=0 > realtime =none extsz=4096 blocks=0, rtextents=0 > > > c3m:~ # grep sda1 /proc/partitions > 8 1 19529912286 sda1 thanks, with that info I can reproduce it, I'll look into it soon... but not today. # xfs_io -f -c "truncate 19998630180864" fsfile # mkfs.xfs -f -bsize=4096 -dagsize=76288719b,size=3905982455b fsfile # mount -o loop fsfile mnt/ # xfs_growfs mnt/ meta-data=/dev/loop0 isize=256 agcount=52, agsize=76288719 blks = sectsz=512 attr=2 data = bsize=4096 blocks=3905982455, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=32768, version=2 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument -Eric From sandeen@sandeen.net Sat May 23 14:25:22 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4NJPLxr014916 for ; Sat, 23 May 2009 14:25:22 -0500 X-ASG-Debug-ID: 1243106733-047901000000-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 013791A13137 for ; Sat, 23 May 2009 12:25:33 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id nv1qDpFEFnosyrsk for ; Sat, 23 May 2009 12:25:33 -0700 (PDT) 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 C80F8AC358C; Sat, 23 May 2009 14:25:32 -0500 (CDT) Message-ID: <4A184DAC.8060400@sandeen.net> Date: Sat, 23 May 2009 14:25:32 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: richard.ems@cape-horn-eng.com CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument Subject: Re: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument References: <4A180FCD.9080905@cape-horn-eng.com> <4A181B40.9080608@sandeen.net> <20090523180721.94212hyfjppuupmo@webmail.df.eu> <4A1833D7.30608@sandeen.net> <20090523194552.66062w3zquwvms00@webmail.df.eu> <4A1844AF.7030906@sandeen.net> In-Reply-To: <4A1844AF.7030906@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: 1243106734 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26550 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Eric Sandeen wrote: > richard.ems@cape-horn-eng.com wrote: >> Quoting Eric Sandeen : >>> Not sure ... how big is the current fs and how big is the device? Can >>> you provide: >>> >>> # xfs_info /mnt >>> # grep sda1 /proc/partitions >> It is a 16TB FS, and I add 4 x 1 TB HDDs to the RAID 6 array, so the >> device went from 16 TB to 20 TB. >> >> c3m:~ # xfs_info /backup/IFT >> meta-data=/dev/sda1 isize=256 agcount=52, agsize=76288719 blks >> = sectsz=512 attr=1 >> data = bsize=4096 blocks=3905982455, imaxpct=25 >> = sunit=0 swidth=0 blks >> naming =version 2 bsize=4096 ascii-ci=0 >> log =internal bsize=4096 blocks=32768, version=1 >> = sectsz=512 sunit=0 blks, lazy-count=0 >> realtime =none extsz=4096 blocks=0, rtextents=0 >> >> >> c3m:~ # grep sda1 /proc/partitions >> 8 1 19529912286 sda1 > > thanks, with that info I can reproduce it, I'll look into it soon... but > not today. Actually I lied, I looked at it ;) if you growfs to a nr of blocks that is about 55 blocks less than the actual device size, it should succeed for you. There's a case where the last AG would be too small and it tries to compensate but there's an overflow, I'll send a patch. -Eric From sandeen@sandeen.net Sat May 23 14:30:02 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4NJU2W8015019 for ; Sat, 23 May 2009 14:30:02 -0500 X-ASG-Debug-ID: 1243107348-3ada02a40000-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 86C4FFFF9CD for ; Sat, 23 May 2009 12:35:48 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 4JaUNaphUyM4rnKL for ; Sat, 23 May 2009 12:35:48 -0700 (PDT) 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 4114AAC358C; Sat, 23 May 2009 14:30:12 -0500 (CDT) Message-ID: <4A184EC4.1050007@sandeen.net> Date: Sat, 23 May 2009 14:30:12 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: xfs-oss CC: Richard Ems X-ASG-Orig-Subj: [PATCH] fix overflow in xfs_growfs_data_private Subject: [PATCH] fix overflow in xfs_growfs_data_private 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: 1243107349 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26553 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean In the case where growing a filesystem would leave the last AG too small, the fixup code has an overflow in the calculation of the new size with one fewer ag, because "nagcount" is a 32 bit number. If the new filesystem has > 2^32 blocks in it this causes a problem resulting in an EINVAL return from growfs: # xfs_io -f -c "truncate 19998630180864" fsfile # mkfs.xfs -f -bsize=4096 -dagsize=76288719b,size=3905982455b fsfile # mount -o loop fsfile mnt/ # xfs_growfs mnt/ meta-data=/dev/loop0 isize=256 agcount=52, agsize=76288719 blks = sectsz=512 attr=2 data = bsize=4096 blocks=3905982455, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=32768, version=2 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument Reported-by: richard.ems@cape-horn-eng.com Signed-off-by: Eric Sandeen --- Index: linux-2.6/fs/xfs/xfs_fsops.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_fsops.c +++ linux-2.6/fs/xfs/xfs_fsops.c @@ -160,7 +160,7 @@ xfs_growfs_data_private( nagcount = new + (nb_mod != 0); if (nb_mod && nb_mod < XFS_MIN_AG_BLOCKS) { nagcount--; - nb = nagcount * mp->m_sb.sb_agblocks; + nb = (xfs_rfsblock_t)nagcount * mp->m_sb.sb_agblocks; if (nb < mp->m_sb.sb_dblocks) return XFS_ERROR(EINVAL); } From nagual.hsu@gmail.com Sun May 24 02:08:28 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4O78RPK035589 for ; Sun, 24 May 2009 02:08:27 -0500 X-ASG-Debug-ID: 1243148918-30cd01110000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-px0-f119.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5311B1A143C9 for ; Sun, 24 May 2009 00:08:38 -0700 (PDT) Received: from mail-px0-f119.google.com (mail-px0-f119.google.com [209.85.216.119]) by cuda.sgi.com with ESMTP id iByukgTlMWEdvGZz for ; Sun, 24 May 2009 00:08:38 -0700 (PDT) Received: by pxi17 with SMTP id 17so2262350pxi.20 for ; Sun, 24 May 2009 00:08:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=srF7QvfaUdbYRXh4ql4y8KuLXWqPliMuJXD+/Qc5mc0=; b=c/qxPqgH3nP0Niwx3t9PMzndhenxtPn0ux7e/0If9FvOURUL+fW5GsSWDdAOFI9yjJ uEweqGkmRipzrcXffWRhCgtN2CBWKG7m1asKgBJOoUiqSm2hgxyW1vfYI/LQih8M8mSH gxWoZ30twFmSDgr3TtZgKaF27RFtGBJ8x0tjU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=eu8+GAN9frFc9b6knddFZoZkieaC2d8iEg9Z45I5ZxN/YJJbzP5m392PcGWEnEP5sV KFqGVACQFEjUY4Z79/8yRrsAjqZq4e8QbjFlPR56DLuJWoDFRyA6LrZVIxGfYQPjgppM AgaGFkX5S1szTEUsecmwxUBX0Qy/hW84O/JAE= MIME-Version: 1.0 Received: by 10.110.69.5 with SMTP id r5mr171822tia.19.1243148917615; Sun, 24 May 2009 00:08:37 -0700 (PDT) In-Reply-To: <7fe205990905220716v7d06b9bch40fe6136af17e345@mail.gmail.com> References: <7fe205990905220716v7d06b9bch40fe6136af17e345@mail.gmail.com> Date: Sun, 24 May 2009 15:08:37 +0800 Message-ID: <7fe205990905240008u6a534d21pcdcfffdc19472b6@mail.gmail.com> X-ASG-Orig-Subj: Re: about XFS_IOC_RESVSP Subject: Re: about XFS_IOC_RESVSP From: Joe Hsu To: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-px0-f119.google.com[209.85.216.119] X-Barracuda-Start-Time: 1243148919 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1843 1.0000 -0.9114 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.91 X-Barracuda-Spam-Status: No, SCORE=-0.91 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26597 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean After days of testing(I only ftruncate to 0 and re-preallocate files if needed), fragmentation become much more serious, sigh 2009/5/22 Joe Hsu : > =A0 =A0 =A0 =A0I pre-allocate blocks for a file. Then I use "open" and "w= rite" system > calls to generate the content for that file. After the file is really > written to the disk, > I want to set all the extent(s) of that file unwritten. Then I will > write new content to > the same file. Is that possible? That means: > I want to dis-care the content just written and use the same allocated bl= ocks. > In another words, I want to restore the state of the file to the state > when it was > first pre-allocated. > > =A0 =A0 =A0 =A0Why am I doing this? Why not just over-write it? When doin= g > partial over-writing, > some blocks may be read for partial update before they are written > out. This hurts > some IO performance and If I can, I would prefer to dis-care old > content of the file and > use same (pre)allocated blocks. (In my case, I am doing intensive IO.) > > =A0 =A0 =A0 =A0Any one can give me some hints? Thanks. > > -- > The sun is shinny but the ice is slippery. > --=20 The sun is shinny but the ice is slippery. From nagual.hsu@gmail.com Sun May 24 02:26:52 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4O7Qpnj036132 for ; Sun, 24 May 2009 02:26:52 -0500 X-ASG-Debug-ID: 1243150023-2bbf01de0000-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 55EE11A144F8 for ; Sun, 24 May 2009 00:27:04 -0700 (PDT) Received: from rv-out-0708.google.com (rv-out-0708.google.com [209.85.198.241]) by cuda.sgi.com with ESMTP id AXQnzRSnjQ9G5B6q for ; Sun, 24 May 2009 00:27:04 -0700 (PDT) Received: by rv-out-0708.google.com with SMTP id k29so736957rvb.32 for ; Sun, 24 May 2009 00:27:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type:content-transfer-encoding; bh=M8C3u03pQ5bQIJQp1AzV84RvR4ZszRq/S5pbb555Nos=; b=ngb0IGZlJ7M/zb7Rdxiibwg1oRpDKzR0mRIdOYfs59dMQLQGBVQ/8JjmtiPI+hiRKG ULJInAPaRd9h85NpheLeBZ5EgYzujEWprPF2XmTQNVP55SSd3Fi2jyhTN7me4sn7d7+V n1EdY8VwSwG6vI6oDQVfa/JWejdn5czvZgxBs= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; b=jlWoTOhBBwfJ0pC1EGcYcBVhvOC47zIWsi8ANjhIy5TzpvwDpEB94EC3MDxZ9sO1hu nqBufefFO1wj0WuUM1LJVJAi5WHrqbEhLw1IQHUKWpLZJRT/TEVGN/qMhlN0sZY3Oz0J OUAXY1sMlp0sUdLV3I5QEcogTRcOeZLIDQkuc= MIME-Version: 1.0 Received: by 10.110.103.5 with SMTP id a5mr177909tic.31.1243150022818; Sun, 24 May 2009 00:27:02 -0700 (PDT) Date: Sun, 24 May 2009 15:27:02 +0800 Message-ID: <7fe205990905240027t15a0bb4ew68d7c328d8ebeee0@mail.gmail.com> X-ASG-Orig-Subj: Any fast way to make an ever pre-allocated extent become unwritten again? Subject: Any fast way to make an ever pre-allocated extent become unwritten again? From: Joe Hsu To: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: rv-out-0708.google.com[209.85.198.241] X-Barracuda-Start-Time: 1243150024 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4666 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= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26599 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I do really need this. When pre-allocated, files are not fragmented. After writing data to these files, I just want to make the extent un-written again, using the same allocated blocks. I can only initialize these files as un-fragmented in the beginning and I don't want to over-write them simply after they are fully written because over-writings can cause input traffic(partial updating of some blocks), thus lowering output performance. Thanks if any one can give me some idea. (Except dirty hacks into xfs filesystem kernel codes). -- The sun is shinny but the ice is slippery. From sandeen@sandeen.net Sun May 24 08:29:00 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_61, J_CHICKENPOX_71 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4ODSxnv047567 for ; Sun, 24 May 2009 08:28:59 -0500 X-ASG-Debug-ID: 1243172089-353d00ec0000-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 0D37312FB97F for ; Sun, 24 May 2009 06:34:49 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id XGjJ9I9cpycbcV9d for ; Sun, 24 May 2009 06:34:49 -0700 (PDT) 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 671CCAC358C; Sun, 24 May 2009 08:29:08 -0500 (CDT) Message-ID: <4A194BA5.1010308@sandeen.net> Date: Sun, 24 May 2009 08:29:09 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Joe Hsu CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: about XFS_IOC_RESVSP Subject: Re: about XFS_IOC_RESVSP References: <7fe205990905220716v7d06b9bch40fe6136af17e345@mail.gmail.com> <4A16C97A.2020909@sandeen.net> <7fe205990905221036h71823b2bwf88123a38a406324@mail.gmail.com> In-Reply-To: <7fe205990905221036h71823b2bwf88123a38a406324@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: 1243172091 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26620 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Joe Hsu wrote: > Well, I have multiple processes running concurrently, and each writes > on its own files( the sort of files I mentioned), while at the same > time, I have other programs doing normal but light I/O to other files > on the same xfs partition. > > Once I thought maybe I can pre-allocate these special files within a > directory, which has fixed allocation groups(I guess that means fixed > sets of blocks), and then I can try to make 'truncate to 0 and > pre-allocate' requests sequential for the running processes. But, XFS > seems to have this feature, I cannot find how to do that. There is no interface to re-mark existing blocks as unwritten, I'm afraid. It sounds like an interesting interface, but it's not there today AFAIK. You said: > Why am I doing this? Why not just over-write it? When doing partial > over-writing, some blocks may be read for partial update before they > are written out. This hurts some IO performance I guess it's not possible for you to do whole-block IO instead? Or even pad out the writes to block boundaries if needed? and: > After days of testing(I only ftruncate to 0 and re-preallocate files > if needed), fragmentation become much more serious, sigh It's interesting that it's so bad, I'd have hoped that if you free a contiguous chunk of blocks and then immediately reallocate them on the same inode, that they'd get preallocated nicely.... How bad is it? -Eric > 2009/5/22 Eric Sandeen : >> Joe Hsu wrote: Do you really need the exact same blocks? What if >> you just truncate to 0 & re-allocate? >> >> -Eric >> > > > From BATV+f7118123f08fdd30313d+2100+infradead.org+hch@bombadil.srs.infradead.org Sun May 24 09:39:38 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4OEdZ7c049964 for ; Sun, 24 May 2009 09:39:37 -0500 X-ASG-Debug-ID: 1243176327-353702d10000-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 A454E12FB994 for ; Sun, 24 May 2009 07:45:27 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id YuxzSVWITnsPsCNg for ; Sun, 24 May 2009 07:45:27 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M8Era-0005d6-1o; Sun, 24 May 2009 14:39:46 +0000 Date: Sun, 24 May 2009 10:39:46 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs mailing list , ext4 development X-ASG-Orig-Subj: Re: [PATCH] xfstests: enable many tests to run on ext2/3/4 Subject: Re: [PATCH] xfstests: enable many tests to run on ext2/3/4 Message-ID: <20090524143945.GA32554@infradead.org> References: <4A15B649.70801@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A15B649.70801@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: 1243176327 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Wow, that's a nice start. The only important thing missing is checking the filesystems after each test run for the non-xfs case. Maybe we should put this in in stages? The _supported_fs generic thing is a nice cleanup already for the existing xfs/nfs/udf setup and should go in ASAP. The _scratch_mkfs output fix in 069 could also be a separate patch. The _setup_generic_testdir should be generalized to match XFS for the default case and just set testdir in _setup_testdir instead of another function. Also the comment there should be updated. Same for _cleanup_testdir. Btw, the way udf and nfs are currently handled look not very nice to me. We should not set up the test device by default for any filesystem but rather have a -setup or similar option to set it up if needed. In common I would indeed prefer a new fstype option, but we might aswell put the current version in as-is. Especially if we could tie up a really generic fstype= that wouldn't require listing the filesystems if they don't require special mount options or similar. The only thing preventing that is as far as I can see the current difference in _require_scratch for xfs and udf vs the rest. Which looks really weird to me, need to investigate what's going on. As for the generic group I must say I don't like it very much, the filtering of notrun (maybe only notrun because of the filesystem type mismatch) sounds much better to me. From sandeen@redhat.com Sun May 24 11:38:14 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4OGcD6I053708 for ; Sun, 24 May 2009 11:38:14 -0500 X-ASG-Debug-ID: 1243183445-167802b50000-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 4CD3812FBC0C for ; Sun, 24 May 2009 09:44:05 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id YJCnOnxjqeYl1S2f for ; Sun, 24 May 2009 09:44:05 -0700 (PDT) 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 n4OGc4K5009829; Sun, 24 May 2009 12:38:04 -0400 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 n4OGc3kk027116; Sun, 24 May 2009 12:38:04 -0400 Received: from liberator.sandeen.net (sebastian-int.corp.redhat.com [172.16.52.221]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n4OGc24P017697; Sun, 24 May 2009 12:38:02 -0400 Message-ID: <4A1977EA.3000604@redhat.com> Date: Sun, 24 May 2009 11:38:02 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs mailing list , ext4 development X-ASG-Orig-Subj: Re: [PATCH] xfstests: enable many tests to run on ext2/3/4 Subject: Re: [PATCH] xfstests: enable many tests to run on ext2/3/4 References: <4A15B649.70801@redhat.com> <20090524143945.GA32554@infradead.org> In-Reply-To: <20090524143945.GA32554@infradead.org> 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: 1243183446 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26629 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Wow, that's a nice start. The only important thing missing is checking > the filesystems after each test run for the non-xfs case. Yep, that was in the back of my mind. Probably needs more abstraction to make that cleaner. > Maybe we should put this in in stages? The _supported_fs generic > thing is a nice cleanup already for the existing xfs/nfs/udf setup > and should go in ASAP. sure, I can break it up. > The _scratch_mkfs output fix in 069 could also be a separate patch. > > The _setup_generic_testdir should be generalized to match XFS for the > default case and just set testdir in _setup_testdir instead of > another function. Also the comment there should be updated. > > Same for _cleanup_testdir. > > Btw, the way udf and nfs are currently handled look not very nice to me. > We should not set up the test device by default for any filesystem but > rather have a -setup or similar option to set it up if needed. many of them likely fail, too, some of the acl & attr tests have some assumptions about xfs limits. > In common I would indeed prefer a new fstype option, but we might aswell > put the current version in as-is. Especially if we could tie up a really > generic fstype= that wouldn't require listing the filesystems if they > don't require special mount options or similar. Ok. I'd even thought that maybe by default, w/o options, it should just run as whatever $TEST_DEV is formatted to (though that's trickier for nfs I guess) > The only thing preventing that is as far as I can see the current difference > in _require_scratch for xfs and udf vs the rest. Which looks really weird > to me, need to investigate what's going on. I think this is because even for udf etc, it still expects $TEST_DIR to be xfs, so swizzles around test & scratch. yeah, I agree that's messy. > As for the generic group I must say I don't like it very much, the > filtering of notrun (maybe only notrun because of the filesystem type > mismatch) sounds much better to me. yeah, after I ran it a bit more I think I tend to agree.... I'll work on breaking this up a bit and tidying up some of the loose ends, since the basic approach seems sane to more than one person now :) Thanks, -Eric From SRS0+LrGY+79+fromorbit.com=david@internode.on.net Sun May 24 19:51:26 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4P0pPI1067669 for ; Sun, 24 May 2009 19:51:25 -0500 X-ASG-Debug-ID: 1243213037-681c02640000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 71A1812FC830 for ; Sun, 24 May 2009 17:57:17 -0700 (PDT) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id 6ozRCPnWFEYKfzal for ; Sun, 24 May 2009 17:57:17 -0700 (PDT) Received: from discord (unverified [121.44.1.36]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 42278-1927428 for multiple; Mon, 25 May 2009 10:21:34 +0930 (CST) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1M8OPc-0000GH-HU; Mon, 25 May 2009 10:51:32 +1000 Date: Mon, 25 May 2009 10:51:32 +1000 From: Dave Chinner To: Eddie Atherton Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS internal error xfs_trans_cancel at line 1164 of file fs/xfs/xfs_trans.c Subject: Re: XFS internal error xfs_trans_cancel at line 1164 of file fs/xfs/xfs_trans.c Message-ID: <20090525005132.GR16929@discord.disaster> References: <4A13AA1B.7080801@attglobal.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A13AA1B.7080801@attglobal.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1243213039 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26656 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, May 19, 2009 at 11:58:35PM -0700, Eddie Atherton wrote: > I'm trying to install a clean Slackware 12.2 (2.6.27.7) under ESXi, and > can almost guarantee getting this error immediately after formatting the > root partition. It's happened 4 out of the 5 times I've tried, so far. > > The sequence of commands, after digging through the install scripts, > that lead to this failure are just: > > mkfs.xfs > mount > mkdir That's bizarre. Can you provide a xfs_metadump image of the fs after the shutdown has occurred? Cheers, Dave. -- Dave Chinner david@fromorbit.com From stunnel@attglobal.net Sun May 24 23:06:38 2009 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=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4P46cYt072993 for ; Sun, 24 May 2009 23:06:38 -0500 X-ASG-Debug-ID: 1243224410-541e033b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from kcout02.prserv.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2C5812A8C3F for ; Sun, 24 May 2009 21:06:50 -0700 (PDT) Received: from kcout02.prserv.net (kcout02.prserv.net [12.154.55.32]) by cuda.sgi.com with ESMTP id FgdMru8xMDE38ac7 for ; Sun, 24 May 2009 21:06:50 -0700 (PDT) Received: from [127.0.0.1] (cpe-76-169-247-82.socal.res.rr.com[76.169.247.82]) by prserv.net (kcout02) with ESMTP id <20090525040647202008d0ree> (Authid: usinet.athertn); Mon, 25 May 2009 04:06:49 +0000 X-Originating-IP: [76.169.247.82] Message-ID: <4A1A1953.6030009@attglobal.net> Date: Sun, 24 May 2009 21:06:43 -0700 From: Eddie Atherton Reply-To: stunnel@attglobal.net User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS internal error xfs_trans_cancel at line 1164 of file fs/xfs/xfs_trans.c Subject: Re: XFS internal error xfs_trans_cancel at line 1164 of file fs/xfs/xfs_trans.c References: <4A13AA1B.7080801@attglobal.net> <20090525005132.GR16929@discord.disaster> In-Reply-To: <20090525005132.GR16929@discord.disaster> Content-Type: multipart/alternative; boundary="------------000807050808040906010604" X-Barracuda-Connect: kcout02.prserv.net[12.154.55.32] X-Barracuda-Start-Time: 1243224411 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-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.26664 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format. --------------000807050808040906010604 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Dave Chinner wrote: > On Tue, May 19, 2009 at 11:58:35PM -0700, Eddie Atherton wrote: > >> I'm trying to install a clean Slackware 12.2 (2.6.27.7) under ESXi, and >> can almost guarantee getting this error immediately after formatting the >> root partition. It's happened 4 out of the 5 times I've tried, so far. >> >> The sequence of commands, after digging through the install scripts, >> that lead to this failure are just: >> >> mkfs.xfs >> mount >> mkdir >> > > That's bizarre. Can you provide a xfs_metadump image of the fs after > the shutdown has occurred? > I can try, but it's kinda difficult, as this happens in a VM, where I don't have a filesystem to capture the data to, or any "communication" to the "outside world" to transfer it out. But, hey, that's what challenges are all about. Cheers, Eddie > Cheers, > > Dave. > --------------000807050808040906010604 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit
Dave Chinner wrote:
On Tue, May 19, 2009 at 11:58:35PM -0700, Eddie Atherton wrote:
  
I'm trying to install a clean Slackware 12.2 (2.6.27.7) under ESXi, and  
can almost guarantee getting this error immediately after formatting the  
root partition.  It's happened 4 out of the 5 times I've tried, so far.

The sequence of commands, after digging through the install scripts,  
that lead to this failure are just:

mkfs.xfs
mount
mkdir
    

That's bizarre. Can you provide a xfs_metadump image of the fs after
the shutdown has occurred?
  
I can try, but it's kinda difficult, as this happens in a VM, where I don't have a filesystem to capture the data to, or any "communication" to the "outside world" to transfer it out.  But, hey, that's what challenges are all about.

Cheers,
Eddie
Cheers,

Dave.
  
--------------000807050808040906010604-- From ptccommunications@ptc.com Mon May 25 01:20:43 2009 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4P6KhMG079520 for ; Mon, 25 May 2009 01:20:43 -0500 X-ASG-Debug-ID: 1243232455-411a01f10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from irp2.ptc.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2AC5D2A8ECC for ; Sun, 24 May 2009 23:20:55 -0700 (PDT) Received: from irp2.ptc.com (irp2.ptc.com [12.11.148.84]) by cuda.sgi.com with ESMTP id wOTy8CUH2OzzVCK7 for ; Sun, 24 May 2009 23:20:55 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation X-IronPort-AV: E=Sophos;i="4.41,243,1241409600"; d="scan'208,217";a="44581576" Received: from hq-ex3fe2.ptcnet.ptc.com ([132.253.201.63]) by irp2.ptc.com with ESMTP; 25 May 2009 02:20:50 -0400 Received: from webapp-5 ([132.253.201.17]) by HQ-EX3FE2.ptcnet.ptc.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 25 May 2009 02:20:50 -0400 Message-ID: <12473788.1243232450332.JavaMail.wladmin@webapp-5> Date: Mon, 25 May 2009 02:20:50 -0400 (EDT) From: "ptccommunications@ptc.com" To: xfs@oss.sgi.com X-ASG-Orig-Subj: Whitepaper: Modular Product Architecture (MPA) for Industrial Manufacturers Subject: Whitepaper: Modular Product Architecture (MPA) for Industrial Manufacturers Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_798_575721.1243232450330" X-OriginalArrivalTime: 25 May 2009 06:20:50.0125 (UTC) FILETIME=[F2DF9FD0:01C9DD00] X-Barracuda-Connect: irp2.ptc.com[12.11.148.84] X-Barracuda-Start-Time: 1243232456 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean ------=_Part_798_575721.1243232450330 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit ============================================================================== HERE'S YOUR REQUESTED INFORMATION =============================================================================== Thank you for registering! Click here (http://www.ptc.com/view?im_dbkey=68390) for the whitepaper: Modular Product Architecture: Competitive Edge through Product Customization =============================================================================== contact PTC http://www.ptc.com/company/contacts/index.htm privacy policy http://www.ptc.com/company/policies/index.htm unsubscribe http://www.ptc.com/appserver/mkt/mail/preferences.jsp?&offd=&campd=&conud=&mailkey=2354034&email=xfs@oss.sgi.com change email preferences http://www.ptc.com/appserver/mkt/mail/preferences.jsp?&offd=&campd=&conud=&mailkey=2354034&email=xfs@oss.sgi.com edit profile http://www.ptc.com/read?&w=2354034&t=/common/account/index.htm ------------------------------------------------------------------------------- This email was sent to: xfs@oss.sgi.com PTC, 140 Kendrick Street, Needham, MA 02494 USA If you wish to unsubscribe from all PTC Emails, please send a blank email to unsubscribe@ptc.com. ------=_Part_798_575721.1243232450330 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit Whitepaper: Modular Product Architecture (MPA) for Industrial Manufacturers

Here's Your Requested Information

Thank you for registering!

Click here for the whitepaper: Modular Product Architecture: Competitive Edge through Product Customization


contact PTC | privacy policy | unsubscribe | change email preferences | edit profile
This email was sent to: xfs@oss.sgi.com     PTC, 140 Kendrick Street, Needham, MA 02494 USA
If you wish to unsubscribe from all PTC Emails, please send a blank email to unsubscribe@ptc.com.
------=_Part_798_575721.1243232450330-- From Richard.Ems@cape-horn-eng.com Mon May 25 04:54:21 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4P9sKQA089878 for ; Mon, 25 May 2009 04:54:21 -0500 X-ASG-Debug-ID: 1243245616-139702670000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtprelay10.ispgateway.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5883012FD7E6 for ; Mon, 25 May 2009 03:00:16 -0700 (PDT) Received: from smtprelay10.ispgateway.de (smtprelay10.ispgateway.de [80.67.31.44]) by cuda.sgi.com with ESMTP id UBEvsACgarm0ALXe for ; Mon, 25 May 2009 03:00:16 -0700 (PDT) Received: from [62.43.225.238] (helo=[192.168.30.191]) by smtprelay10.ispgateway.de with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.68) (envelope-from ) id 1M8Wt2-0007JX-Nj; Mon, 25 May 2009 11:54:29 +0200 Message-ID: <4A1A6AD4.10804@cape-horn-eng.com> Date: Mon, 25 May 2009 11:54:28 +0200 From: Richard Ems User-Agent: Thunderbird 2.0.0.21 (X11/20090310) MIME-Version: 1.0 To: Eric Sandeen CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument Subject: Re: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument References: <4A180FCD.9080905@cape-horn-eng.com> <4A181B40.9080608@sandeen.net> <20090523180721.94212hyfjppuupmo@webmail.df.eu> <4A1833D7.30608@sandeen.net> <20090523194552.66062w3zquwvms00@webmail.df.eu> <4A1844AF.7030906@sandeen.net> <4A184DAC.8060400@sandeen.net> In-Reply-To: <4A184DAC.8060400@sandeen.net> X-Enigmail-Version: 0.95.7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Df-Sender: 337294 X-Barracuda-Connect: smtprelay10.ispgateway.de[80.67.31.44] X-Barracuda-Start-Time: 1243245617 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1144 1.0000 -1.3069 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.31 X-Barracuda-Spam-Status: No, SCORE=-1.31 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26681 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Eric Sandeen wrote: > if you growfs to a nr of blocks that is about 55 blocks less than the > actual device size, it should succeed for you. There's a case where the > last AG would be too small and it tries to compensate but there's an > overflow, I'll send a patch. Many thanks Eric for looking, finding and fixing it! 8) I will try to growfs to less than 55 blocks than the device as you proposed. Thanks again, Richard -- Richard Ems mail: Richard.Ems@Cape-Horn-Eng.com Cape Horn Engineering S.L. C/ Dr. J.J. Dómine 1, 5º piso 46011 Valencia Tel : +34 96 3242923 / Fax 924 http://www.cape-horn-eng.com From BATV+1711d93be4e1531a0960+2101+infradead.org+hch@bombadil.srs.infradead.org Mon May 25 05:15:22 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4PAFHoZ090582 for ; Mon, 25 May 2009 05:15:21 -0500 X-ASG-Debug-ID: 1243246529-0eaf00490000-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 2BCAC1A18C47 for ; Mon, 25 May 2009 03:15:29 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Uy1EEE8UsKz1GsJe for ; Mon, 25 May 2009 03:15:29 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M8XDN-0006l6-4x; Mon, 25 May 2009 10:15:29 +0000 Date: Mon, 25 May 2009 06:15:29 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss , Richard Ems X-ASG-Orig-Subj: Re: [PATCH] fix overflow in xfs_growfs_data_private Subject: Re: [PATCH] fix overflow in xfs_growfs_data_private Message-ID: <20090525101529.GA24124@infradead.org> References: <4A184EC4.1050007@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A184EC4.1050007@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: 1243246530 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, May 23, 2009 at 02:30:12PM -0500, Eric Sandeen wrote: > Index: linux-2.6/fs/xfs/xfs_fsops.c > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_fsops.c > +++ linux-2.6/fs/xfs/xfs_fsops.c > @@ -160,7 +160,7 @@ xfs_growfs_data_private( > nagcount = new + (nb_mod != 0); > if (nb_mod && nb_mod < XFS_MIN_AG_BLOCKS) { > nagcount--; > - nb = nagcount * mp->m_sb.sb_agblocks; > + nb = (xfs_rfsblock_t)nagcount * mp->m_sb.sb_agblocks; > if (nb < mp->m_sb.sb_dblocks) > return XFS_ERROR(EINVAL); Nice one! Thanks dear C integer promotion rules.. Would be good to get this into 2.6.30 Reviewed-by: Christoph Hellwig From sandeen@redhat.com Mon May 25 10:31:38 2009 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=AWL,BAYES_00,J_CHICKENPOX_56 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4PFVcPa102871 for ; Mon, 25 May 2009 10:31:38 -0500 X-ASG-Debug-ID: 1243265854-155d03bd0000-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 51A0B12FE593 for ; Mon, 25 May 2009 08:37:34 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id BQ5H08CGdEBZF3rr for ; Mon, 25 May 2009 08:37:34 -0700 (PDT) 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 n4PFVmC2012413; Mon, 25 May 2009 11:31:49 -0400 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 n4PFVmjE001282; Mon, 25 May 2009 11:31:48 -0400 Received: from liberator.sandeen.net (sebastian-int.corp.redhat.com [172.16.52.221]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n4PFVkAt026948; Mon, 25 May 2009 11:31:47 -0400 Message-ID: <4A1AB9E2.9050503@redhat.com> Date: Mon, 25 May 2009 10:31:46 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: xfs mailing list , ext4 development X-ASG-Orig-Subj: Re: [PATCH] xfstests: enable many tests to run on ext2/3/4 Subject: Re: [PATCH] xfstests: enable many tests to run on ext2/3/4 References: <4A15B649.70801@redhat.com> In-Reply-To: <4A15B649.70801@redhat.com> Content-Type: text/plain; charset=UTF-8 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: 1243265855 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26704 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Eric Sandeen wrote: > This gets many of the tests running on ext4 (and should on ext2/ext3 > as well). > > A few things could still be cleaned up; rather than -xfs, -ext3, -ext4 > etc it'd be better to do --fstype xfs or whatnot, and lose as much of > the special-casing as possible. But this gets it going, so maybe > worth merging now as a first step. > > This creates a new supported_fs "generic" type which should run on > any generic filesystem (well, assuming it supports acls & xattrs, along > with general posix-ness). > > It also adds a "generic" group, so you can do: > > ./check -ext4 -g generic > > and that way it'll avoid any fs-specific tests. They wouldn't > fail anyway, but it gets noisy to see all the "notrun" tests. For the uninitiated :) This applies on top of: http://git.kernel.org/?p=fs/xfs/xfstests-dev.git Apply my patch & build it with make... you'll need xfsprogs, xfsprogs-devel, and xfsprogs-qa-devel (or make install-dev, make install-qa from the xfsprogs tarball)* A few other standard devel packages like e2fsprogs-devel, acl-devel, attr-devel, libaio-devel are needed too. edit a local.config file in the top level dir: TEST_DEV=/dev/sdb1 # device containing TEST PARTITION TEST_DIR=/mnt/test # mount point of TEST PARTITION SCRATCH_DEV=/dev/sdb3 # device containing SCRATCH PARTITION SCRATCH_MNT=/mnt/scratch # mount point for SCRATCH PARTITION mkfs.ext4 the $TEST_DEV ./check -ext4 -g generic -Eric *another TODO is probably to make ./configure cope with lack of at least the xfsprogs-qa-devel headers. There's still some work to make this cleaner/easier but this at least gets things going. From SEMA-CR-1-4DJTZN@ptcmarketing.com Tue May 26 03:45:40 2009 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_MESSAGE autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4Q8jdbY133073 for ; Tue, 26 May 2009 03:45:40 -0500 X-ASG-Debug-ID: 1243327901-65a603440000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from crmmaxx.ptc.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2E4E512FF9B4 for ; Tue, 26 May 2009 01:51:41 -0700 (PDT) Received: from crmmaxx.ptc.com (crmmaxx.ptc.com [12.11.148.125]) by cuda.sgi.com with ESMTP id iE5kBIRgTmOYG4Dc for ; Tue, 26 May 2009 01:51:41 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation X-IronPort-AV: E=Sophos;i="4.41,250,1241409600"; d="scan'208,217";a="301128993" Received: from hqcrmint1.ptcnet.ptc.com ([132.253.202.83]) by crmmaxx.ptc.com with ESMTP; 26 May 2009 04:24:42 -0400 Date: Tue, 26 May 2009 04:20:39 -0400 To: X-Mailer: Siebel EMS 78 [EMS 1098] main/200512201810 MIME-Version: 1.0 Reply-To: noreply@ptc.com From: "PTC Communications" X-ASG-Orig-Subj: Mathcad 14.0 Node-Locked License & Add-On Collection Now Available at the PTC Web Store Subject: Mathcad 14.0 Node-Locked License & Add-On Collection Now Available at the PTC Web Store Sender: "PTC Communications" Message-ID: Content-Type: multipart/alternative; boundary=BF_1243325963932_113516304 X-Barracuda-Connect: crmmaxx.ptc.com[12.11.148.125] X-Barracuda-Start-Time: 1243327902 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --BF_1243325963932_113516304 Content-Type: text/plain; charset=UTF-8 Now Available at the PTC Web Store - Mathcad 14.0 Node-Locked License & Add-On Collection (http://www.ptc.com/read?&u=1-5LWLN-2077&c=1-4AOWXI&o=1-4CABEO&w=2354034&t=http%3A%2F%2Fwww.ptc.com%2Fgo%2Fptcstore) To visit the PTC Web Store, go to: http://www.ptc.com/read?&u=1-5LWLN-2077&c=1-4AOWXI&o=1-4CABEO&w=2354034&t=http%3A%2F%2Fwww.ptc.com%2Fgo%2Fptcstore Today's top engineers use Mathcad to perform, document and share calculation and design work. The unique Mathcad visual format and scratchpad interface integrate standard mathematical notation, text and graphs in a single worksheet - making Mathcad ideal for knowledge capture, calculation reuse, and engineering collaboration. Benefits of Mathcad - Easy to learn and use - no special programming skills required - Increases productivity, saving engineers time and reducing errors - Improves verification and validation of critical calculations - Promotes calculation best practices and reuse of calculation content - Complete documentation of calculations supports standards compliance With the Mathcad 14.0 Node-Locked License, you will also receive the Add-On Collection of electronic libraries and extension packs. The collection includes: - The Data Analysis Extension Pack that adds 45 powerful analytical functions. - The Image Processing Extension Pack with over 140 image processing capabilities plus 50 new bulletin functions. - The Signal Processing Extension Pack with more than 70 built-in signal processing functions. - The Wavelets Extension Pack that features powerful families of wavelet functions. - Individual Civil, Electrical and Mechanical Engineering Libraries. The Mathcad 14.0 Node-Locked License resides on the workstation (instead of the server) and is locked to that machine. Note: One year of maintenance is required. This will appear in the shopping cart. The maintenance includes 24X5 technical support and access to all major releases, maintenance releases and bug fixes. To visit the PTC Web Store, go to: http://www.ptc.com/read?&u=1-5LWLN-2077&c=1-4AOWXI&o=1-4CABEO&w=2354034&t=http%3A%2F%2Fwww.ptc.com%2Fgo%2Fptcstore =============================================================================== contact PTC http://www.ptc.com/company/contacts/index.htm privacy policy http://www.ptc.com/company/policies/index.htm unsubscribe http://www.ptc.com/appserver/mkt/mail/preferences.jsp?&offd=1-4CABEO&campd=1-4AOWXI&conud=1-5LWLN-2077&mailkey=2354034&email=xfs@oss.sgi.com change email preferences http://www.ptc.com/appserver/mkt/mail/preferences.jsp?&offd=1-4CABEO&campd=1-4AOWXI&conud=1-5LWLN-2077&mailkey=2354034&email=xfs@oss.sgi.com edit profile http://www.ptc.com/read?&w=2354034&t=/common/account/index.htm ------------------------------------------------------------------------------- This email was sent to: xfs@oss.sgi.com PTC, 140 Kendrick Street, Needham, MA 02494 USA If you wish to unsubscribe from all PTC Emails, please send a blank email to . --BF_1243325963932_113516304 Content-Type: text/html; charset=UTF-8 System Notice Email Mathcad 14 Node Locked NA Q309
PTC.com

Now Available at the PTC Web Store - Mathcad 14.0 Node-Locked License & Add-On Collection

To visit the PTC Web Store, go to: www.ptc.com/go/ptcstore

Today's top engineers use Mathcad to perform, document and share calculation and design work. The unique Mathcad visual format and scratchpad interface integrate standard mathematical notation, text and graphs in a single worksheet - making Mathcad ideal for knowledge capture, calculation reuse, and engineering collaboration.

Benefits of Mathcad

  • Easy to learn and use - no special programming skills required

  • Increases productivity, saving engineers time and reducing errors

  • Improves verification and validation of critical calculations

  • Promotes calculation best practices and reuse of calculation content

  • Complete documentation of calculations supports standards compliance

With the Mathcad 14.0 Node-Locked License, you will also receive the Add-On Collection of electronic libraries and extension packs. The collection includes:

  • The Data Analysis Extension Pack that adds 45 powerful analytical functions.

  • The Image Processing Extension Pack with over 140 image processing capabilities plus 50 new bulletin functions.

  • The Signal Processing Extension Pack with more than 70 built-in signal processing functions.

  • The Wavelets Extension Pack that features powerful families of wavelet functions.

  • Individual Civil, Electrical and Mechanical Engineering Libraries.

The Mathcad 14.0 Node-Locked License resides on the workstation (instead of the server) and is locked to that machine.

Note: One year of maintenance is required. This will appear in the shopping cart. The maintenance includes 24X5 technical support and access to all major releases, maintenance releases and bug fixes.

To visit the PTC Web Store, go to: www.ptc.com/go/ptcstore


contact PTC | privacy policy | unsubscribe | change email preferences | edit profile
This email was sent to: xfs@oss.sgi.com     PTC, 140 Kendrick Street, Needham, MA 02494 USA
If you wish to unsubscribe from all PTC Emails, please send a blank email to unsubscribe@ptc.com.
--BF_1243325963932_113516304-- From BATV+1c780cec83378911e656+2102+infradead.org+hch@bombadil.srs.infradead.org Tue May 26 04:09:08 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4Q997Ti133603 for ; Tue, 26 May 2009 04:09:07 -0500 X-ASG-Debug-ID: 1243329309-082a024a0000-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 E5A0B12FFAF0 for ; Tue, 26 May 2009 02:15:09 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id zsEYJ1GPoPGOWjEH for ; Tue, 26 May 2009 02:15:09 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M8seq-0004r7-50; Tue, 26 May 2009 09:09:16 +0000 Date: Tue, 26 May 2009 05:09:16 -0400 From: Christoph Hellwig To: Alex Samad Cc: Dave Chinner , xfs@oss.sgi.com, randrik@mail.ru X-ASG-Orig-Subj: Re: Kernel crash with 2.6.29 + nfs + xfs (radix-tree) Subject: Re: Kernel crash with 2.6.29 + nfs + xfs (radix-tree) Message-ID: <20090526090916.GA17194@infradead.org> References: <20090520003745.GA27491@samad.com.au> <20090520090558.GQ16929@discord.disaster> <20090520095639.GA27496@samad.com.au> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090520095639.GA27496@samad.com.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: 1243329309 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean So you're having primary a NFS workload, right? Andrew had some dmesg output in bugzilla (please send this stuff to the list instead of hiding it in bugzilla if possible, BTW) that looks quite interesting: May 24 08:48:00 (none) last message repeated 61 times May 24 08:48:47 (none) last message repeated 760 times May 24 08:50:55 (none) kernel: reconnect_path: npd != pd May 24 08:50:55 (none) last message repeated 9 times May 24 08:55:04 (none) kernel: reconnect_path: npd != pd May 24 08:56:05 (none) last message repeated 47 times May 24 08:56:49 (none) last message repeated 419 times which means we are in deep trouble with the dcache coherency. Also the only way the bug you two report could happen from my audit is we get ->destroy_inode called twice for the same inode. So defintively some deep problems here. Alex and Andrew, can you send me your .config, and a description of the workload your seing this on? Also the /etc/exports file would be interesting. From BATV+1c780cec83378911e656+2102+infradead.org+hch@bombadil.srs.infradead.org Tue May 26 04:11:14 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4Q9BEQh133653 for ; Tue, 26 May 2009 04:11:14 -0500 X-ASG-Debug-ID: 1243329087-25ae004d0000-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 08D052AC365 for ; Tue, 26 May 2009 02:11:27 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id pdhRC1fVqj8jnuVt for ; Tue, 26 May 2009 02:11:27 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M8sgx-0005R7-O8 for xfs@oss.sgi.com; Tue, 26 May 2009 09:11:27 +0000 Date: Tue, 26 May 2009 05:11:27 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: validate quota log items during log recovery Subject: Re: [PATCH] xfs: validate quota log items during log recovery Message-ID: <20090526091127.GA20864@infradead.org> References: <20090303175427.GA20582@infradead.org> <20090316075407.GB19858@infradead.org> <20090329074246.GA16402@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090329074246.GA16402@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: 1243329088 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean ping^3? On Sun, Mar 29, 2009 at 03:42:46AM -0400, Christoph Hellwig wrote: > ping^2? > > On Mon, Mar 16, 2009 at 03:54:07AM -0400, Christoph Hellwig wrote: > > ping? > > > > On Tue, Mar 03, 2009 at 12:54:27PM -0500, Christoph Hellwig wrote: > > > Arkadiusz has been seeing really strange crashes in xfs_qm_dqcheck that > > > I can only explain by a log item beeing too smal to actually fit the > > > xfs_dqblk_t we're dereferencing all over xfs_qm_dqcheck. So add > > > graceful checks for NULL or too small quota items to the log recovery > > > code. > > > > > > > > > Signed-off-by: Christoph Hellwig > > > > > > Index: xfs/fs/xfs/xfs_log_recover.c > > > =================================================================== > > > --- xfs.orig/fs/xfs/xfs_log_recover.c 2009-03-02 04:15:11.410430892 +0100 > > > +++ xfs/fs/xfs/xfs_log_recover.c 2009-03-02 04:16:29.649444226 +0100 > > > @@ -1975,16 +1975,26 @@ xlog_recover_do_reg_buffer( > > > error = 0; > > > if (buf_f->blf_flags & > > > (XFS_BLI_UDQUOT_BUF|XFS_BLI_PDQUOT_BUF|XFS_BLI_GDQUOT_BUF)) { > > > + if (item->ri_buf[i].i_addr == NULL || > > > + item->ri_buf[i].i_len < sizeof(xfs_dqblk_t)) { > > > + cmn_err(CE_ALERT, > > > + "XFS: dquot too small (%d) in xlog_recover_do_reg_buffer.", > > > + item->ri_buf[i].i_len); > > > + goto next; > > > + } > > > error = xfs_qm_dqcheck((xfs_disk_dquot_t *) > > > item->ri_buf[i].i_addr, > > > -1, 0, XFS_QMOPT_DOWARN, > > > "dquot_buf_recover"); > > > + if (error) > > > + goto next; > > > } > > > - if (!error) > > > - memcpy(xfs_buf_offset(bp, > > > - (uint)bit << XFS_BLI_SHIFT), /* dest */ > > > - item->ri_buf[i].i_addr, /* source */ > > > - nbits< > > + > > > + memcpy(xfs_buf_offset(bp, > > > + (uint)bit << XFS_BLI_SHIFT), /* dest */ > > > + item->ri_buf[i].i_addr, /* source */ > > > + nbits< > > + next: > > > i++; > > > bit += nbits; > > > } > > > @@ -2615,7 +2625,15 @@ xlog_recover_do_dquot_trans( > > > return (0); > > > > > > recddq = (xfs_disk_dquot_t *)item->ri_buf[1].i_addr; > > > - ASSERT(recddq); > > > + > > > + if (item->ri_buf[1].i_addr == NULL || > > > + item->ri_buf[1].i_len < sizeof(xfs_dqblk_t)) { > > > + cmn_err(CE_ALERT, > > > + "XFS: dquot too small (%d) in xlog_recover_do_dquot_trans.", > > > + item->ri_buf[1].i_len); > > > + return XFS_ERROR(EIO); > > > + } > > > + > > > /* > > > * This type of quotas was turned off, so ignore this record. > > > */ > > > > > > _______________________________________________ > > > 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 > ---end quoted text--- > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs ---end quoted text--- From svavar@fiton.is Tue May 26 04:51:10 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,J_CHICKENPOX_74, MIME_8BIT_HEADER autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4Q9pAn2134865 for ; Tue, 26 May 2009 04:51:10 -0500 X-ASG-Debug-ID: 1243331831-4762022f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from atlas.fiton.is (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9770B10007F6 for ; Tue, 26 May 2009 02:57:11 -0700 (PDT) Received: from atlas.fiton.is (atlas.fiton.is [62.145.135.105]) by cuda.sgi.com with ESMTP id 1g1L5MW98RGIwCdC for ; Tue, 26 May 2009 02:57:11 -0700 (PDT) Received: from localhost ([127.0.0.1]) by atlas.fiton.is (using TLSv1/SSLv3 with cipher AES128-SHA (128 bits)) for xfs@oss.sgi.com; Tue, 26 May 2009 09:52:03 +0000 Message-Id: From: =?ISO-8859-1?Q?Svavar_=D6rn_Eysteinsson?= To: xfs@oss.sgi.com Content-Type: text/plain; charset=WINDOWS-1252; format=flowed; delsp=yes Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Apple Message framework v935.3) X-ASG-Orig-Subj: Incorrect Free Space / xfs_growfs on RAID5 Volume ? Subject: Incorrect Free Space / xfs_growfs on RAID5 Volume ? Date: Tue, 26 May 2009 09:51:20 +0000 X-Mailer: Apple Mail (2.935.3) X-Barracuda-Connect: atlas.fiton.is[62.145.135.105] X-Barracuda-Start-Time: 1243331832 X-Barracuda-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=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26776 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi all. I=92m hoping that someone can help me out here, regarding growing a XFS =20= filesystem on a Adaptec RAID controller with RAID5 setup. First of all, this is my setup : Fedora Core 6. Kernel : 2.6.27 (stock Fedora Core 6 xfsprogs) Adaptec SATA Raid Controller 2820SA ( 8 port ) For 2 years now, I had running a RAID5 setup with 4x 500GB SATA disks as one logical drive. That drive would have been /dev/sdb. I made an xfs filesystem out of it and it gave me about 1.8 TB of =20 usable data space. No problems so far, nothing. I recently added the 5th disks in the RAID5 setup, and reconfigured =20 (Online Expansion) with the Adaptec Storage Manager. So the Adaptec SM tells me that I have 2.274 TB of space. Parity space is : 465.626 GB and the Stripe size is 256K. Well, the RAID controller setup is done. So I headed out to the fdisk =20= section. I deleted the /dev/sdb1 partition and made a new one right ahead. (see below) Partition number (1-4): 1 First cylinder (1-303916, default 1): 1 Last cylinder or +size or +sizeM or +sizeK (1-267349, default 267349): =20= 267349 Disk /dev/sdb: 2499.7 GB, 2499794698240 bytes 255 heads, 63 sectors/track, 303916 cylinders Units =3D cylinders of 16065 * 512 =3D 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 267349 2147480811 83 Linux I issued a =93w=94 command to write to the partition table and exited = fdisk. Mounted the /dev/sdb1 partition as /raid-data. Did grow the XFS filesystem with xfs_growfs /raid-data Now the strange part. When I issue =93df -h=94 command it shows much = smaller disk space added then it should have. (see below) Filesystem Size Used Avail Use% Mounted on /dev/sda3 269G 181G 75G 71% / /dev/sda1 244M 20M 211M 9% /boot tmpfs 1013M 0 1013M 0% /dev/shm /dev/sdb1 2.0T 1.9T 191G 91% /raid-data Using a =93non -h=94 df command shows me : Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 281636376 189165420 77933740 71% / /dev/sda1 248895 20331 215714 9% /boot tmpfs 1036736 0 1036736 0% /dev/shm /dev/sdb1 2147349736 1948095012 199254724 91% /raid-data Any ideas? This is not acceptable as I inserted 500GB as additional =20 space to the RAID5 group and don=92t have all of it. :( So I checked the fragmentation with xfs_db and it told me that the volume was having a 36.7% fragmentation. I was going to issue a xfs_fsr but the system couldn=92t find that =20 command. Great. I removed the stock xfsprogs rpm version, downloaded the newest xfsprogs source (xfsprogs-3.0.1). Build=92it, installed it and issued the xfs_fsr on the volume. Nothing changed on the free space thing, It=92s totally the same. Filesystem Size Used Avail Use% Mounted on /dev/sda3 269G 181G 75G 71% / /dev/sda1 244M 20M 211M 9% /boot tmpfs 1013M 0 1013M 0% /dev/shm /dev/sdb1 2.0T 1.9T 191G 91% /raid-data I then decided to use the xfs_growfs with the newest version(that is =20 the version I downloaded, configured and installed) on the volume. Nothing happens, as the xfs_growfs says : # xfs_growfs -d /raid-data meta-data=3D/dev/sdb1 isize=3D256 agcount=3D36, =20 agsize=3D15257482 blks =3D sectsz=3D512 attr=3D0 data =3D bsize=3D4096 blocks=3D536870202, =20= imaxpct=3D25 =3D sunit=3D0 swidth=3D0 blks naming =3Dversion 2 bsize=3D4096 ascii-ci=3D0 log =3Dinternal bsize=3D4096 blocks=3D32768, = version=3D1 =3D sectsz=3D512 sunit=3D0 blks, lazy-=20= count=3D0 realtime =3Dnone extsz=3D65536 blocks=3D0, = rtextents=3D0 data size unchanged, skipping So I really need some advice or help about this situation. Did I do anything wrong ? Is the metadata, and or log data on the xfs volume taking all the =20 remain space so I only get about 191GB free for data after the insert of 500GB disk ? Thanks all. Best regards, Svavar - Reykjavik / Iceland From BATV+1c780cec83378911e656+2102+infradead.org+hch@bombadil.srs.infradead.org Tue May 26 07:02:39 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4QC2bqX140511 for ; Tue, 26 May 2009 07:02:39 -0500 X-ASG-Debug-ID: 1243339371-316000b60000-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 330141A1C773 for ; Tue, 26 May 2009 05:02:51 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id iydPrluDMvJecltN for ; Tue, 26 May 2009 05:02:51 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M8vMo-0000MN-MW for xfs@oss.sgi.com; Tue, 26 May 2009 12:02:50 +0000 Date: Tue, 26 May 2009 08:02:50 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfstests: only run 164 for xfs Subject: [PATCH] xfstests: only run 164 for xfs Message-ID: <20090526120250.GA447@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: 1243339371 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Test 164 uses the xfs_io bmap subcommand which only works for XFS, so don't offer it for nfs and udf. Signed-off-by: Christoph Hellwig Index: xfstests-dev/164 =================================================================== --- xfstests-dev.orig/164 2009-05-26 12:00:00.000000000 +0000 +++ xfstests-dev/164 2009-05-26 12:00:54.000000000 +0000 @@ -54,8 +54,7 @@ # real QA test starts here -# Modify as appropriate. -_supported_fs xfs udf nfs +_supported_fs xfs _supported_os IRIX Linux testfile=$TEST_DIR/file.$seq From felixb@sgi.com Tue May 26 07:23:17 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4QCNHcc141886 for ; Tue, 26 May 2009 07:23:17 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id E9F808F8039 for ; Tue, 26 May 2009 05:23:27 -0700 (PDT) Received: from [IPv6???1] (sshgate.corp.sgi.com [198.149.20.12]) by estes.americas.sgi.com (Postfix) with ESMTP id A133870001C8; Tue, 26 May 2009 07:23:27 -0500 (CDT) Cc: xfs-oss , Richard Ems Message-Id: From: Felix Blyakher To: Eric Sandeen In-Reply-To: <4A184EC4.1050007@sandeen.net> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v930.3) Subject: Re: [PATCH] fix overflow in xfs_growfs_data_private Date: Tue, 26 May 2009 07:23:26 -0500 References: <4A184EC4.1050007@sandeen.net> X-Mailer: Apple Mail (2.930.3) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On May 23, 2009, at 2:30 PM, Eric Sandeen wrote: > In the case where growing a filesystem would leave the last AG > too small, the fixup code has an overflow in the calculation > of the new size with one fewer ag, because "nagcount" is a 32 > bit number. If the new filesystem has > 2^32 blocks in it > this causes a problem resulting in an EINVAL return from growfs: > > # xfs_io -f -c "truncate 19998630180864" fsfile > # mkfs.xfs -f -bsize=4096 -dagsize=76288719b,size=3905982455b fsfile > # mount -o loop fsfile mnt/ > # xfs_growfs mnt/ Is it really 'mnt/', not '/mnt'? > > meta-data=/dev/loop0 isize=256 agcount=52, > agsize=76288719 blks > = sectsz=512 attr=2 > data = bsize=4096 blocks=3905982455, > imaxpct=5 > = sunit=0 swidth=0 blks > naming =version 2 bsize=4096 ascii-ci=0 > log =internal bsize=4096 blocks=32768, version=2 > = sectsz=512 sunit=0 blks, lazy- > count=0 > realtime =none extsz=4096 blocks=0, rtextents=0 > xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument > > Reported-by: richard.ems@cape-horn-eng.com > Signed-off-by: Eric Sandeen Nice find and the neat fix, Eric. Reviewed-by: Felix Blyakher From sandeen@sandeen.net Tue May 26 08:23:15 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4QDNEYM144685 for ; Tue, 26 May 2009 08:23:14 -0500 X-ASG-Debug-ID: 1243344556-29dc00510000-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 EF7301001CF7 for ; Tue, 26 May 2009 06:29:16 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id cH0RcPzcWxE0drQt for ; Tue, 26 May 2009 06:29:16 -0700 (PDT) Received: from [10.0.0.65] (ipod.sandeen.net [10.0.0.65]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 816A4AC358C; Tue, 26 May 2009 08:23:23 -0500 (CDT) References: <20090526120250.GA447@infradead.org> Message-Id: <6A03430F-1F6A-4F35-9557-D77AA35D79A8@sandeen.net> From: Eric Sandeen To: Christoph Hellwig In-Reply-To: <20090526120250.GA447@infradead.org> Content-Type: text/plain; charset=us-ascii; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit X-Mailer: iPod Mail (5H11) Mime-Version: 1.0 (iPod Mail 5H11) X-ASG-Orig-Subj: Re: [PATCH] xfstests: only run 164 for xfs Subject: Re: [PATCH] xfstests: only run 164 for xfs Date: Tue, 26 May 2009 08:22:05 -0500 Cc: "xfs@oss.sgi.com" X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1243344557 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26790 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On May 26, 2009, at 7:02 AM, Christoph Hellwig wrote: > Test 164 uses the xfs_io bmap subcommand which only works for XFS, > so don't offer it for nfs and udf. > > > Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen > > Index: xfstests-dev/164 > =================================================================== > --- xfstests-dev.orig/164 2009-05-26 12:00:00.000000000 +0000 > +++ xfstests-dev/164 2009-05-26 12:00:54.000000000 +0000 > @@ -54,8 +54,7 @@ > > # real QA test starts here > > -# Modify as appropriate. > -_supported_fs xfs udf nfs > +_supported_fs xfs > _supported_os IRIX Linux > > testfile=$TEST_DIR/file.$seq > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Tue May 26 11:07:59 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4QG7wKe151230 for ; Tue, 26 May 2009 11:07:58 -0500 X-ASG-Debug-ID: 1243354440-3cfb035e0000-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 57B3D1004077 for ; Tue, 26 May 2009 09:14:00 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id 1d7yNbQ5NrcTHklS for ; Tue, 26 May 2009 09:14:00 -0700 (PDT) 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 n4QG7vnP008520; Tue, 26 May 2009 12:07:57 -0400 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 n4QG7vat023734; Tue, 26 May 2009 12:07:57 -0400 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 n4QG7uOg021627; Tue, 26 May 2009 12:07:56 -0400 Message-ID: <4A1C13DC.5000605@sandeen.net> Date: Tue, 26 May 2009 11:07:56 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: validate quota log items during log recovery Subject: Re: [PATCH] xfs: validate quota log items during log recovery References: <20090303175427.GA20582@infradead.org> In-Reply-To: <20090303175427.GA20582@infradead.org> Content-Type: text/plain; charset=us-ascii 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: 1243354442 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26801 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Arkadiusz has been seeing really strange crashes in xfs_qm_dqcheck that > I can only explain by a log item beeing too smal to actually fit the ^^being too small^^ > xfs_dqblk_t we're dereferencing all over xfs_qm_dqcheck. So add > graceful checks for NULL or too small quota items to the log recovery > code. > > > Signed-off-by: Christoph Hellwig > > Index: xfs/fs/xfs/xfs_log_recover.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_log_recover.c 2009-03-02 04:15:11.410430892 +0100 > +++ xfs/fs/xfs/xfs_log_recover.c 2009-03-02 04:16:29.649444226 +0100 > @@ -1975,16 +1975,26 @@ xlog_recover_do_reg_buffer( > error = 0; > if (buf_f->blf_flags & > (XFS_BLI_UDQUOT_BUF|XFS_BLI_PDQUOT_BUF|XFS_BLI_GDQUOT_BUF)) { > + if (item->ri_buf[i].i_addr == NULL || > + item->ri_buf[i].i_len < sizeof(xfs_dqblk_t)) { > + cmn_err(CE_ALERT, > + "XFS: dquot too small (%d) in xlog_recover_do_reg_buffer.", > + item->ri_buf[i].i_len); Shouldn't this differentiate between i_addr == NULL and i_len too small, though? While we're at it anyway... Maybe: + "XFS: dquot null addr (%p) or len too small (%d) in %s." + item->ri_buf[i].i_addr, item->ri_buf[i].i_len, __func__); ? (not hardcoding function name may be good too) > + goto next; > + } > error = xfs_qm_dqcheck((xfs_disk_dquot_t *) > item->ri_buf[i].i_addr, > -1, 0, XFS_QMOPT_DOWARN, > "dquot_buf_recover"); > + if (error) > + goto next; I guess we can't do much else, but what happens in the end, when we skip a buffer... > } > - if (!error) > - memcpy(xfs_buf_offset(bp, > - (uint)bit << XFS_BLI_SHIFT), /* dest */ > - item->ri_buf[i].i_addr, /* source */ > - nbits< + > + memcpy(xfs_buf_offset(bp, > + (uint)bit << XFS_BLI_SHIFT), /* dest */ > + item->ri_buf[i].i_addr, /* source */ > + nbits< + next: > i++; > bit += nbits; > } > @@ -2615,7 +2625,15 @@ xlog_recover_do_dquot_trans( > return (0); > > recddq = (xfs_disk_dquot_t *)item->ri_buf[1].i_addr; > - ASSERT(recddq); > + > + if (item->ri_buf[1].i_addr == NULL || > + item->ri_buf[1].i_len < sizeof(xfs_dqblk_t)) { > + cmn_err(CE_ALERT, > + "XFS: dquot too small (%d) in xlog_recover_do_dquot_trans.", > + item->ri_buf[1].i_len); Same deal here, should you differentiate on the error & use __func__ ? -Eric > + return XFS_ERROR(EIO); > + } > + > /* > * This type of quotas was turned off, so ignore this record. > */ > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From Richard.Ems@cape-horn-eng.com Tue May 26 11:58:07 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4QGw7hE152814 for ; Tue, 26 May 2009 11:58:07 -0500 X-ASG-Debug-ID: 1243357098-167601e50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtprelay11.ispgateway.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7603C1A1E92B for ; Tue, 26 May 2009 09:58:18 -0700 (PDT) Received: from smtprelay11.ispgateway.de (smtprelay11.ispgateway.de [80.67.29.28]) by cuda.sgi.com with ESMTP id HpTLSIwGTWiNbL4L for ; Tue, 26 May 2009 09:58:18 -0700 (PDT) Received: from [62.43.225.238] (helo=[192.168.30.191]) by smtprelay11.ispgateway.de with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.68) (envelope-from ) id 1M8zyj-00055e-Vj; Tue, 26 May 2009 18:58:18 +0200 Message-ID: <4A1C1FA9.9080303@cape-horn-eng.com> Date: Tue, 26 May 2009 18:58:17 +0200 From: Richard Ems User-Agent: Thunderbird 2.0.0.21 (X11/20090310) MIME-Version: 1.0 Followup-To: BC442FE9-64FC-4F3C-A5AA-25C890AABD3C@fiton.is To: xfs@oss.sgi.com, svavar@fiton.is X-ASG-Orig-Subj: Re: Incorrect Free Space / xfs_growfs on RAID5 Volume ? Subject: Re: Incorrect Free Space / xfs_growfs on RAID5 Volume ? X-Enigmail-Version: 0.95.7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Df-Sender: 337294 X-Barracuda-Connect: smtprelay11.ispgateway.de[80.67.29.28] X-Barracuda-Start-Time: 1243357100 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0712 1.0000 -1.5676 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=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26804 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi! You have hit the 2 TB partition limit. You will need to change your partitioning to GPT, see http://en.wikipedia.org/wiki/GUID_Partition_Table or search for "2TB partition limit" on google. Backup your data first! Regards, Richard -- Richard Ems mail: Richard.Ems@Cape-Horn-Eng.com Cape Horn Engineering S.L. C/ Dr. J.J. Dómine 1, 5º piso 46011 Valencia Tel : +34 96 3242923 / Fax 924 http://www.cape-horn-eng.com From mw@dermichi.com Tue May 26 12:11:34 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4QHBXAQ153275 for ; Tue, 26 May 2009 12:11:34 -0500 X-ASG-Debug-ID: 1243358256-71ba00b10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from firestarter.dermichi.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BDE8310040E9 for ; Tue, 26 May 2009 10:17:37 -0700 (PDT) Received: from firestarter.dermichi.com (firestarter.dermichi.com [83.64.48.195]) by cuda.sgi.com with ESMTP id gIB2f15RrhOjZTmX for ; Tue, 26 May 2009 10:17:37 -0700 (PDT) Received: from 85-127-162-65.dynamic.xdsl-line.inode.at ([85.127.162.65] helo=[192.168.17.10]) by firestarter.dermichi.com with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.69) (envelope-from ) id 1M90Be-0004bz-E4 for xfs@oss.sgi.com; Tue, 26 May 2009 19:11:38 +0200 Message-ID: <4A1C22C8.8000004@dermichi.com> Date: Tue, 26 May 2009 19:11:36 +0200 From: Michael Weissenbacher User-Agent: Thunderbird 2.0.0.21 (X11/20090409) MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: [Fwd: Re: Incorrect Free Space / xfs_growfs on RAID5 Volume ?] Subject: [Fwd: Re: Incorrect Free Space / xfs_growfs on RAID5 Volume ?] X-Enigmail-Version: 0.95.7 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: firestarter.dermichi.com[83.64.48.195] X-Barracuda-Start-Time: 1243358257 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4439 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26805 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I just realized i didn't CC this to the list :-) -------- Original-Nachricht -------- Betreff: Re: Incorrect Free Space / xfs_growfs on RAID5 Volume ? Datum: Tue, 26 May 2009 14:46:07 +0200 Von: Michael Weissenbacher An: Svavar Ă–rn Eysteinsson Referenzen: Hi Svavar! > Now the strange part. When I issue “df -h†command it shows much smaller > disk space added then it should have. You have run into the 2TB limit for a DOS Paritition Table. You must use GPT (GUID Partition Table) to overcome the limit. You can't use fdisk for that since it has no GPT support. An alternative would be parted [1]. I'm not sure how this can be done without data loss. An alternative would be to not use partitions at all and create the XFS directly on /dev/sdb. This is not really an XFS issue but an partitioning issue. [1] http://www.gnu.org/software/parted/index.shtml hth, Michael From sandeen@sandeen.net Tue May 26 12:34:55 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4QHYt09153937 for ; Tue, 26 May 2009 12:34:55 -0500 X-ASG-Debug-ID: 1243359307-168102b10000-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 C086D1A1ED97 for ; Tue, 26 May 2009 10:35:08 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id p8bO59O41Pgbse8n for ; Tue, 26 May 2009 10:35:08 -0700 (PDT) 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 n4QHYpXr002945; Tue, 26 May 2009 13:34:51 -0400 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 n4QHYouO017694; Tue, 26 May 2009 13:34:50 -0400 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 n4QHYnKO014071; Tue, 26 May 2009 13:34:49 -0400 Message-ID: <4A1C2839.3010005@sandeen.net> Date: Tue, 26 May 2009 12:34:49 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: kill xfs_qmops Subject: Re: [PATCH] xfs: kill xfs_qmops References: <20090224143736.GA16616@infradead.org> In-Reply-To: <20090224143736.GA16616@infradead.org> Content-Type: text/plain; charset=us-ascii 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: 1243359308 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26806 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Kill the quota ops function vector and replace it with direct calls or > stubs in the CONFIG_XFS_QUOTA=n case. > > Make sure we check XFS_IS_QUOTA_RUNNING in the right spots. We can remove > the number of those checks because the XFS_TRANS_DQ_DIRTY flag can't be set > otherwise. > > This brings us back closer to the way this code worked in IRIX and earlier > Linux versions, but we keep a lot of the more useful factoring of common > code. > > Eventually we should also kill xfs_qm_bhv.c, but that's left for a later > patch. > > Reduces the size of the source code by about 250 lines and the size of > XFS module by about 1.5 kilobytes with quotas enabled: > > text data bss dec hex filename > 615957 2960 3848 622765 980ad fs/xfs/xfs.o > 617231 3152 3848 624231 98667 fs/xfs/xfs.o.old > > > Fallout: > > - xfs_qm_dqattach is split into xfs_qm_dqattach_locked which expects > the inode locked and xfs_qm_dqattach which does the locking around it, > thus removing XFS_QMOPT_ILOCKED. > > Signed-off-by: Christoph Hellwig > a few nitpicks & questions below > @@ -1398,14 +1400,16 @@ xfs_create( > uint cancel_flags; > int committed; > xfs_prid_t prid; > - struct xfs_dquot *udqp = NULL; > - struct xfs_dquot *gdqp = NULL; > + struct xfs_dquot *udqp, *gdqp; > uint resblks; > uint log_res; > uint log_count; > > xfs_itrace_entry(dp); > > + udqp = NULL; > + gdqp = NULL; Just wondering about the reason for this change? in xfs_ioctl_setattr() it's a little weird because you gave udqp & gdqp the same treatment, but not olddquot (which is initialized to NULL in the declaration too) ... > Index: xfs/fs/xfs/linux-2.6/xfs_super.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2009-02-24 15:32:16.141370566 +0100 > +++ xfs/fs/xfs/linux-2.6/xfs_super.c 2009-02-24 15:32:35.866394539 +0100 > @@ -416,6 +416,14 @@ xfs_parseargs( > return EINVAL; > } > > +#ifndef CONFIG_XFS_QUOTA > + if (XFS_IS_QUOTA_RUNNING(mp)) { > + cmn_err(CE_WARN, > + "XFS: quota support not available in this kernel."); > + return EINVAL; > + } > +#endif The wording of the macro seems a little confusing in this location, how can quota be "running" if we are just starting the mount and there is no quota built in, but oh well, not really the fault of this patch I guess. Would it make any more sense to just say "if (mp->m_qflags)" instead, because we just got done setting that bit of the structure in parseargs...? ... > @@ -1214,7 +1222,10 @@ xfs_fs_statfs( > statp->f_ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); > spin_unlock(&mp->m_sb_lock); > > - XFS_QM_DQSTATVFS(XFS_I(dentry->d_inode), statp); > + if ((ip->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) || > + ((mp->m_qflags & (XFS_PQUOTA_ACCT|XFS_OQUOTA_ENFD))) == > + (XFS_PQUOTA_ACCT|XFS_OQUOTA_ENFD)) > + xfs_qm_statvfs(ip, statp); > return 0; > } Ok, so the tests for the ip & mp flags were removed from xfs_qm_statvfs() because they are always set here in the only caller... but would an ASSERT() of those be worth keeping in xfs_qm_statvfs? > @@ -1422,16 +1433,13 @@ xfs_fs_fill_super( > error = xfs_dmops_get(mp); > if (error) > goto out_free_fsname; > - error = xfs_qmops_get(mp); > - if (error) > - goto out_put_dmops; > > if (silent) > flags |= XFS_MFSI_QUIET; > > error = xfs_open_devices(mp); > if (error) > - goto out_put_qmops; > + goto out_put_dmops; > > if (xfs_icsb_init_counters(mp)) > mp->m_flags |= XFS_MOUNT_NO_PERCPU_SB; > @@ -1500,8 +1508,6 @@ xfs_fs_fill_super( > out_destroy_counters: > xfs_icsb_destroy_counters(mp); > xfs_close_devices(mp); > - out_put_qmops: > - xfs_qmops_put(mp); > out_put_dmops: > xfs_dmops_put(mp); > out_free_fsname: > Index: xfs/fs/xfs/linux-2.6/xfs_sync.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-02-24 15:32:16.149399312 +0100 > +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-02-24 15:32:35.867425537 +0100 > @@ -43,6 +43,7 @@ > #include "xfs_buf_item.h" > #include "xfs_inode_item.h" > #include "xfs_rw.h" > +#include "xfs_quota.h" > > #include > #include > @@ -311,12 +312,12 @@ xfs_quiesce_data( > > /* push non-blocking */ > xfs_sync_inodes(mp, SYNC_DELWRI|SYNC_BDFLUSH); > - XFS_QM_DQSYNC(mp, SYNC_BDFLUSH); > + xfs_qm_sync(mp, SYNC_BDFLUSH); > xfs_filestream_flush(mp); > > /* push and block */ > xfs_sync_inodes(mp, SYNC_DELWRI|SYNC_WAIT|SYNC_IOWAIT); > - XFS_QM_DQSYNC(mp, SYNC_WAIT); > + xfs_qm_sync(mp, SYNC_WAIT); > > /* write superblock and hoover up shutdown errors */> Index: xfs/fs/xfs/quota/xfs_dquot.c > =================================================================== > --- xfs.orig/fs/xfs/quota/xfs_dquot.c 2009-02-24 15:32:16.080370342 +0100 > +++ xfs/fs/xfs/quota/xfs_dquot.c 2009-02-24 15:32:35.867425537 +0100 > @@ -1194,7 +1194,9 @@ void > xfs_qm_dqrele( > xfs_dquot_t *dqp) > { > - ASSERT(dqp); > + if (!dqp) > + return; > + > xfs_dqtrace_entry(dqp, "DQRELE"); > > xfs_dqlock(dqp); dumb question, maybe - how do we get here w/ dqp == NULL when before it was an ASSERT? ... > @@ -2469,8 +2479,10 @@ xfs_qm_vop_chown( > uint bfield = XFS_IS_REALTIME_INODE(ip) ? > XFS_TRANS_DQ_RTBCOUNT : XFS_TRANS_DQ_BCOUNT; > > + if (!XFS_IS_QUOTA_RUNNING(ip->i_mount)) > + return NULL; > + > ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); > - ASSERT(XFS_IS_QUOTA_RUNNING(ip->i_mount)); > > /* old dquot */ > prevdq = *IO_olddq; seems a little weird to call this & return, should the (3) callers just check first? I guess similar questions on other tests... > @@ -2508,14 +2520,15 @@ xfs_qm_vop_chown_reserve( > xfs_dquot_t *gdqp, > uint flags) > { > - int error; > - xfs_mount_t *mp; > + xfs_mount_t *mp = ip->i_mount; > uint delblks, blkflags, prjflags = 0; > xfs_dquot_t *unresudq, *unresgdq, *delblksudq, *delblksgdq; > + int error; > + > + if (!XFS_IS_QUOTA_RUNNING(mp)) > + return 0; same question here > ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)); > - mp = ip->i_mount; > - ASSERT(XFS_IS_QUOTA_RUNNING(mp)); > > delblks = ip->i_delayed_blks; > delblksudq = delblksgdq = unresudq = unresgdq = NULL; > @@ -2582,28 +2595,23 @@ xfs_qm_vop_chown_reserve( > > int > xfs_qm_vop_rename_dqattach( > - xfs_inode_t **i_tab) > + struct xfs_inode **i_tab) > { > - xfs_inode_t *ip; > - int i; > - int error; > - > - ip = i_tab[0]; > + struct xfs_mount *mp = i_tab[0]->i_mount; > + int i; > > - if (! XFS_IS_QUOTA_ON(ip->i_mount)) > + if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) > return 0; > > - if (XFS_NOT_DQATTACHED(ip->i_mount, ip)) { > - error = xfs_qm_dqattach(ip, 0); > - if (error) > - return error; > - } > for (i = 1; (i < 4 && i_tab[i]); i++) { > + struct xfs_inode *ip = i_tab[i]; > + int error; > + > /* > * Watch out for duplicate entries in the table. > */ > - if ((ip = i_tab[i]) != i_tab[i-1]) { > - if (XFS_NOT_DQATTACHED(ip->i_mount, ip)) { > + if (i == 0 || ip != i_tab[i-1]) { ^^^^^^ how is that ever true? > + if (XFS_NOT_DQATTACHED(mp, ip)) { > error = xfs_qm_dqattach(ip, 0); > if (error) > return error; > Index: xfs/fs/xfs/xfs_mount.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_mount.c 2009-02-24 15:32:16.164399755 +0100 > +++ xfs/fs/xfs/xfs_mount.c 2009-02-24 15:32:35.871518446 +0100 ... > @@ -1163,9 +1230,19 @@ xfs_mountfs( > /* > * Complete the quota initialisation, post-log-replay component. > */ > - error = XFS_QM_MOUNT(mp, quotamount, quotaflags); > - if (error) > - goto out_rtunmount; > + if (quotamount) { > + ASSERT(mp->m_qflags == 0); > + mp->m_qflags = quotaflags; > + > + xfs_qm_mount_quotas(mp); Seems odd to me that this is a void, and quota mount failure doesn't stop the mount, but oh well, I guess it's always been that way. Aside from those nitpicks seems ok, though TBH I'm a bit confused about when we check XFS_IS_QUOTA_RUNNING vs XFS_IS_QUOTA_ON in this new world .... -Eric From sandeen@sandeen.net Tue May 26 14:04:59 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_63, J_CHICKENPOX_64,J_CHICKENPOX_65 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4QJ4xHq156541 for ; Tue, 26 May 2009 14:04:59 -0500 X-ASG-Debug-ID: 1243364711-7d1d02410000-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 4FD572ADDD2 for ; Tue, 26 May 2009 12:05:11 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id hMC6U1fTyAfkCl5S for ; Tue, 26 May 2009 12:05:11 -0700 (PDT) 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 n4QJ5AlL030459 for ; Tue, 26 May 2009 15:05:10 -0400 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 n4QJ5Agq012454 for ; Tue, 26 May 2009 15:05:10 -0400 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 n4QJ59Bb008005 for ; Tue, 26 May 2009 15:05:09 -0400 Message-ID: <4A1C3D65.4020306@sandeen.net> Date: Tue, 26 May 2009 14:05:09 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: xfs mailing list X-ASG-Orig-Subj: [PATCH] add more statics & drop some unused functions Subject: [PATCH] add more statics & drop some unused functions 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: 1243364712 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26812 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean A lot more functions could be made static, but they need forward declarations; this does some easy ones, and also found a few unused functions in the process. Signed-off-by: Eric Sandeen --- linux-2.6/xfs_super.c | 2 +- linux-2.6/xfs_sync.c | 16 ---------------- linux-2.6/xfs_sync.h | 1 - xfs_ag.h | 3 --- xfs_alloc.c | 2 +- xfs_bmap.c | 2 +- xfs_bmap.h | 11 ----------- xfs_bmap_btree.c | 20 ++++++++++---------- xfs_bmap_btree.h | 1 - xfs_btree.c | 42 +----------------------------------------- xfs_btree.h | 15 --------------- xfs_inode.c | 8 ++++---- xfs_inode.h | 5 ----- xfs_itable.c | 2 +- xfs_itable.h | 5 ----- xfs_log_priv.h | 2 -- xfs_log_recover.c | 2 +- xfs_mount.c | 2 +- xfs_mount.h | 3 --- xfs_mru_cache.c | 29 ----------------------------- xfs_mru_cache.h | 1 - xfs_rw.h | 6 ------ xfs_vnodeops.c | 2 +- 23 files changed, 22 insertions(+), 160 deletions(-) Index: linux-2.6/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_super.c +++ linux-2.6/fs/xfs/linux-2.6/xfs_super.c @@ -688,7 +688,7 @@ xfs_barrier_test( return error; } -void +STATIC void xfs_mountfs_check_barriers(xfs_mount_t *mp) { int error; Index: linux-2.6/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_sync.c +++ linux-2.6/fs/xfs/linux-2.6/xfs_sync.c @@ -640,22 +640,6 @@ __xfs_inode_clear_reclaim_tag( XFS_INO_TO_AGINO(mp, ip->i_ino), XFS_ICI_RECLAIM_TAG); } -void -xfs_inode_clear_reclaim_tag( - xfs_inode_t *ip) -{ - xfs_mount_t *mp = ip->i_mount; - xfs_perag_t *pag = xfs_get_perag(mp, ip->i_ino); - - read_lock(&pag->pag_ici_lock); - spin_lock(&ip->i_flags_lock); - __xfs_inode_clear_reclaim_tag(mp, pag, ip); - spin_unlock(&ip->i_flags_lock); - read_unlock(&pag->pag_ici_lock); - xfs_put_perag(mp, pag); -} - - STATIC void xfs_reclaim_inodes_ag( xfs_mount_t *mp, Index: linux-2.6/fs/xfs/linux-2.6/xfs_sync.h =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_sync.h +++ linux-2.6/fs/xfs/linux-2.6/xfs_sync.h @@ -51,7 +51,6 @@ int xfs_reclaim_inode(struct xfs_inode * int xfs_reclaim_inodes(struct xfs_mount *mp, int noblock, int mode); void xfs_inode_set_reclaim_tag(struct xfs_inode *ip); -void xfs_inode_clear_reclaim_tag(struct xfs_inode *ip); void __xfs_inode_clear_reclaim_tag(struct xfs_mount *mp, struct xfs_perag *pag, struct xfs_inode *ip); #endif Index: linux-2.6/fs/xfs/xfs_ag.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_ag.h +++ linux-2.6/fs/xfs/xfs_ag.h @@ -91,9 +91,6 @@ typedef struct xfs_agf { #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. */ Index: linux-2.6/fs/xfs/xfs_alloc.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_alloc.c +++ linux-2.6/fs/xfs/xfs_alloc.c @@ -2248,7 +2248,7 @@ xfs_alloc_put_freelist( /* * Read in the allocation group header (free/alloc section). */ -int /* error */ +STATIC int /* error */ xfs_read_agf( struct xfs_mount *mp, /* mount point structure */ struct xfs_trans *tp, /* transaction pointer */ Index: linux-2.6/fs/xfs/xfs_bmap.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_bmap.c +++ linux-2.6/fs/xfs/xfs_bmap.c @@ -3713,7 +3713,7 @@ done: * entry (null if none). Else, *lastxp will be set to the index * of the found entry; *gotp will contain the entry. */ -xfs_bmbt_rec_host_t * /* pointer to found extent entry */ +STATIC xfs_bmbt_rec_host_t * /* pointer to found extent entry */ xfs_bmap_search_multi_extents( xfs_ifork_t *ifp, /* inode fork pointer */ xfs_fileoff_t bno, /* block number searched for */ Index: linux-2.6/fs/xfs/xfs_bmap.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_bmap.h +++ linux-2.6/fs/xfs/xfs_bmap.h @@ -392,17 +392,6 @@ xfs_bmap_count_blocks( int whichfork, int *count); -/* - * Search the extent records for the entry containing block bno. - * If bno lies in a hole, point to the next entry. If bno lies - * past eof, *eofp will be set, and *prevp will contain the last - * entry (null if none). Else, *lastxp will be set to the index - * of the found entry; *gotp will contain the entry. - */ -xfs_bmbt_rec_host_t * -xfs_bmap_search_multi_extents(struct xfs_ifork *, xfs_fileoff_t, int *, - xfs_extnum_t *, xfs_bmbt_irec_t *, xfs_bmbt_irec_t *); - #endif /* __KERNEL__ */ #endif /* __XFS_BMAP_H__ */ Index: linux-2.6/fs/xfs/xfs_bmap_btree.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_bmap_btree.c +++ linux-2.6/fs/xfs/xfs_bmap_btree.c @@ -202,16 +202,6 @@ xfs_bmbt_get_state( ext_flag); } -/* Endian flipping versions of the bmbt extraction functions */ -void -xfs_bmbt_disk_get_all( - xfs_bmbt_rec_t *r, - xfs_bmbt_irec_t *s) -{ - __xfs_bmbt_get_all(get_unaligned_be64(&r->l0), - get_unaligned_be64(&r->l1), s); -} - /* * Extract the blockcount field from an on disk bmap extent record. */ @@ -816,6 +806,16 @@ xfs_bmbt_trace_key( *l1 = 0; } +/* Endian flipping versions of the bmbt extraction functions */ +STATIC void +xfs_bmbt_disk_get_all( + xfs_bmbt_rec_t *r, + xfs_bmbt_irec_t *s) +{ + __xfs_bmbt_get_all(get_unaligned_be64(&r->l0), + get_unaligned_be64(&r->l1), s); +} + STATIC void xfs_bmbt_trace_record( struct xfs_btree_cur *cur, Index: linux-2.6/fs/xfs/xfs_bmap_btree.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_bmap_btree.h +++ linux-2.6/fs/xfs/xfs_bmap_btree.h @@ -220,7 +220,6 @@ extern xfs_fsblock_t xfs_bmbt_get_startb extern xfs_fileoff_t xfs_bmbt_get_startoff(xfs_bmbt_rec_host_t *r); extern xfs_exntst_t xfs_bmbt_get_state(xfs_bmbt_rec_host_t *r); -extern void xfs_bmbt_disk_get_all(xfs_bmbt_rec_t *r, xfs_bmbt_irec_t *s); extern xfs_filblks_t xfs_bmbt_disk_get_blockcount(xfs_bmbt_rec_t *r); extern xfs_fileoff_t xfs_bmbt_disk_get_startoff(xfs_bmbt_rec_t *r); Index: linux-2.6/fs/xfs/xfs_btree.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_btree.c +++ linux-2.6/fs/xfs/xfs_btree.c @@ -646,46 +646,6 @@ xfs_btree_read_bufl( } /* - * Get a buffer for the block, return it read in. - * Short-form addressing. - */ -int /* error */ -xfs_btree_read_bufs( - xfs_mount_t *mp, /* file system mount point */ - xfs_trans_t *tp, /* transaction pointer */ - xfs_agnumber_t agno, /* allocation group number */ - xfs_agblock_t agbno, /* allocation group block number */ - uint lock, /* lock flags for read_buf */ - xfs_buf_t **bpp, /* buffer for agno/agbno */ - int refval) /* ref count value for buffer */ -{ - xfs_buf_t *bp; /* return value */ - xfs_daddr_t d; /* real disk block address */ - int error; - - ASSERT(agno != NULLAGNUMBER); - ASSERT(agbno != NULLAGBLOCK); - d = XFS_AGB_TO_DADDR(mp, agno, agbno); - if ((error = xfs_trans_read_buf(mp, tp, mp->m_ddev_targp, d, - mp->m_bsize, lock, &bp))) { - return error; - } - ASSERT(!bp || !XFS_BUF_GETERROR(bp)); - if (bp != NULL) { - switch (refval) { - case XFS_ALLOC_BTREE_REF: - XFS_BUF_SET_VTYPE_REF(bp, B_FS_MAP, refval); - break; - case XFS_INO_BTREE_REF: - XFS_BUF_SET_VTYPE_REF(bp, B_FS_INOMAP, refval); - break; - } - } - *bpp = bp; - return 0; -} - -/* * Read-ahead the block, don't wait for it, don't return a buffer. * Long-form addressing. */ @@ -2951,7 +2911,7 @@ error0: * inode we have to copy the single block it was pointing to into the * inode. */ -int +STATIC int xfs_btree_kill_iroot( struct xfs_btree_cur *cur) { Index: linux-2.6/fs/xfs/xfs_btree.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_btree.h +++ linux-2.6/fs/xfs/xfs_btree.h @@ -379,20 +379,6 @@ xfs_btree_read_bufl( int refval);/* ref count value for buffer */ /* - * Get a buffer for the block, return it read in. - * Short-form addressing. - */ -int /* error */ -xfs_btree_read_bufs( - struct xfs_mount *mp, /* file system mount point */ - struct xfs_trans *tp, /* transaction pointer */ - xfs_agnumber_t agno, /* allocation group number */ - xfs_agblock_t agbno, /* allocation group block number */ - uint lock, /* lock flags for read_buf */ - struct xfs_buf **bpp, /* buffer for agno/agbno */ - int refval);/* ref count value for buffer */ - -/* * Read-ahead the block, don't wait for it, don't return a buffer. * Long-form addressing. */ @@ -432,7 +418,6 @@ int xfs_btree_decrement(struct xfs_btree int xfs_btree_lookup(struct xfs_btree_cur *, xfs_lookup_t, int *); int xfs_btree_update(struct xfs_btree_cur *, union xfs_btree_rec *); int xfs_btree_new_iroot(struct xfs_btree_cur *, int *, int *); -int xfs_btree_kill_iroot(struct xfs_btree_cur *); int xfs_btree_insert(struct xfs_btree_cur *, int *); int xfs_btree_delete(struct xfs_btree_cur *, int *); int xfs_btree_get_rec(struct xfs_btree_cur *, union xfs_btree_rec **, int *); Index: linux-2.6/fs/xfs/xfs_inode.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_inode.c +++ linux-2.6/fs/xfs/xfs_inode.c @@ -642,7 +642,7 @@ xfs_iformat_btree( return 0; } -void +STATIC void xfs_dinode_from_disk( xfs_icdinode_t *to, xfs_dinode_t *from) @@ -1238,7 +1238,7 @@ xfs_isize_check( * In that case the pages will still be in memory, but the inode size * will never have been updated. */ -xfs_fsize_t +STATIC xfs_fsize_t xfs_file_last_byte( xfs_inode_t *ip) { @@ -3828,7 +3828,7 @@ xfs_iext_inline_to_direct( /* * Resize an extent indirection array to new_size bytes. */ -void +STATIC void xfs_iext_realloc_indirect( xfs_ifork_t *ifp, /* inode fork pointer */ int new_size) /* new indirection array size */ @@ -3853,7 +3853,7 @@ xfs_iext_realloc_indirect( /* * Switch from indirection array to linear (direct) extent allocations. */ -void +STATIC void xfs_iext_indirect_to_direct( xfs_ifork_t *ifp) /* inode fork pointer */ { Index: linux-2.6/fs/xfs/xfs_inode.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_inode.h +++ linux-2.6/fs/xfs/xfs_inode.h @@ -520,7 +520,6 @@ void xfs_ipin(xfs_inode_t *); void xfs_iunpin(xfs_inode_t *); int xfs_iflush(xfs_inode_t *, uint); 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); void xfs_lock_two_inodes(xfs_inode_t *, xfs_inode_t *, uint); @@ -588,8 +587,6 @@ int xfs_itobp(struct xfs_mount *, struc 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 *, struct xfs_icdinode *); void xfs_idestroy_fork(struct xfs_inode *, int); @@ -608,8 +605,6 @@ void xfs_iext_remove_inline(xfs_ifork_t void xfs_iext_remove_direct(xfs_ifork_t *, xfs_extnum_t, int); void xfs_iext_remove_indirect(xfs_ifork_t *, xfs_extnum_t, int); void xfs_iext_realloc_direct(xfs_ifork_t *, int); -void xfs_iext_realloc_indirect(xfs_ifork_t *, int); -void xfs_iext_indirect_to_direct(xfs_ifork_t *); void xfs_iext_direct_to_inline(xfs_ifork_t *, xfs_extnum_t); void xfs_iext_inline_to_direct(xfs_ifork_t *, int); void xfs_iext_destroy(xfs_ifork_t *); Index: linux-2.6/fs/xfs/xfs_itable.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_itable.c +++ linux-2.6/fs/xfs/xfs_itable.c @@ -39,7 +39,7 @@ #include "xfs_error.h" #include "xfs_btree.h" -int +STATIC int xfs_internal_inum( xfs_mount_t *mp, xfs_ino_t ino) Index: linux-2.6/fs/xfs/xfs_itable.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_itable.h +++ linux-2.6/fs/xfs/xfs_itable.h @@ -99,11 +99,6 @@ xfs_bulkstat_one( void *dibuff, int *stat); -int -xfs_internal_inum( - xfs_mount_t *mp, - xfs_ino_t ino); - typedef int (*inumbers_fmt_pf)( void __user *ubuffer, /* buffer to write to */ const xfs_inogrp_t *buffer, /* buffer to read from */ Index: linux-2.6/fs/xfs/xfs_log_priv.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_log_priv.h +++ linux-2.6/fs/xfs/xfs_log_priv.h @@ -451,8 +451,6 @@ extern int xlog_find_tail(xlog_t *log, extern int xlog_recover(xlog_t *log); extern int xlog_recover_finish(xlog_t *log); extern void xlog_pack_data(xlog_t *log, xlog_in_core_t *iclog, int); -extern void xlog_recover_process_iunlinks(xlog_t *log); - extern struct xfs_buf *xlog_get_bp(xlog_t *, int); extern void xlog_put_bp(struct xfs_buf *); Index: linux-2.6/fs/xfs/xfs_log_recover.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_log_recover.c +++ linux-2.6/fs/xfs/xfs_log_recover.c @@ -3237,7 +3237,7 @@ xlog_recover_process_one_iunlink( * freeing of the inode and its removal from the list must be * atomic. */ -void +STATIC void xlog_recover_process_iunlinks( xlog_t *log) { Index: linux-2.6/fs/xfs/xfs_mount.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_mount.c +++ linux-2.6/fs/xfs/xfs_mount.c @@ -1568,7 +1568,7 @@ xfs_mod_sb(xfs_trans_t *tp, __int64_t fi * * The m_sb_lock must be held when this routine is called. */ -int +STATIC int xfs_mod_incore_sb_unlocked( xfs_mount_t *mp, xfs_sb_field_t field, Index: linux-2.6/fs/xfs/xfs_mount.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_mount.h +++ linux-2.6/fs/xfs/xfs_mount.h @@ -415,13 +415,10 @@ typedef struct xfs_mod_sb { extern int xfs_log_sbcount(xfs_mount_t *, uint); extern int xfs_mountfs(xfs_mount_t *mp); -extern void xfs_mountfs_check_barriers(xfs_mount_t *mp); extern void xfs_unmountfs(xfs_mount_t *); extern int xfs_unmountfs_writesb(xfs_mount_t *); 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); extern int xfs_mod_incore_sb_batch(xfs_mount_t *, xfs_mod_sb_t *, uint, int); extern int xfs_mount_log_sb(xfs_mount_t *, __int64_t); Index: linux-2.6/fs/xfs/xfs_mru_cache.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_mru_cache.c +++ linux-2.6/fs/xfs/xfs_mru_cache.c @@ -564,35 +564,6 @@ xfs_mru_cache_lookup( } /* - * To look up an element using its key, but leave its location in the internal - * lists alone, call xfs_mru_cache_peek(). If the element isn't found, this - * function returns NULL. - * - * See the comments above the declaration of the xfs_mru_cache_lookup() function - * for important locking information pertaining to this call. - */ -void * -xfs_mru_cache_peek( - xfs_mru_cache_t *mru, - unsigned long key) -{ - xfs_mru_cache_elem_t *elem; - - ASSERT(mru && mru->lists); - if (!mru || !mru->lists) - return NULL; - - spin_lock(&mru->lock); - elem = radix_tree_lookup(&mru->store, key); - if (!elem) - spin_unlock(&mru->lock); - else - __release(mru_lock); /* help sparse not be stupid */ - - return elem ? elem->value : NULL; -} - -/* * To release the internal data structure spinlock after having performed an * xfs_mru_cache_lookup() or an xfs_mru_cache_peek(), call xfs_mru_cache_done() * with the data store pointer. Index: linux-2.6/fs/xfs/xfs_mru_cache.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_mru_cache.h +++ linux-2.6/fs/xfs/xfs_mru_cache.h @@ -49,7 +49,6 @@ int xfs_mru_cache_insert(struct xfs_mru_ void * xfs_mru_cache_remove(struct xfs_mru_cache *mru, unsigned long key); void xfs_mru_cache_delete(struct xfs_mru_cache *mru, unsigned long key); void *xfs_mru_cache_lookup(struct xfs_mru_cache *mru, unsigned long key); -void *xfs_mru_cache_peek(struct xfs_mru_cache *mru, unsigned long key); void xfs_mru_cache_done(struct xfs_mru_cache *mru); #endif /* __XFS_MRU_CACHE_H__ */ Index: linux-2.6/fs/xfs/xfs_rw.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_rw.h +++ linux-2.6/fs/xfs/xfs_rw.h @@ -78,10 +78,4 @@ extern int xfs_read_buf(struct xfs_mount extern void xfs_ioerror_alert(char *func, struct xfs_mount *mp, xfs_buf_t *bp, xfs_daddr_t blkno); -/* - * Prototypes for functions in xfs_vnodeops.c. - */ -extern int xfs_free_eofblocks(struct xfs_mount *mp, struct xfs_inode *ip, - int flags); - #endif /* __XFS_RW_H__ */ Index: linux-2.6/fs/xfs/xfs_vnodeops.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_vnodeops.c +++ linux-2.6/fs/xfs/xfs_vnodeops.c @@ -702,7 +702,7 @@ xfs_fsync( * when the link count isn't zero and by xfs_dm_punch_hole() when * punching a hole to EOF. */ -int +STATIC int xfs_free_eofblocks( xfs_mount_t *mp, xfs_inode_t *ip, From sandeen@sandeen.net Tue May 26 14:35:47 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4QJZlBw157431 for ; Tue, 26 May 2009 14:35:47 -0500 X-ASG-Debug-ID: 1243366560-797803850000-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 002552AE96C for ; Tue, 26 May 2009 12:36:00 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id 2yjtMyqHpgYnqzV6 for ; Tue, 26 May 2009 12:36:00 -0700 (PDT) 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 n4QJZxUq008163 for ; Tue, 26 May 2009 15:35:59 -0400 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 n4QJZxhr021133 for ; Tue, 26 May 2009 15:35:59 -0400 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 n4QJZwob016030 for ; Tue, 26 May 2009 15:35:58 -0400 Message-ID: <4A1C449E.7070004@sandeen.net> Date: Tue, 26 May 2009 14:35:58 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: xfs mailing list X-ASG-Orig-Subj: [PATCH] drop xfs_version.h Subject: [PATCH] drop xfs_version.h 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: 1243366561 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26813 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfs_version.h is about 30 lines for the benefit of one single define, which seems a bit silly. Just drop the file and hardcode "SGI XFS" the 2 places it's used. Signed-off-by: Eric Sandeen --- fs/xfs/linux-2.6/xfs_version.h | 29 ------------------- linux-2.6/fs/xfs/linux-2.6/xfs_super.c | 5 +-- 2 files changed, 2 insertions(+), 32 deletions(-) Index: linux-2.6/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_super.c +++ linux-2.6/fs/xfs/linux-2.6/xfs_super.c @@ -48,7 +48,6 @@ #include "xfs_buf_item.h" #include "xfs_utils.h" #include "xfs_vnodeops.h" -#include "xfs_version.h" #include "xfs_log_priv.h" #include "xfs_trans_priv.h" #include "xfs_filestream.h" @@ -1788,7 +1787,7 @@ init_xfs_fs(void) { int error; - printk(KERN_INFO XFS_VERSION_STRING " with " + printk(KERN_INFO "SGI XFS with " XFS_BUILD_OPTIONS " enabled\n"); ktrace_init(64); @@ -1867,5 +1866,5 @@ module_init(init_xfs_fs); module_exit(exit_xfs_fs); MODULE_AUTHOR("Silicon Graphics, Inc."); -MODULE_DESCRIPTION(XFS_VERSION_STRING " with " XFS_BUILD_OPTIONS " enabled"); +MODULE_DESCRIPTION("SGI XFS with " XFS_BUILD_OPTIONS " enabled"); MODULE_LICENSE("GPL"); Index: linux-2.6/fs/xfs/linux-2.6/xfs_version.h =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_version.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2001-2002,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 - */ -#ifndef __XFS_VERSION_H__ -#define __XFS_VERSION_H__ - -/* - * Dummy file that can contain a timestamp to put into the - * XFS init string, to help users keep track of what they're - * running - */ - -#define XFS_VERSION_STRING "SGI XFS" - -#endif /* __XFS_VERSION_H__ */ From BATV+1c780cec83378911e656+2102+infradead.org+hch@bombadil.srs.infradead.org Tue May 26 14:51:28 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4QJpRVT157972 for ; Tue, 26 May 2009 14:51:28 -0500 X-ASG-Debug-ID: 1243367500-391901310000-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 07B762AEA8E for ; Tue, 26 May 2009 12:51:40 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id fZv0cu71C0lNrs8U for ; Tue, 26 May 2009 12:51:40 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M92gW-00058s-Es; Tue, 26 May 2009 19:51:40 +0000 Date: Tue, 26 May 2009 15:51:40 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs mailing list X-ASG-Orig-Subj: Re: [PATCH] drop xfs_version.h Subject: Re: [PATCH] drop xfs_version.h Message-ID: <20090526195140.GA4368@infradead.org> References: <4A1C449E.7070004@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A1C449E.7070004@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: 1243367501 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, May 26, 2009 at 02:35:58PM -0500, Eric Sandeen wrote: > xfs_version.h is about 30 lines for the benefit of > one single define, which seems a bit silly. > > Just drop the file and hardcode "SGI XFS" the 2 > places it's used. > > Signed-off-by: Eric Sandeen > - printk(KERN_INFO XFS_VERSION_STRING " with " > + printk(KERN_INFO "SGI XFS with " > XFS_BUILD_OPTIONS " enabled\n"); To prove that I can nitpick about even the most trivial patch: shouldn't this be merged into a single line now? :) Otherwise looks good, Reviewed-by: Christoph Hellwig From sandeen@sandeen.net Tue May 26 15:00:10 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4QK0Aqr158291 for ; Tue, 26 May 2009 15:00:10 -0500 X-ASG-Debug-ID: 1243368022-7012039f0000-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 921F91A1F90F for ; Tue, 26 May 2009 13:00:22 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id orMPQribCikoy2AR for ; Tue, 26 May 2009 13:00:22 -0700 (PDT) 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 n4QK0603015024; Tue, 26 May 2009 16:00:06 -0400 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 n4QK05V4027821; Tue, 26 May 2009 16:00:06 -0400 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 n4QK04sH020817; Tue, 26 May 2009 16:00:05 -0400 Message-ID: <4A1C4A44.1030309@sandeen.net> Date: Tue, 26 May 2009 15:00:04 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs mailing list X-ASG-Orig-Subj: [PATCH V2] drop xfs_version.h Subject: [PATCH V2] drop xfs_version.h References: <4A1C449E.7070004@sandeen.net> <20090526195140.GA4368@infradead.org> In-Reply-To: <20090526195140.GA4368@infradead.org> Content-Type: text/plain; charset=us-ascii 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: 1243368023 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26815 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfs_version.h is about 30 lines for the benefit of one single define, which seems a bit silly. Just drop the file and hardcode "SGI XFS" the 2 places it's used. v2: merge together 2 now-shorter lines. Signed-off-by: Eric Sandeen --- fs/xfs/linux-2.6/xfs_version.h | 29 ----------------- linux-2.6/fs/xfs/linux-2.6/xfs_super.c | 6 +--- 2 files changed, 2 insertions(+), 33 deletions(-) Index: linux-2.6/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_super.c +++ linux-2.6/fs/xfs/linux-2.6/xfs_super.c @@ -48,7 +48,6 @@ #include "xfs_buf_item.h" #include "xfs_utils.h" #include "xfs_vnodeops.h" -#include "xfs_version.h" #include "xfs_log_priv.h" #include "xfs_trans_priv.h" #include "xfs_filestream.h" @@ -1788,8 +1787,7 @@ init_xfs_fs(void) { int error; - printk(KERN_INFO XFS_VERSION_STRING " with " - XFS_BUILD_OPTIONS " enabled\n"); + printk(KERN_INFO "SGI XFS with " XFS_BUILD_OPTIONS " enabled\n"); ktrace_init(64); xfs_ioend_init(); @@ -1867,5 +1865,5 @@ module_init(init_xfs_fs); module_exit(exit_xfs_fs); MODULE_AUTHOR("Silicon Graphics, Inc."); -MODULE_DESCRIPTION(XFS_VERSION_STRING " with " XFS_BUILD_OPTIONS " enabled"); +MODULE_DESCRIPTION("SGI XFS with " XFS_BUILD_OPTIONS " enabled"); MODULE_LICENSE("GPL"); Index: linux-2.6/fs/xfs/linux-2.6/xfs_version.h =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_version.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2001-2002,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 - */ -#ifndef __XFS_VERSION_H__ -#define __XFS_VERSION_H__ - -/* - * Dummy file that can contain a timestamp to put into the - * XFS init string, to help users keep track of what they're - * running - */ - -#define XFS_VERSION_STRING "SGI XFS" - -#endif /* __XFS_VERSION_H__ */ From BATV+1c780cec83378911e656+2102+infradead.org+hch@bombadil.srs.infradead.org Tue May 26 15:02:50 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4QK2nNC158373 for ; Tue, 26 May 2009 15:02:50 -0500 X-ASG-Debug-ID: 1243368183-307a02670000-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 E3F992AE714 for ; Tue, 26 May 2009 13:03:03 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id qXJFozFbn431iKrQ for ; Tue, 26 May 2009 13:03:03 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M92rX-0005j2-Jx; Tue, 26 May 2009 20:03:03 +0000 Date: Tue, 26 May 2009 16:03:03 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs mailing list X-ASG-Orig-Subj: Re: [PATCH V2] drop xfs_version.h Subject: Re: [PATCH V2] drop xfs_version.h Message-ID: <20090526200303.GA18261@infradead.org> References: <4A1C449E.7070004@sandeen.net> <20090526195140.GA4368@infradead.org> <4A1C4A44.1030309@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A1C4A44.1030309@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: 1243368183 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, May 26, 2009 at 03:00:04PM -0500, Eric Sandeen wrote: > xfs_version.h is about 30 lines for the benefit of > one single define, which seems a bit silly. > > Just drop the file and hardcode "SGI XFS" the 2 > places it's used. > > v2: merge together 2 now-shorter lines. > > Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig From sandeen@sandeen.net Tue May 26 15:14:52 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4QKEqqX158965 for ; Tue, 26 May 2009 15:14:52 -0500 X-ASG-Debug-ID: 1243369256-22ee00fc0000-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 0D7C41004E80 for ; Tue, 26 May 2009 13:20:56 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id DnJRA2vCk76HL59g for ; Tue, 26 May 2009 13:20:56 -0700 (PDT) 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 n4QKEvvE018293; Tue, 26 May 2009 16:14:57 -0400 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 n4QKEuEH031281; Tue, 26 May 2009 16:14:56 -0400 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 n4QKEtpN026423; Tue, 26 May 2009 16:14:56 -0400 Message-ID: <4A1C4DBF.200@sandeen.net> Date: Tue, 26 May 2009 15:14:55 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/7] xfs: split inode data writeback from xfs_sync_inodes_ag Subject: Re: [PATCH 1/7] xfs: split inode data writeback from xfs_sync_inodes_ag References: <20090514171233.942489000@bombadil.infradead.org> <20090514171558.014747000@bombadil.infradead.org> In-Reply-To: <20090514171558.014747000@bombadil.infradead.org> Content-Type: text/plain; charset=us-ascii 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: 1243369257 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26816 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > From: Dave Chinner > > In many cases we only want to sync inode data. Start spliting the inode sync > into data sync and inode sync by factoring out the inode data flush. > > [hch: minor cleanups] > > Signed-off-by: Dave Chinner > Signed-off-by: Christoph Hellwig Looks nice.... xfs_sync_inode_data(), now with 100% more readability! the old lock_flags uage was icky. Reviewed-by: Eric Sandeen > Index: xfs/fs/xfs/linux-2.6/xfs_sync.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-05-12 23:28:45.023811837 +0200 > +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-05-13 10:00:27.169659271 +0200 > @@ -48,6 +48,34 @@ > #include > #include > > + > +STATIC int > +xfs_sync_inode_data( > + struct xfs_inode *ip, > + int flags) > +{ > + struct inode *inode = VFS_I(ip); > + struct address_space *mapping = inode->i_mapping; > + int error = 0; > + > + if (mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)) { > + if (!xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED)) { > + if (flags & SYNC_TRYLOCK) > + goto out_wait; > + xfs_ilock(ip, XFS_IOLOCK_SHARED); > + } > + > + error = xfs_flush_pages(ip, 0, -1, (flags & SYNC_WAIT) ? > + 0 : XFS_B_ASYNC, FI_NONE); > + xfs_iunlock(ip, XFS_IOLOCK_SHARED); > + } > + > + out_wait: > + if (flags & SYNC_IOWAIT) > + xfs_ioend_wait(ip); > + return error; > +} > + > /* > * Sync all the inodes in the given AG according to the > * direction given by the flags. > @@ -123,27 +151,10 @@ xfs_sync_inodes_ag( > * If we have to flush data or wait for I/O completion > * we need to hold the iolock. > */ > - if (flags & SYNC_DELWRI) { > - if (VN_DIRTY(inode)) { > - if (flags & SYNC_TRYLOCK) { > - if (xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED)) > - lock_flags |= XFS_IOLOCK_SHARED; > - } else { > - xfs_ilock(ip, XFS_IOLOCK_SHARED); > - lock_flags |= XFS_IOLOCK_SHARED; > - } > - if (lock_flags & XFS_IOLOCK_SHARED) { > - error = xfs_flush_pages(ip, 0, -1, > - (flags & SYNC_WAIT) ? 0 > - : XFS_B_ASYNC, > - FI_NONE); > - } > - } > - if (VN_CACHED(inode) && (flags & SYNC_IOWAIT)) > - xfs_ioend_wait(ip); > - } > - xfs_ilock(ip, XFS_ILOCK_SHARED); > + if (flags & SYNC_DELWRI) > + error = xfs_sync_inode_data(ip, flags); > > + xfs_ilock(ip, XFS_ILOCK_SHARED); > if ((flags & SYNC_ATTR) && !xfs_inode_clean(ip)) { > if (flags & SYNC_WAIT) { > xfs_iflock(ip); > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Tue May 26 15:45:45 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4QKjicB160283 for ; Tue, 26 May 2009 15:45:45 -0500 X-ASG-Debug-ID: 1243370757-2280032b0000-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 8217B1A205AA for ; Tue, 26 May 2009 13:45:57 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id phcpjEpYC5goAE2D for ; Tue, 26 May 2009 13:45:57 -0700 (PDT) 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 n4QKjnVw026284; Tue, 26 May 2009 16:45:49 -0400 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 n4QKjmmQ007439; Tue, 26 May 2009 16:45:48 -0400 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 n4QKjlfm002905; Tue, 26 May 2009 16:45:47 -0400 Message-ID: <4A1C54FB.2080705@sandeen.net> Date: Tue, 26 May 2009 15:45:47 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/7] xfs: split inode flushing from xfs_sync_inodes_ag Subject: Re: [PATCH 2/7] xfs: split inode flushing from xfs_sync_inodes_ag References: <20090514171233.942489000@bombadil.infradead.org> <20090514171558.298098000@bombadil.infradead.org> In-Reply-To: <20090514171558.298098000@bombadil.infradead.org> Content-Type: text/plain; charset=us-ascii 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: 1243370758 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26817 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > In many cases we only want to sync inode metadata. Split out the inode > flushing into a separate helper to prepare factoring the inode sync code. > > Based on a patch from Dave Chinner, but redone to keep the current behaviour > exactly and leave changes to the flushing logic to another patch. > > > Signed-off-by: Christoph Hellwig > > Index: xfs/fs/xfs/linux-2.6/xfs_sync.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-05-14 16:17:41.359813297 +0200 > +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-05-14 19:05:25.545684101 +0200 > @@ -76,6 +76,34 @@ xfs_sync_inode_data( > return error; > } > > +STATIC int > +xfs_sync_inode_attr( > + struct xfs_inode *ip, > + int flags) > +{ > + int error = 0; > + > + xfs_ilock(ip, XFS_ILOCK_SHARED); > + if (xfs_inode_clean(ip)) > + goto out_unlock; > + if (!xfs_iflock_nowait(ip)) { > + if (!(flags & SYNC_WAIT)) > + goto out_unlock; > + xfs_iflock(ip); > + } > + > + if (xfs_inode_clean(ip)) { > + xfs_ifunlock(ip); > + goto out_unlock; > + } > + > + error = xfs_iflush(ip, XFS_IFLUSH_SYNC); > + > + out_unlock: > + xfs_iunlock(ip, XFS_ILOCK_SHARED); > + return error; > +} > + > /* > * Sync all the inodes in the given AG according to the > * direction given by the flags. ... > @@ -154,22 +181,10 @@ xfs_sync_inodes_ag( > if (flags & SYNC_DELWRI) > error = xfs_sync_inode_data(ip, flags); > > - xfs_ilock(ip, XFS_ILOCK_SHARED); > - if ((flags & SYNC_ATTR) && !xfs_inode_clean(ip)) { > - if (flags & SYNC_WAIT) { > - xfs_iflock(ip); > - if (!xfs_inode_clean(ip)) > - error = xfs_iflush(ip, XFS_IFLUSH_SYNC); > - else > - xfs_ifunlock(ip); > - } else if (xfs_iflock_nowait(ip)) { > - if (!xfs_inode_clean(ip)) > - error = xfs_iflush(ip, XFS_IFLUSH_DELWRI); What happened to the XFS_IFLUSH_DELWRI case? You mentioned "keep the current behavior exactly" but this seems like a change, no? -Eric From felixb@oss.sgi.com Tue May 26 17:47:23 2009 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, J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4QMlNkQ165357 for ; Tue, 26 May 2009 17:47:23 -0500 Received: (from felixb@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id n4QMlJM8165328; Tue, 26 May 2009 17:47:19 -0500 Date: Tue, 26 May 2009 17:47:19 -0500 Message-Id: <200905262247.n4QMlJM8165328@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.29-6707-g0963248 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: ec91d1335f478c5cd089d82ffbf936075c5f24c8 X-Git-Newrev: 096324873f9c7172a17aff9db1356f4f01b77afe 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 0963248 xfs: fix overflow in xfs_growfs_data_private from ec91d1335f478c5cd089d82ffbf936075c5f24c8 (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 096324873f9c7172a17aff9db1356f4f01b77afe Author: Eric Sandeen Date: Sat May 23 14:30:12 2009 -0500 xfs: fix overflow in xfs_growfs_data_private In the case where growing a filesystem would leave the last AG too small, the fixup code has an overflow in the calculation of the new size with one fewer ag, because "nagcount" is a 32 bit number. If the new filesystem has > 2^32 blocks in it this causes a problem resulting in an EINVAL return from growfs: # xfs_io -f -c "truncate 19998630180864" fsfile # mkfs.xfs -f -bsize=4096 -dagsize=76288719b,size=3905982455b fsfile # mount -o loop fsfile /mnt # xfs_growfs /mnt meta-data=/dev/loop0 isize=256 agcount=52, agsize=76288719 blks = sectsz=512 attr=2 data = bsize=4096 blocks=3905982455, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=32768, version=2 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument Reported-by: richard.ems@cape-horn-eng.com Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Reviewed-by: Felix Blyakher Signed-off-by: Felix Blyakher ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_fsops.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) hooks/post-receive -- XFS development tree From alex@samad.com.au Tue May 26 21:57:31 2009 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_40,J_CHICKENPOX_24, J_CHICKENPOX_45,UPPERCASE_75_100 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4R2vU0q172336 for ; Tue, 26 May 2009 21:57:31 -0500 X-ASG-Debug-ID: 1243393045-2e00004c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail7.tpgi.com.au (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B07D12B0320 for ; Tue, 26 May 2009 19:57:25 -0700 (PDT) Received: from mail7.tpgi.com.au (mail7.tpgi.com.au [203.12.160.103]) by cuda.sgi.com with ESMTP id b8TpUqlqWPtC0lKx for ; Tue, 26 May 2009 19:57:25 -0700 (PDT) X-TPG-Junk-Status: Message not scanned X-TPG-Antivirus: Passed X-TPG-Abuse: host=adsl.samad.com.au; ip=60.241.248.86; date=Wed, 27 May 2009 12:55:00 +1000 Received: from sydrt01.samad.com.au (adsl.samad.com.au [60.241.248.86]) by mail7.tpgi.com.au (envelope-from alex@samad.com.au) (8.14.3/8.14.3) with ESMTP id n4R2svBn015059 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO); Wed, 27 May 2009 12:55:00 +1000 Received: from alex by smtp.samad.com.au with local (Exim 4.69 #1 (Debian)) id 1M99I9-0000Iy-4P; Wed, 27 May 2009 12:54:57 +1000 Date: Wed, 27 May 2009 12:54:57 +1000 From: Alex Samad To: Christoph Hellwig Cc: Dave Chinner , xfs@oss.sgi.com, randrik@mail.ru X-ASG-Orig-Subj: Re: Kernel crash with 2.6.29 + nfs + xfs (radix-tree) Subject: Re: Kernel crash with 2.6.29 + nfs + xfs (radix-tree) Message-ID: <20090527025457.GA32668@samad.com.au> References: <20090520003745.GA27491@samad.com.au> <20090520090558.GQ16929@discord.disaster> <20090520095639.GA27496@samad.com.au> <20090526090916.GA17194@infradead.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="jho1yZJdad60DJr+" Content-Disposition: inline In-Reply-To: <20090526090916.GA17194@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: mail7.tpgi.com.au[203.12.160.103] X-Barracuda-Start-Time: 1243393047 X-Barracuda-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.26843 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 UPPERCASE_75_100 message body is 75-100% uppercase 0.50 BSF_RULE7568M Custom Rule 7568M 1.93 UPPERCASE_75_100_2 message body is 75-100% uppercase X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --jho1yZJdad60DJr+ Content-Type: multipart/mixed; boundary="OgqxwSJOaUobr8KG" Content-Disposition: inline --OgqxwSJOaUobr8KG Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi I had a partition about 400G of xfs (lvm on a raid6 device) with source tree of openwrt trunk on the partition (~200-300M of data and lots of files - current tree ~ 40000 ) I have a VM (Virtualbox 2.2 - debian debi386 2.6.29-2) on the same machine = that had mounted the partition via nfs. when I attempted to do a rm -fr trunk is when i saw problems - or on builds (specially with make clean first) =66rom exports /exports/shared -no_root_squash,insecure,wdelay,no_subtree_check,async,mp=3D/exports/shared 192.168.8.0/22(rw) mmac(all_squash,anonuid=3D1025,anongid=3D1029) =66rom the VM fstab nfs.hme1.samad.com.au:/exports/shared /exports/shared nfs rw,exec,auto,async,_netdev,proto=3Dudp 0 0 /home/alex/wrk/openwrt/tmp /exports/shared/src/openwrt/kamikaze/src/svn/trunk/tmp none rw,bind,exec,auto,async,_netdev 0 0 /home/alex/wrk/openwrt/staging_dir /exports/shared/src/openwrt/kamikaze/src/svn/trunk/staging_dir none rw,bind,exec,auto,async,_netdev 0 0 /home/alex/wrk/openwrt/build_dir /exports/shared/src/openwrt/kamikaze/src/svn/trunk/build_dir none rw,bind,exec,auto,async,_netdev 0 0 note I bind local filesystem to the work directories I have attached the .config I have since change the partition to ext3 and I have not seen any problems. I haven't gotten any messages left in my syslog, but I still have the one on the debian bug report=20 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D526406 Alex On Tue, May 26, 2009 at 05:09:16AM -0400, Christoph Hellwig wrote: > So you're having primary a NFS workload, right? Andrew had some > dmesg output in bugzilla (please send this stuff to the list instead > of hiding it in bugzilla if possible, BTW) that looks quite interesting: >=20 > May 24 08:48:00 (none) last message repeated 61 times = =20 > May 24 08:48:47 (none) last message repeated 760 times = =20 > May 24 08:50:55 (none) kernel: reconnect_path: npd !=3D pd = =20 > May 24 08:50:55 (none) last message repeated 9 times = =20 > May 24 08:55:04 (none) kernel: reconnect_path: npd !=3D pd = =20 > May 24 08:56:05 (none) last message repeated 47 times = =20 > May 24 08:56:49 (none) last message repeated 419 times >=20 > which means we are in deep trouble with the dcache coherency. Also > the only way the bug you two report could happen from my audit is > we get ->destroy_inode called twice for the same inode. >=20 > So defintively some deep problems here. Alex and Andrew, can you send > me your .config, and a description of the workload your seing this on? > Also the /etc/exports file would be interesting. >=20 --OgqxwSJOaUobr8KG Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="config-2.6.29-2-amd64" # # Automatically generated make config: don't edit # Linux kernel version: 2.6.29 # Sun May 17 15:45:22 2009 # CONFIG_64BIT=y # CONFIG_X86_32 is not set CONFIG_X86_64=y CONFIG_X86=y CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_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_BUG_RELATIVE_POINTERS=y CONFIG_GENERIC_HWEIGHT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_RWSEM_GENERIC_SPINLOCK=y # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_TIME_VSYSCALL=y 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=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ZONE_DMA32=y CONFIG_ARCH_POPULATES_NODE_MAP=y CONFIG_AUDIT_ARCH=y 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_64_SMP=y CONFIG_X86_HT=y CONFIG_X86_BIOS_REBOOT=y CONFIG_X86_TRAMPOLINE=y # CONFIG_KTIME_SCALAR is not set 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 # # RCU Subsystem # # CONFIG_CLASSIC_RCU is not set CONFIG_TREE_RCU=y # CONFIG_PREEMPT_RCU is not set # CONFIG_RCU_TRACE is not set CONFIG_RCU_FANOUT=64 # CONFIG_RCU_FANOUT_EXACT is not set # CONFIG_TREE_RCU_TRACE is not set # CONFIG_PREEMPT_RCU_TRACE is not set # CONFIG_IKCONFIG is not set CONFIG_LOG_BUF_SHIFT=17 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y CONFIG_GROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y # CONFIG_RT_GROUP_SCHED is not set # CONFIG_USER_SCHED is not set CONFIG_CGROUP_SCHED=y CONFIG_CGROUPS=y # CONFIG_CGROUP_DEBUG is not set CONFIG_CGROUP_NS=y CONFIG_CGROUP_FREEZER=y CONFIG_CGROUP_DEVICE=y CONFIG_CPUSETS=y CONFIG_PROC_PID_CPUSET=y CONFIG_CGROUP_CPUACCT=y # CONFIG_RESOURCE_COUNTERS is not set # CONFIG_SYSFS_DEPRECATED_V2 is not set CONFIG_RELAY=y CONFIG_NAMESPACES=y CONFIG_UTS_NS=y CONFIG_IPC_NS=y CONFIG_USER_NS=y CONFIG_PID_NS=y CONFIG_NET_NS=y CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_SYSCTL=y CONFIG_ANON_INODES=y # CONFIG_EMBEDDED is not set CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_ALL is not set # CONFIG_KALLSYMS_EXTRA_PASS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y CONFIG_ELF_CORE=y CONFIG_PCSPKR_PLATFORM=y CONFIG_BASE_FULL=y CONFIG_FUTEX=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_COMPAT_BRK is not set CONFIG_SLAB=y # CONFIG_SLUB is not set # CONFIG_SLOB is not set CONFIG_PROFILING=y CONFIG_TRACEPOINTS=y CONFIG_MARKERS=y CONFIG_OPROFILE=m CONFIG_OPROFILE_IBS=y CONFIG_HAVE_OPROFILE=y # CONFIG_KPROBES is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y CONFIG_HAVE_ARCH_TRACEHOOK=y # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set CONFIG_SLABINFO=y CONFIG_RT_MUTEXES=y 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 is not set CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y CONFIG_BLK_DEV_IO_TRACE=y CONFIG_BLK_DEV_BSG=y CONFIG_BLK_DEV_INTEGRITY=y CONFIG_BLOCK_COMPAT=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_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_SPARSE_IRQ=y CONFIG_NUMA_MIGRATE_IRQ_DESC=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_SCHED_OMIT_FRAME_POINTER=y CONFIG_PARAVIRT_GUEST=y CONFIG_XEN=y CONFIG_XEN_MAX_DOMAIN_MEMORY=32 CONFIG_XEN_SAVE_RESTORE=y # CONFIG_XEN_DEBUG_FS is not set CONFIG_KVM_CLOCK=y CONFIG_KVM_GUEST=y CONFIG_PARAVIRT=y CONFIG_PARAVIRT_CLOCK=y # CONFIG_PARAVIRT_DEBUG is not set # CONFIG_MEMTEST is not set # 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 is not set # 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=y CONFIG_X86_CPU=y CONFIG_X86_L1_CACHE_BYTES=128 CONFIG_X86_INTERNODE_CACHE_BYTES=128 CONFIG_X86_CMPXCHG=y CONFIG_X86_L1_CACHE_SHIFT=7 CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_TSC=y CONFIG_X86_CMPXCHG64=y CONFIG_X86_CMOV=y CONFIG_X86_MINIMUM_CPU_FAMILY=64 CONFIG_X86_DEBUGCTLMSR=y CONFIG_CPU_SUP_INTEL=y CONFIG_CPU_SUP_AMD=y CONFIG_CPU_SUP_CENTAUR_64=y # CONFIG_X86_DS is not set CONFIG_HPET_TIMER=y CONFIG_HPET_EMULATE_RTC=y CONFIG_DMI=y CONFIG_GART_IOMMU=y CONFIG_CALGARY_IOMMU=y CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y CONFIG_AMD_IOMMU=y # CONFIG_AMD_IOMMU_STATS is not set CONFIG_SWIOTLB=y CONFIG_IOMMU_HELPER=y CONFIG_IOMMU_API=y # CONFIG_MAXSMP is not set CONFIG_NR_CPUS=512 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_INTEL=y CONFIG_X86_MCE_AMD=y CONFIG_I8K=m CONFIG_MICROCODE=m CONFIG_MICROCODE_INTEL=y CONFIG_MICROCODE_AMD=y CONFIG_MICROCODE_OLD_INTERFACE=y CONFIG_X86_MSR=m CONFIG_X86_CPUID=m CONFIG_ARCH_PHYS_ADDR_T_64BIT=y CONFIG_DIRECT_GBPAGES=y CONFIG_NUMA=y CONFIG_K8_NUMA=y CONFIG_X86_64_ACPI_NUMA=y CONFIG_NODES_SPAN_OTHER_NODES=y # CONFIG_NUMA_EMU is not set CONFIG_NODES_SHIFT=6 CONFIG_ARCH_SPARSEMEM_DEFAULT=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_SELECT_MEMORY_MODEL=y # CONFIG_FLATMEM_MANUAL is not set # CONFIG_DISCONTIGMEM_MANUAL is not set CONFIG_SPARSEMEM_MANUAL=y CONFIG_SPARSEMEM=y CONFIG_NEED_MULTIPLE_NODES=y CONFIG_HAVE_MEMORY_PRESENT=y CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y CONFIG_SPARSEMEM_VMEMMAP=y # # Memory hotplug is currently incompatible with Software Suspend # CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_MIGRATION=y CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y CONFIG_UNEVICTABLE_LRU=y CONFIG_MMU_NOTIFIER=y # CONFIG_X86_CHECK_BIOS_CORRUPTION is not set CONFIG_X86_RESERVE_LOW_64K=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 is not set 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 is not set CONFIG_PHYSICAL_START=0x200000 # CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x200000 CONFIG_HOTPLUG_CPU=y # CONFIG_COMPAT_VDSO is not set # CONFIG_CMDLINE_BOOL is not set CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y # # Power management and ACPI options # CONFIG_ARCH_HIBERNATION_HEADER=y CONFIG_PM=y # CONFIG_PM_DEBUG is not set CONFIG_PM_SLEEP_SMP=y CONFIG_PM_SLEEP=y CONFIG_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 is not set CONFIG_ACPI_SYSFS_POWER=y # CONFIG_ACPI_PROC_EVENT is not set CONFIG_ACPI_AC=m CONFIG_ACPI_BATTERY=m CONFIG_ACPI_BUTTON=m CONFIG_ACPI_VIDEO=m CONFIG_ACPI_FAN=m CONFIG_ACPI_DOCK=y CONFIG_ACPI_PROCESSOR=m CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=m CONFIG_ACPI_NUMA=y # CONFIG_ACPI_CUSTOM_DSDT is not set CONFIG_ACPI_BLACKLIST_YEAR=0 # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_PCI_SLOT=m CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=m CONFIG_ACPI_SBS=m # # CPU Frequency scaling # CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_TABLE=y # CONFIG_CPU_FREQ_DEBUG is not set CONFIG_CPU_FREQ_STAT=m # CONFIG_CPU_FREQ_STAT_DETAILS is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=m CONFIG_CPU_FREQ_GOV_USERSPACE=m CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m # # CPUFreq processor drivers # CONFIG_X86_ACPI_CPUFREQ=m CONFIG_X86_POWERNOW_K8=m CONFIG_X86_POWERNOW_K8_ACPI=y CONFIG_X86_SPEEDSTEP_CENTRINO=m # CONFIG_X86_P4_CLOCKMOD is not set # # shared options # # CONFIG_X86_SPEEDSTEP_LIB is not set CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE_GOV_LADDER=y CONFIG_CPU_IDLE_GOV_MENU=y # # Memory power savings # CONFIG_I7300_IDLE_IOAT_CHANNEL=y CONFIG_I7300_IDLE=m # # Bus options (PCI etc.) # CONFIG_PCI=y CONFIG_PCI_DIRECT=y CONFIG_PCI_MMCONFIG=y CONFIG_PCI_DOMAINS=y # CONFIG_DMAR is not set CONFIG_INTR_REMAP=y CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m CONFIG_PCIEAER=y # CONFIG_PCIEASPM is not set CONFIG_ARCH_SUPPORTS_MSI=y CONFIG_PCI_MSI=y CONFIG_PCI_LEGACY=y # CONFIG_PCI_DEBUG is not set CONFIG_PCI_STUB=m CONFIG_HT_IRQ=y CONFIG_ISA_DMA_API=y CONFIG_K8_NB=y CONFIG_PCCARD=m # CONFIG_PCMCIA_DEBUG is not set CONFIG_PCMCIA=m CONFIG_PCMCIA_LOAD_CIS=y # CONFIG_PCMCIA_IOCTL is not set CONFIG_CARDBUS=y # # PC-card bridges # CONFIG_YENTA=m CONFIG_YENTA_O2=y CONFIG_YENTA_RICOH=y CONFIG_YENTA_TI=y CONFIG_YENTA_ENE_TUNE=y CONFIG_YENTA_TOSHIBA=y CONFIG_PD6729=m CONFIG_I82092=m CONFIG_PCCARD_NONSTATIC=m CONFIG_HOTPLUG_PCI=m CONFIG_HOTPLUG_PCI_FAKE=m CONFIG_HOTPLUG_PCI_ACPI=m CONFIG_HOTPLUG_PCI_ACPI_IBM=m CONFIG_HOTPLUG_PCI_CPCI=y CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m CONFIG_HOTPLUG_PCI_SHPC=m # # Executable file formats / Emulations # CONFIG_BINFMT_ELF=y CONFIG_COMPAT_BINFMT_ELF=y CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y # CONFIG_HAVE_AOUT is not set CONFIG_BINFMT_MISC=m CONFIG_IA32_EMULATION=y CONFIG_IA32_AOUT=y CONFIG_COMPAT=y CONFIG_COMPAT_FOR_U64_ALIGNMENT=y CONFIG_SYSVIPC_COMPAT=y CONFIG_NET=y # # Networking options # CONFIG_COMPAT_NET_DEV_OPS=y CONFIG_PACKET=y CONFIG_PACKET_MMAP=y CONFIG_UNIX=y CONFIG_XFRM=y CONFIG_XFRM_USER=m # CONFIG_XFRM_SUB_POLICY is not set # CONFIG_XFRM_MIGRATE is not set # CONFIG_XFRM_STATISTICS is not set CONFIG_XFRM_IPCOMP=m CONFIG_NET_KEY=m # CONFIG_NET_KEY_MIGRATE is not set 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 is not set CONFIG_NET_IPIP=m CONFIG_NET_IPGRE=m CONFIG_NET_IPGRE_BROADCAST=y CONFIG_IP_MROUTE=y CONFIG_IP_PIMSM_V1=y CONFIG_IP_PIMSM_V2=y # CONFIG_ARPD is not set CONFIG_SYN_COOKIES=y CONFIG_INET_AH=m CONFIG_INET_ESP=m CONFIG_INET_IPCOMP=m CONFIG_INET_XFRM_TUNNEL=m CONFIG_INET_TUNNEL=m CONFIG_INET_XFRM_MODE_TRANSPORT=m CONFIG_INET_XFRM_MODE_TUNNEL=m CONFIG_INET_XFRM_MODE_BEET=m CONFIG_INET_LRO=m CONFIG_INET_DIAG=m CONFIG_INET_TCP_DIAG=m CONFIG_TCP_CONG_ADVANCED=y CONFIG_TCP_CONG_BIC=m CONFIG_TCP_CONG_CUBIC=y CONFIG_TCP_CONG_WESTWOOD=m CONFIG_TCP_CONG_HTCP=m CONFIG_TCP_CONG_HSTCP=m CONFIG_TCP_CONG_HYBLA=m CONFIG_TCP_CONG_VEGAS=m CONFIG_TCP_CONG_SCALABLE=m CONFIG_TCP_CONG_LP=m CONFIG_TCP_CONG_VENO=m CONFIG_TCP_CONG_YEAH=m CONFIG_TCP_CONG_ILLINOIS=m # 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=m CONFIG_IPV6_PRIVACY=y CONFIG_IPV6_ROUTER_PREF=y CONFIG_IPV6_ROUTE_INFO=y CONFIG_IPV6_OPTIMISTIC_DAD=y CONFIG_INET6_AH=m CONFIG_INET6_ESP=m CONFIG_INET6_IPCOMP=m CONFIG_IPV6_MIP6=m CONFIG_INET6_XFRM_TUNNEL=m CONFIG_INET6_TUNNEL=m CONFIG_INET6_XFRM_MODE_TRANSPORT=m CONFIG_INET6_XFRM_MODE_TUNNEL=m CONFIG_INET6_XFRM_MODE_BEET=m CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m CONFIG_IPV6_SIT=m CONFIG_IPV6_NDISC_NODETYPE=y CONFIG_IPV6_TUNNEL=m CONFIG_IPV6_MULTIPLE_TABLES=y CONFIG_IPV6_SUBTREES=y CONFIG_IPV6_MROUTE=y CONFIG_IPV6_PIMSM_V2=y # CONFIG_NETLABEL is not set CONFIG_NETWORK_SECMARK=y CONFIG_NETFILTER=y # CONFIG_NETFILTER_DEBUG is not set CONFIG_NETFILTER_ADVANCED=y CONFIG_BRIDGE_NETFILTER=y # # Core Netfilter Configuration # CONFIG_NETFILTER_NETLINK=m CONFIG_NETFILTER_NETLINK_QUEUE=m CONFIG_NETFILTER_NETLINK_LOG=m CONFIG_NF_CONNTRACK=m 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=m CONFIG_NF_CT_PROTO_GRE=m CONFIG_NF_CT_PROTO_SCTP=m CONFIG_NF_CT_PROTO_UDPLITE=m CONFIG_NF_CONNTRACK_AMANDA=m CONFIG_NF_CONNTRACK_FTP=m CONFIG_NF_CONNTRACK_H323=m CONFIG_NF_CONNTRACK_IRC=m CONFIG_NF_CONNTRACK_NETBIOS_NS=m CONFIG_NF_CONNTRACK_PPTP=m CONFIG_NF_CONNTRACK_SANE=m CONFIG_NF_CONNTRACK_SIP=m CONFIG_NF_CONNTRACK_TFTP=m CONFIG_NF_CT_NETLINK=m CONFIG_NETFILTER_TPROXY=m CONFIG_NETFILTER_XTABLES=m CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m CONFIG_NETFILTER_XT_TARGET_CONNMARK=m CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m CONFIG_NETFILTER_XT_TARGET_DSCP=m CONFIG_NETFILTER_XT_TARGET_MARK=m CONFIG_NETFILTER_XT_TARGET_NFLOG=m CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m CONFIG_NETFILTER_XT_TARGET_NOTRACK=m CONFIG_NETFILTER_XT_TARGET_RATEEST=m CONFIG_NETFILTER_XT_TARGET_TPROXY=m CONFIG_NETFILTER_XT_TARGET_TRACE=m CONFIG_NETFILTER_XT_TARGET_SECMARK=m CONFIG_NETFILTER_XT_TARGET_TCPMSS=m CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m CONFIG_NETFILTER_XT_MATCH_COMMENT=m CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m CONFIG_NETFILTER_XT_MATCH_CONNMARK=m CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m CONFIG_NETFILTER_XT_MATCH_DCCP=m CONFIG_NETFILTER_XT_MATCH_DSCP=m CONFIG_NETFILTER_XT_MATCH_ESP=m CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m CONFIG_NETFILTER_XT_MATCH_HELPER=m CONFIG_NETFILTER_XT_MATCH_IPRANGE=m CONFIG_NETFILTER_XT_MATCH_LENGTH=m CONFIG_NETFILTER_XT_MATCH_LIMIT=m CONFIG_NETFILTER_XT_MATCH_MAC=m CONFIG_NETFILTER_XT_MATCH_MARK=m CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m CONFIG_NETFILTER_XT_MATCH_OWNER=m CONFIG_NETFILTER_XT_MATCH_POLICY=m CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m CONFIG_NETFILTER_XT_MATCH_QUOTA=m CONFIG_NETFILTER_XT_MATCH_RATEEST=m CONFIG_NETFILTER_XT_MATCH_REALM=m CONFIG_NETFILTER_XT_MATCH_RECENT=m # CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set CONFIG_NETFILTER_XT_MATCH_SCTP=m CONFIG_NETFILTER_XT_MATCH_SOCKET=m CONFIG_NETFILTER_XT_MATCH_STATE=m CONFIG_NETFILTER_XT_MATCH_STATISTIC=m CONFIG_NETFILTER_XT_MATCH_STRING=m CONFIG_NETFILTER_XT_MATCH_TCPMSS=m CONFIG_NETFILTER_XT_MATCH_TIME=m CONFIG_NETFILTER_XT_MATCH_U32=m CONFIG_IP_VS=m # CONFIG_IP_VS_IPV6 is not set # CONFIG_IP_VS_DEBUG is not set 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=m CONFIG_IP_VS_WRR=m CONFIG_IP_VS_LC=m CONFIG_IP_VS_WLC=m CONFIG_IP_VS_LBLC=m CONFIG_IP_VS_LBLCR=m CONFIG_IP_VS_DH=m CONFIG_IP_VS_SH=m CONFIG_IP_VS_SED=m CONFIG_IP_VS_NQ=m # # IPVS application helper # CONFIG_IP_VS_FTP=m # # IP: Netfilter Configuration # CONFIG_NF_DEFRAG_IPV4=m CONFIG_NF_CONNTRACK_IPV4=m CONFIG_NF_CONNTRACK_PROC_COMPAT=y CONFIG_IP_NF_QUEUE=m CONFIG_IP_NF_IPTABLES=m CONFIG_IP_NF_MATCH_ADDRTYPE=m CONFIG_IP_NF_MATCH_AH=m CONFIG_IP_NF_MATCH_ECN=m CONFIG_IP_NF_MATCH_TTL=m CONFIG_IP_NF_FILTER=m CONFIG_IP_NF_TARGET_REJECT=m CONFIG_IP_NF_TARGET_LOG=m CONFIG_IP_NF_TARGET_ULOG=m CONFIG_NF_NAT=m CONFIG_NF_NAT_NEEDED=y CONFIG_IP_NF_TARGET_MASQUERADE=m CONFIG_IP_NF_TARGET_NETMAP=m CONFIG_IP_NF_TARGET_REDIRECT=m CONFIG_NF_NAT_SNMP_BASIC=m CONFIG_NF_NAT_PROTO_DCCP=m CONFIG_NF_NAT_PROTO_GRE=m CONFIG_NF_NAT_PROTO_UDPLITE=m CONFIG_NF_NAT_PROTO_SCTP=m CONFIG_NF_NAT_FTP=m CONFIG_NF_NAT_IRC=m CONFIG_NF_NAT_TFTP=m CONFIG_NF_NAT_AMANDA=m CONFIG_NF_NAT_PPTP=m CONFIG_NF_NAT_H323=m CONFIG_NF_NAT_SIP=m CONFIG_IP_NF_MANGLE=m CONFIG_IP_NF_TARGET_CLUSTERIP=m CONFIG_IP_NF_TARGET_ECN=m CONFIG_IP_NF_TARGET_TTL=m CONFIG_IP_NF_RAW=m CONFIG_IP_NF_SECURITY=m CONFIG_IP_NF_ARPTABLES=m CONFIG_IP_NF_ARPFILTER=m CONFIG_IP_NF_ARP_MANGLE=m # # IPv6: Netfilter Configuration # CONFIG_NF_CONNTRACK_IPV6=m CONFIG_IP6_NF_QUEUE=m CONFIG_IP6_NF_IPTABLES=m CONFIG_IP6_NF_MATCH_AH=m CONFIG_IP6_NF_MATCH_EUI64=m CONFIG_IP6_NF_MATCH_FRAG=m CONFIG_IP6_NF_MATCH_OPTS=m CONFIG_IP6_NF_MATCH_HL=m CONFIG_IP6_NF_MATCH_IPV6HEADER=m CONFIG_IP6_NF_MATCH_MH=m CONFIG_IP6_NF_MATCH_RT=m CONFIG_IP6_NF_TARGET_LOG=m CONFIG_IP6_NF_FILTER=m CONFIG_IP6_NF_TARGET_REJECT=m CONFIG_IP6_NF_MANGLE=m CONFIG_IP6_NF_TARGET_HL=m CONFIG_IP6_NF_RAW=m CONFIG_IP6_NF_SECURITY=m # # DECnet: Netfilter Configuration # CONFIG_DECNET_NF_GRABULATOR=m CONFIG_BRIDGE_NF_EBTABLES=m CONFIG_BRIDGE_EBT_BROUTE=m CONFIG_BRIDGE_EBT_T_FILTER=m CONFIG_BRIDGE_EBT_T_NAT=m CONFIG_BRIDGE_EBT_802_3=m CONFIG_BRIDGE_EBT_AMONG=m CONFIG_BRIDGE_EBT_ARP=m CONFIG_BRIDGE_EBT_IP=m CONFIG_BRIDGE_EBT_IP6=m CONFIG_BRIDGE_EBT_LIMIT=m CONFIG_BRIDGE_EBT_MARK=m CONFIG_BRIDGE_EBT_PKTTYPE=m CONFIG_BRIDGE_EBT_STP=m CONFIG_BRIDGE_EBT_VLAN=m CONFIG_BRIDGE_EBT_ARPREPLY=m CONFIG_BRIDGE_EBT_DNAT=m CONFIG_BRIDGE_EBT_MARK_T=m CONFIG_BRIDGE_EBT_REDIRECT=m CONFIG_BRIDGE_EBT_SNAT=m CONFIG_BRIDGE_EBT_LOG=m CONFIG_BRIDGE_EBT_ULOG=m CONFIG_BRIDGE_EBT_NFLOG=m CONFIG_IP_DCCP=m CONFIG_INET_DCCP_DIAG=m # # DCCP CCIDs Configuration (EXPERIMENTAL) # # CONFIG_IP_DCCP_CCID2_DEBUG is not set CONFIG_IP_DCCP_CCID3=y # CONFIG_IP_DCCP_CCID3_DEBUG is not set CONFIG_IP_DCCP_CCID3_RTO=100 CONFIG_IP_DCCP_TFRC_LIB=y # # DCCP Kernel Hacking # # CONFIG_IP_DCCP_DEBUG is not set CONFIG_IP_SCTP=m # CONFIG_SCTP_DBG_MSG is not set # CONFIG_SCTP_DBG_OBJCNT is not set # CONFIG_SCTP_HMAC_NONE is not set # CONFIG_SCTP_HMAC_SHA1 is not set CONFIG_SCTP_HMAC_MD5=y CONFIG_TIPC=m 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 is not set CONFIG_ATM=m CONFIG_ATM_CLIP=m # CONFIG_ATM_CLIP_NO_ICMP is not set CONFIG_ATM_LANE=m CONFIG_ATM_MPOA=m CONFIG_ATM_BR2684=m # CONFIG_ATM_BR2684_IPFILTER is not set CONFIG_STP=m CONFIG_GARP=m CONFIG_BRIDGE=m # CONFIG_NET_DSA is not set CONFIG_VLAN_8021Q=m CONFIG_VLAN_8021Q_GVRP=y CONFIG_DECNET=m # CONFIG_DECNET_ROUTER is not set CONFIG_LLC=y CONFIG_LLC2=m CONFIG_IPX=m # CONFIG_IPX_INTERN is not set CONFIG_ATALK=m CONFIG_DEV_APPLETALK=m CONFIG_IPDDP=m CONFIG_IPDDP_ENCAP=y CONFIG_IPDDP_DECAP=y CONFIG_X25=m CONFIG_LAPB=m CONFIG_ECONET=m CONFIG_ECONET_AUNUDP=y CONFIG_ECONET_NATIVE=y CONFIG_WAN_ROUTER=m CONFIG_NET_SCHED=y # # Queueing/Scheduling # CONFIG_NET_SCH_CBQ=m CONFIG_NET_SCH_HTB=m CONFIG_NET_SCH_HFSC=m CONFIG_NET_SCH_ATM=m CONFIG_NET_SCH_PRIO=m CONFIG_NET_SCH_MULTIQ=m CONFIG_NET_SCH_RED=m CONFIG_NET_SCH_SFQ=m CONFIG_NET_SCH_TEQL=m CONFIG_NET_SCH_TBF=m CONFIG_NET_SCH_GRED=m CONFIG_NET_SCH_DSMARK=m CONFIG_NET_SCH_NETEM=m CONFIG_NET_SCH_DRR=m CONFIG_NET_SCH_INGRESS=m # # Classification # CONFIG_NET_CLS=y CONFIG_NET_CLS_BASIC=m CONFIG_NET_CLS_TCINDEX=m CONFIG_NET_CLS_ROUTE4=m CONFIG_NET_CLS_ROUTE=y CONFIG_NET_CLS_FW=m CONFIG_NET_CLS_U32=m CONFIG_CLS_U32_PERF=y CONFIG_CLS_U32_MARK=y CONFIG_NET_CLS_RSVP=m CONFIG_NET_CLS_RSVP6=m CONFIG_NET_CLS_FLOW=m CONFIG_NET_CLS_CGROUP=y CONFIG_NET_EMATCH=y CONFIG_NET_EMATCH_STACK=32 CONFIG_NET_EMATCH_CMP=m CONFIG_NET_EMATCH_NBYTE=m CONFIG_NET_EMATCH_U32=m CONFIG_NET_EMATCH_META=m CONFIG_NET_EMATCH_TEXT=m CONFIG_NET_CLS_ACT=y CONFIG_NET_ACT_POLICE=m CONFIG_NET_ACT_GACT=m CONFIG_GACT_PROB=y CONFIG_NET_ACT_MIRRED=m CONFIG_NET_ACT_IPT=m CONFIG_NET_ACT_NAT=m CONFIG_NET_ACT_PEDIT=m CONFIG_NET_ACT_SIMP=m CONFIG_NET_ACT_SKBEDIT=m CONFIG_NET_CLS_IND=y CONFIG_NET_SCH_FIFO=y CONFIG_DCB=y # # Network testing # CONFIG_NET_PKTGEN=m CONFIG_HAMRADIO=y # # Packet Radio protocols # CONFIG_AX25=m # CONFIG_AX25_DAMA_SLAVE is not set CONFIG_NETROM=m CONFIG_ROSE=m # # AX.25 network device drivers # CONFIG_MKISS=m CONFIG_6PACK=m CONFIG_BPQETHER=m CONFIG_BAYCOM_SER_FDX=m CONFIG_BAYCOM_SER_HDX=m CONFIG_BAYCOM_PAR=m CONFIG_CAN=m CONFIG_CAN_RAW=m CONFIG_CAN_BCM=m # # CAN Device Drivers # CONFIG_CAN_VCAN=m # CONFIG_CAN_DEBUG_DEVICES is not set CONFIG_IRDA=m # # IrDA protocols # CONFIG_IRLAN=m CONFIG_IRNET=m CONFIG_IRCOMM=m # CONFIG_IRDA_ULTRA is not set # # IrDA options # CONFIG_IRDA_CACHE_LAST_LSAP=y CONFIG_IRDA_FAST_RR=y # CONFIG_IRDA_DEBUG is not set # # Infrared-port device drivers # # # SIR device drivers # CONFIG_IRTTY_SIR=m # # Dongle support # CONFIG_DONGLE=y CONFIG_ESI_DONGLE=m CONFIG_ACTISYS_DONGLE=m CONFIG_TEKRAM_DONGLE=m CONFIG_TOIM3232_DONGLE=m CONFIG_LITELINK_DONGLE=m CONFIG_MA600_DONGLE=m CONFIG_GIRBIL_DONGLE=m CONFIG_MCP2120_DONGLE=m CONFIG_OLD_BELKIN_DONGLE=m CONFIG_ACT200L_DONGLE=m CONFIG_KINGSUN_DONGLE=m CONFIG_KSDAZZLE_DONGLE=m CONFIG_KS959_DONGLE=m # # FIR device drivers # CONFIG_USB_IRDA=m CONFIG_SIGMATEL_FIR=m CONFIG_NSC_FIR=m CONFIG_WINBOND_FIR=m CONFIG_SMC_IRCC_FIR=m CONFIG_ALI_FIR=m CONFIG_VLSI_FIR=m CONFIG_VIA_FIR=m CONFIG_MCS_FIR=m CONFIG_BT=m CONFIG_BT_L2CAP=m CONFIG_BT_SCO=m CONFIG_BT_RFCOMM=m CONFIG_BT_RFCOMM_TTY=y CONFIG_BT_BNEP=m CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_CMTP=m CONFIG_BT_HIDP=m # # Bluetooth device drivers # CONFIG_BT_HCIBTUSB=m CONFIG_BT_HCIBTSDIO=m CONFIG_BT_HCIUART=m CONFIG_BT_HCIUART_H4=y CONFIG_BT_HCIUART_BCSP=y CONFIG_BT_HCIUART_LL=y CONFIG_BT_HCIBCM203X=m CONFIG_BT_HCIBPA10X=m CONFIG_BT_HCIBFUSB=m CONFIG_BT_HCIDTL1=m CONFIG_BT_HCIBT3C=m CONFIG_BT_HCIBLUECARD=m CONFIG_BT_HCIBTUART=m CONFIG_BT_HCIVHCI=m CONFIG_AF_RXRPC=m # CONFIG_AF_RXRPC_DEBUG is not set CONFIG_RXKAD=m CONFIG_PHONET=m CONFIG_FIB_RULES=y CONFIG_WIRELESS=y CONFIG_CFG80211=m # CONFIG_CFG80211_REG_DEBUG is not set CONFIG_NL80211=y CONFIG_WIRELESS_OLD_REGULATORY=y CONFIG_WIRELESS_EXT=y # CONFIG_WIRELESS_EXT_SYSFS is not set CONFIG_LIB80211=m CONFIG_LIB80211_CRYPT_WEP=m CONFIG_LIB80211_CRYPT_CCMP=m CONFIG_LIB80211_CRYPT_TKIP=m # CONFIG_LIB80211_DEBUG is not set CONFIG_MAC80211=m # # Rate control algorithm selection # 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 is not set # CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_WIMAX=m CONFIG_WIMAX_DEBUG_LEVEL=8 CONFIG_RFKILL=m CONFIG_RFKILL_INPUT=m CONFIG_RFKILL_LEDS=y CONFIG_NET_9P=m CONFIG_NET_9P_VIRTIO=m CONFIG_NET_9P_RDMA=m # CONFIG_NET_9P_DEBUG is not set # # 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 is not set CONFIG_EXTRA_FIRMWARE="" # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set CONFIG_CONNECTOR=m CONFIG_MTD=m # CONFIG_MTD_DEBUG is not set CONFIG_MTD_CONCAT=m CONFIG_MTD_PARTITIONS=y # CONFIG_MTD_TESTS is not set CONFIG_MTD_REDBOOT_PARTS=m CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 # CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set # CONFIG_MTD_REDBOOT_PARTS_READONLY is not set CONFIG_MTD_AR7_PARTS=m # # User Modules And Translation Layers # CONFIG_MTD_CHAR=m CONFIG_MTD_BLKDEVS=m CONFIG_MTD_BLOCK=m CONFIG_MTD_BLOCK_RO=m CONFIG_FTL=m CONFIG_NFTL=m CONFIG_NFTL_RW=y CONFIG_INFTL=m CONFIG_RFD_FTL=m CONFIG_SSFDC=m CONFIG_MTD_OOPS=m # # RAM/ROM/Flash chip drivers # CONFIG_MTD_CFI=m CONFIG_MTD_JEDECPROBE=m CONFIG_MTD_GEN_PROBE=m # CONFIG_MTD_CFI_ADV_OPTIONS is not set 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 is not set # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set CONFIG_MTD_CFI_I1=y CONFIG_MTD_CFI_I2=y # CONFIG_MTD_CFI_I4 is not set # CONFIG_MTD_CFI_I8 is not set CONFIG_MTD_CFI_INTELEXT=m CONFIG_MTD_CFI_AMDSTD=m CONFIG_MTD_CFI_STAA=m CONFIG_MTD_CFI_UTIL=m CONFIG_MTD_RAM=m CONFIG_MTD_ROM=m CONFIG_MTD_ABSENT=m # # Mapping drivers for chip access # CONFIG_MTD_COMPLEX_MAPPINGS=y CONFIG_MTD_PHYSMAP=m # CONFIG_MTD_PHYSMAP_COMPAT is not set CONFIG_MTD_SC520CDP=m CONFIG_MTD_NETSC520=m CONFIG_MTD_TS5500=m CONFIG_MTD_SBC_GXX=m # CONFIG_MTD_AMD76XROM is not set # CONFIG_MTD_ICHXROM is not set # CONFIG_MTD_ESB2ROM is not set # CONFIG_MTD_CK804XROM is not set # CONFIG_MTD_SCB2_FLASH is not set CONFIG_MTD_NETtel=m CONFIG_MTD_DILNETPC=m CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000 # CONFIG_MTD_L440GX is not set CONFIG_MTD_PCI=m CONFIG_MTD_INTEL_VR_NOR=m CONFIG_MTD_PLATRAM=m # # Self-contained MTD device drivers # CONFIG_MTD_PMC551=m # CONFIG_MTD_PMC551_BUGFIX is not set # CONFIG_MTD_PMC551_DEBUG is not set CONFIG_MTD_DATAFLASH=m # CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set # CONFIG_MTD_DATAFLASH_OTP is not set CONFIG_MTD_M25P80=m CONFIG_M25PXX_USE_FAST_READ=y CONFIG_MTD_SLRAM=m CONFIG_MTD_PHRAM=m CONFIG_MTD_MTDRAM=m CONFIG_MTDRAM_TOTAL_SIZE=4096 CONFIG_MTDRAM_ERASE_SIZE=128 CONFIG_MTD_BLOCK2MTD=m # # Disk-On-Chip Device Drivers # CONFIG_MTD_DOC2000=m CONFIG_MTD_DOC2001=m CONFIG_MTD_DOC2001PLUS=m CONFIG_MTD_DOCPROBE=m CONFIG_MTD_DOCECC=m # CONFIG_MTD_DOCPROBE_ADVANCED is not set CONFIG_MTD_DOCPROBE_ADDRESS=0 CONFIG_MTD_NAND=m # CONFIG_MTD_NAND_VERIFY_WRITE is not set # CONFIG_MTD_NAND_ECC_SMC is not set # CONFIG_MTD_NAND_MUSEUM_IDS is not set CONFIG_MTD_NAND_IDS=m CONFIG_MTD_NAND_DISKONCHIP=m # CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 # CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set CONFIG_MTD_NAND_CAFE=m # CONFIG_MTD_NAND_NANDSIM is not set CONFIG_MTD_NAND_PLATFORM=m CONFIG_MTD_ALAUDA=m CONFIG_MTD_ONENAND=m CONFIG_MTD_ONENAND_VERIFY_WRITE=y # CONFIG_MTD_ONENAND_OTP is not set CONFIG_MTD_ONENAND_2X_PROGRAM=y CONFIG_MTD_ONENAND_SIM=m # # LPDDR flash memory drivers # CONFIG_MTD_LPDDR=m CONFIG_MTD_QINFO_PROBE=m # # UBI - Unsorted block images # CONFIG_MTD_UBI=m CONFIG_MTD_UBI_WL_THRESHOLD=4096 CONFIG_MTD_UBI_BEB_RESERVE=1 # CONFIG_MTD_UBI_GLUEBI is not set # # UBI debugging options # # CONFIG_MTD_UBI_DEBUG is not set CONFIG_PARPORT=m CONFIG_PARPORT_PC=m CONFIG_PARPORT_SERIAL=m # CONFIG_PARPORT_PC_FIFO is not set # CONFIG_PARPORT_PC_SUPERIO is not set CONFIG_PARPORT_PC_PCMCIA=m # CONFIG_PARPORT_GSC is not set CONFIG_PARPORT_AX88796=m CONFIG_PARPORT_1284=y CONFIG_PARPORT_NOT_PC=y CONFIG_PNP=y # CONFIG_PNP_DEBUG_MESSAGES is not set # # Protocols # CONFIG_PNPACPI=y CONFIG_BLK_DEV=y CONFIG_BLK_DEV_FD=m CONFIG_PARIDE=m # # Parallel IDE high-level drivers # CONFIG_PARIDE_PD=m CONFIG_PARIDE_PCD=m CONFIG_PARIDE_PF=m CONFIG_PARIDE_PT=m CONFIG_PARIDE_PG=m # # Parallel IDE protocol modules # CONFIG_PARIDE_ATEN=m CONFIG_PARIDE_BPCK=m CONFIG_PARIDE_COMM=m CONFIG_PARIDE_DSTR=m CONFIG_PARIDE_FIT2=m CONFIG_PARIDE_FIT3=m CONFIG_PARIDE_EPAT=m # CONFIG_PARIDE_EPATC8 is not set CONFIG_PARIDE_EPIA=m CONFIG_PARIDE_FRIQ=m CONFIG_PARIDE_FRPW=m CONFIG_PARIDE_KBIC=m CONFIG_PARIDE_KTTI=m CONFIG_PARIDE_ON20=m CONFIG_PARIDE_ON26=m CONFIG_BLK_CPQ_DA=m CONFIG_BLK_CPQ_CISS_DA=m CONFIG_CISS_SCSI_TAPE=y CONFIG_BLK_DEV_DAC960=m CONFIG_BLK_DEV_UMEM=m # CONFIG_BLK_DEV_COW_COMMON is not set CONFIG_BLK_DEV_LOOP=m CONFIG_BLK_DEV_CRYPTOLOOP=m CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_SX8=m # CONFIG_BLK_DEV_UB is not set CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=65536 # CONFIG_BLK_DEV_XIP is not set CONFIG_CDROM_PKTCDVD=m CONFIG_CDROM_PKTCDVD_BUFFERS=8 # CONFIG_CDROM_PKTCDVD_WCACHE is not set CONFIG_ATA_OVER_ETH=m CONFIG_XEN_BLKDEV_FRONTEND=m CONFIG_VIRTIO_BLK=m # CONFIG_BLK_DEV_HD is not set CONFIG_MISC_DEVICES=y CONFIG_IBM_ASM=m CONFIG_PHANTOM=m CONFIG_SGI_IOC4=m CONFIG_TIFM_CORE=m CONFIG_TIFM_7XX1=m CONFIG_ICS932S401=m CONFIG_ENCLOSURE_SERVICES=m CONFIG_SGI_XP=m CONFIG_HP_ILO=m CONFIG_SGI_GRU=m # CONFIG_SGI_GRU_DEBUG is not set CONFIG_DELL_LAPTOP=m CONFIG_C2PORT=m CONFIG_C2PORT_DURAMAR_2150=m # # EEPROM support # CONFIG_EEPROM_AT24=m CONFIG_EEPROM_AT25=m CONFIG_EEPROM_LEGACY=m CONFIG_EEPROM_93CX6=m CONFIG_HAVE_IDE=y CONFIG_IDE=m # # Please see Documentation/ide/ide.txt for help/info on IDE drives # CONFIG_IDE_TIMINGS=y CONFIG_IDE_ATAPI=y # CONFIG_BLK_DEV_IDE_SATA is not set CONFIG_IDE_GD=m CONFIG_IDE_GD_ATA=y CONFIG_IDE_GD_ATAPI=y CONFIG_BLK_DEV_IDECS=m CONFIG_BLK_DEV_DELKIN=m CONFIG_BLK_DEV_IDECD=m CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y CONFIG_BLK_DEV_IDETAPE=m CONFIG_BLK_DEV_IDEACPI=y # CONFIG_IDE_TASK_IOCTL is not set CONFIG_IDE_PROC_FS=y # # IDE chipset support/bugfixes # CONFIG_IDE_GENERIC=m # CONFIG_BLK_DEV_PLATFORM is not set CONFIG_BLK_DEV_CMD640=m # CONFIG_BLK_DEV_CMD640_ENHANCED is not set CONFIG_BLK_DEV_IDEPNP=m CONFIG_BLK_DEV_IDEDMA_SFF=y # # PCI IDE chipsets support # CONFIG_BLK_DEV_IDEPCI=y # CONFIG_BLK_DEV_OFFBOARD is not set CONFIG_BLK_DEV_GENERIC=m CONFIG_BLK_DEV_OPTI621=m CONFIG_BLK_DEV_RZ1000=m CONFIG_BLK_DEV_IDEDMA_PCI=y CONFIG_BLK_DEV_AEC62XX=m CONFIG_BLK_DEV_ALI15X3=m CONFIG_BLK_DEV_AMD74XX=m CONFIG_BLK_DEV_ATIIXP=m CONFIG_BLK_DEV_CMD64X=m CONFIG_BLK_DEV_TRIFLEX=m CONFIG_BLK_DEV_CS5520=m CONFIG_BLK_DEV_CS5530=m CONFIG_BLK_DEV_HPT366=m CONFIG_BLK_DEV_JMICRON=m CONFIG_BLK_DEV_SC1200=m CONFIG_BLK_DEV_PIIX=m CONFIG_BLK_DEV_IT8172=m CONFIG_BLK_DEV_IT8213=m CONFIG_BLK_DEV_IT821X=m CONFIG_BLK_DEV_NS87415=m CONFIG_BLK_DEV_PDC202XX_OLD=m CONFIG_BLK_DEV_PDC202XX_NEW=m CONFIG_BLK_DEV_SVWKS=m CONFIG_BLK_DEV_SIIMAGE=m CONFIG_BLK_DEV_SIS5513=m CONFIG_BLK_DEV_SLC90E66=m CONFIG_BLK_DEV_TRM290=m CONFIG_BLK_DEV_VIA82CXXX=m CONFIG_BLK_DEV_TC86C001=m CONFIG_BLK_DEV_IDEDMA=y # # SCSI device support # CONFIG_RAID_ATTRS=m CONFIG_SCSI=m CONFIG_SCSI_DMA=y CONFIG_SCSI_TGT=m CONFIG_SCSI_NETLINK=y # CONFIG_SCSI_PROC_FS is not set # # SCSI support type (disk, tape, CD-ROM) # CONFIG_BLK_DEV_SD=m CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=m CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_CHR_DEV_SCH=m CONFIG_SCSI_ENCLOSURE=m # # 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=m CONFIG_SCSI_FC_ATTRS=m CONFIG_SCSI_FC_TGT_ATTRS=y CONFIG_SCSI_ISCSI_ATTRS=m CONFIG_SCSI_SAS_ATTRS=m CONFIG_SCSI_SAS_LIBSAS=m CONFIG_SCSI_SAS_ATA=y CONFIG_SCSI_SAS_HOST_SMP=y # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set CONFIG_SCSI_SRP_ATTRS=m CONFIG_SCSI_SRP_TGT_ATTRS=y CONFIG_SCSI_LOWLEVEL=y CONFIG_ISCSI_TCP=m CONFIG_SCSI_CXGB3_ISCSI=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_ACARD=m CONFIG_SCSI_AACRAID=m CONFIG_SCSI_AIC7XXX=m CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 CONFIG_AIC7XXX_RESET_DELAY_MS=15000 CONFIG_AIC7XXX_DEBUG_ENABLE=y CONFIG_AIC7XXX_DEBUG_MASK=0 CONFIG_AIC7XXX_REG_PRETTY_PRINT=y CONFIG_SCSI_AIC7XXX_OLD=m CONFIG_SCSI_AIC79XX=m CONFIG_AIC79XX_CMDS_PER_DEVICE=32 CONFIG_AIC79XX_RESET_DELAY_MS=15000 CONFIG_AIC79XX_DEBUG_ENABLE=y CONFIG_AIC79XX_DEBUG_MASK=0 CONFIG_AIC79XX_REG_PRETTY_PRINT=y CONFIG_SCSI_AIC94XX=m # CONFIG_AIC94XX_DEBUG is not set CONFIG_SCSI_DPT_I2O=m CONFIG_SCSI_ADVANSYS=m CONFIG_SCSI_ARCMSR=m # CONFIG_SCSI_ARCMSR_AER is not set CONFIG_MEGARAID_NEWGEN=y CONFIG_MEGARAID_MM=m CONFIG_MEGARAID_MAILBOX=m CONFIG_MEGARAID_LEGACY=m CONFIG_MEGARAID_SAS=m CONFIG_SCSI_HPTIOP=m CONFIG_SCSI_BUSLOGIC=m CONFIG_LIBFC=m CONFIG_FCOE=m CONFIG_SCSI_DMX3191D=m CONFIG_SCSI_EATA=m CONFIG_SCSI_EATA_TAGGED_QUEUE=y CONFIG_SCSI_EATA_LINKED_COMMANDS=y CONFIG_SCSI_EATA_MAX_TAGS=16 CONFIG_SCSI_FUTURE_DOMAIN=m CONFIG_SCSI_GDTH=m CONFIG_SCSI_IPS=m CONFIG_SCSI_INITIO=m CONFIG_SCSI_INIA100=m CONFIG_SCSI_PPA=m CONFIG_SCSI_IMM=m # CONFIG_SCSI_IZIP_EPP16 is not set # CONFIG_SCSI_IZIP_SLOW_CTR is not set CONFIG_SCSI_MVSAS=m CONFIG_SCSI_STEX=m CONFIG_SCSI_SYM53C8XX_2=m 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=m # CONFIG_SCSI_IPR_TRACE is not set # CONFIG_SCSI_IPR_DUMP is not set CONFIG_SCSI_QLOGIC_1280=m CONFIG_SCSI_QLA_FC=m CONFIG_SCSI_QLA_ISCSI=m CONFIG_SCSI_LPFC=m # CONFIG_SCSI_LPFC_DEBUG_FS is not set CONFIG_SCSI_DC395x=m CONFIG_SCSI_DC390T=m CONFIG_SCSI_DEBUG=m CONFIG_SCSI_SRP=m CONFIG_SCSI_LOWLEVEL_PCMCIA=y CONFIG_PCMCIA_FDOMAIN=m CONFIG_PCMCIA_QLOGIC=m CONFIG_PCMCIA_SYM53C500=m CONFIG_SCSI_DH=m CONFIG_SCSI_DH_RDAC=m CONFIG_SCSI_DH_HP_SW=m CONFIG_SCSI_DH_EMC=m CONFIG_SCSI_DH_ALUA=m CONFIG_ATA=m # CONFIG_ATA_NONSTANDARD is not set CONFIG_ATA_ACPI=y CONFIG_SATA_PMP=y CONFIG_SATA_AHCI=m CONFIG_SATA_SIL24=m CONFIG_ATA_SFF=y CONFIG_SATA_SVW=m CONFIG_ATA_PIIX=m CONFIG_SATA_MV=m CONFIG_SATA_NV=m CONFIG_PDC_ADMA=m CONFIG_SATA_QSTOR=m CONFIG_SATA_PROMISE=m CONFIG_SATA_SX4=m CONFIG_SATA_SIL=m CONFIG_SATA_SIS=m CONFIG_SATA_ULI=m CONFIG_SATA_VIA=m CONFIG_SATA_VITESSE=m CONFIG_SATA_INIC162X=m # CONFIG_PATA_ACPI is not set # CONFIG_PATA_ALI is not set # CONFIG_PATA_AMD is not set CONFIG_PATA_ARTOP=m # CONFIG_PATA_ATIIXP is not set # CONFIG_PATA_CMD640_PCI is not set # CONFIG_PATA_CMD64X is not set # CONFIG_PATA_CS5520 is not set # CONFIG_PATA_CS5530 is not set # CONFIG_PATA_CYPRESS is not set # CONFIG_PATA_EFAR is not set CONFIG_ATA_GENERIC=m # CONFIG_PATA_HPT366 is not set # CONFIG_PATA_HPT37X is not set # CONFIG_PATA_HPT3X2N is not set # CONFIG_PATA_HPT3X3 is not set # CONFIG_PATA_IT821X is not set # CONFIG_PATA_IT8213 is not set # CONFIG_PATA_JMICRON is not set # CONFIG_PATA_TRIFLEX is not set CONFIG_PATA_MARVELL=m # CONFIG_PATA_MPIIX is not set # CONFIG_PATA_OLDPIIX is not set # CONFIG_PATA_NETCELL is not set # CONFIG_PATA_NINJA32 is not set # CONFIG_PATA_NS87410 is not set # CONFIG_PATA_NS87415 is not set # CONFIG_PATA_OPTI is not set # CONFIG_PATA_OPTIDMA is not set # CONFIG_PATA_PCMCIA is not set # CONFIG_PATA_PDC_OLD is not set # CONFIG_PATA_RADISYS is not set # CONFIG_PATA_RZ1000 is not set # CONFIG_PATA_SC1200 is not set # CONFIG_PATA_SERVERWORKS is not set # CONFIG_PATA_PDC2027X is not set # CONFIG_PATA_SIL680 is not set CONFIG_PATA_SIS_STUB=m # CONFIG_PATA_SIS is not set # CONFIG_PATA_VIA is not set # CONFIG_PATA_WINBOND is not set CONFIG_PATA_SCH=m CONFIG_MD=y CONFIG_BLK_DEV_MD=m CONFIG_MD_LINEAR=m CONFIG_MD_RAID0=m CONFIG_MD_RAID1=m CONFIG_MD_RAID10=m CONFIG_MD_RAID456=m CONFIG_MD_RAID5_RESHAPE=y CONFIG_MD_MULTIPATH=m CONFIG_MD_FAULTY=m CONFIG_BLK_DEV_DM=m # CONFIG_DM_DEBUG is not set CONFIG_DM_CRYPT=m CONFIG_DM_SNAPSHOT=m CONFIG_DM_MIRROR=m CONFIG_DM_ZERO=m CONFIG_DM_MULTIPATH=m CONFIG_DM_DELAY=m CONFIG_DM_UEVENT=y CONFIG_FUSION=y CONFIG_FUSION_SPI=m CONFIG_FUSION_FC=m CONFIG_FUSION_SAS=m CONFIG_FUSION_MAX_SGE=40 CONFIG_FUSION_CTL=m CONFIG_FUSION_LAN=m # CONFIG_FUSION_LOGGING is not set # # IEEE 1394 (FireWire) support # # # Enable only one of the two stacks, unless you know what you are doing # CONFIG_FIREWIRE=m CONFIG_FIREWIRE_OHCI=m CONFIG_FIREWIRE_OHCI_DEBUG=y CONFIG_FIREWIRE_SBP2=m # CONFIG_IEEE1394 is not set CONFIG_I2O=m CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y CONFIG_I2O_EXT_ADAPTEC=y CONFIG_I2O_EXT_ADAPTEC_DMA64=y CONFIG_I2O_CONFIG=m CONFIG_I2O_CONFIG_OLD_IOCTL=y CONFIG_I2O_BUS=m CONFIG_I2O_BLOCK=m CONFIG_I2O_SCSI=m CONFIG_I2O_PROC=m CONFIG_MACINTOSH_DRIVERS=y CONFIG_MAC_EMUMOUSEBTN=y CONFIG_NETDEVICES=y CONFIG_IFB=m CONFIG_DUMMY=m CONFIG_BONDING=m CONFIG_MACVLAN=m CONFIG_EQUALIZER=m CONFIG_TUN=m CONFIG_VETH=m CONFIG_NET_SB1000=m CONFIG_ARCNET=m CONFIG_ARCNET_1201=m CONFIG_ARCNET_1051=m CONFIG_ARCNET_RAW=m CONFIG_ARCNET_CAP=m CONFIG_ARCNET_COM90xx=m CONFIG_ARCNET_COM90xxIO=m CONFIG_ARCNET_RIM_I=m CONFIG_ARCNET_COM20020=m CONFIG_ARCNET_COM20020_PCI=m CONFIG_PHYLIB=m # # MII PHY device drivers # CONFIG_MARVELL_PHY=m CONFIG_DAVICOM_PHY=m CONFIG_QSEMI_PHY=m CONFIG_LXT_PHY=m CONFIG_CICADA_PHY=m CONFIG_VITESSE_PHY=m CONFIG_SMSC_PHY=m CONFIG_BROADCOM_PHY=m CONFIG_ICPLUS_PHY=m CONFIG_REALTEK_PHY=m CONFIG_NATIONAL_PHY=m CONFIG_STE10XP=m CONFIG_LSI_ET1011C_PHY=m CONFIG_MDIO_BITBANG=m CONFIG_NET_ETHERNET=y CONFIG_MII=m CONFIG_HAPPYMEAL=m CONFIG_SUNGEM=m CONFIG_CASSINI=m CONFIG_NET_VENDOR_3COM=y CONFIG_VORTEX=m CONFIG_TYPHOON=m CONFIG_ENC28J60=m # CONFIG_ENC28J60_WRITEVERIFY is not set CONFIG_DNET=m CONFIG_NET_TULIP=y CONFIG_DE2104X=m CONFIG_TULIP=m # CONFIG_TULIP_MWI is not set # CONFIG_TULIP_MMIO is not set CONFIG_TULIP_NAPI=y CONFIG_TULIP_NAPI_HW_MITIGATION=y CONFIG_DE4X5=m CONFIG_WINBOND_840=m CONFIG_DM9102=m CONFIG_ULI526X=m CONFIG_PCMCIA_XIRCOM=m CONFIG_HP100=m # 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=m CONFIG_AMD8111_ETH=m CONFIG_ADAPTEC_STARFIRE=m CONFIG_B44=m CONFIG_B44_PCI_AUTOSELECT=y CONFIG_B44_PCICORE_AUTOSELECT=y CONFIG_B44_PCI=y CONFIG_FORCEDETH=m # CONFIG_FORCEDETH_NAPI is not set CONFIG_E100=m CONFIG_FEALNX=m CONFIG_NATSEMI=m CONFIG_NE2K_PCI=m CONFIG_8139CP=m CONFIG_8139TOO=m # CONFIG_8139TOO_PIO is not set CONFIG_8139TOO_TUNE_TWISTER=y CONFIG_8139TOO_8129=y # CONFIG_8139_OLD_RX_RESET is not set CONFIG_R6040=m CONFIG_SIS900=m CONFIG_EPIC100=m CONFIG_SMSC9420=m CONFIG_SUNDANCE=m # CONFIG_SUNDANCE_MMIO is not set CONFIG_TLAN=m CONFIG_VIA_RHINE=m # CONFIG_VIA_RHINE_MMIO is not set CONFIG_SC92031=m # CONFIG_NET_POCKET is not set CONFIG_ATL2=m CONFIG_NETDEV_1000=y CONFIG_ACENIC=m # CONFIG_ACENIC_OMIT_TIGON_I is not set CONFIG_DL2K=m CONFIG_E1000=m CONFIG_E1000E=m CONFIG_IP1000=m CONFIG_IGB=m # CONFIG_IGB_LRO is not set CONFIG_IGB_DCA=y CONFIG_NS83820=m CONFIG_HAMACHI=m CONFIG_YELLOWFIN=m CONFIG_R8169=m CONFIG_R8169_VLAN=y CONFIG_SIS190=m CONFIG_SKGE=m # CONFIG_SKGE_DEBUG is not set CONFIG_SKY2=m # CONFIG_SKY2_DEBUG is not set CONFIG_VIA_VELOCITY=m CONFIG_TIGON3=m CONFIG_BNX2=m CONFIG_QLA3XXX=m CONFIG_ATL1=m CONFIG_ATL1E=m CONFIG_ATL1C=m CONFIG_JME=m CONFIG_NETDEV_10000=y CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T1_1G=y CONFIG_CHELSIO_T3_DEPENDS=y CONFIG_CHELSIO_T3=m CONFIG_ENIC=m CONFIG_IXGBE=m CONFIG_IXGBE_DCA=y CONFIG_IXGBE_DCB=y CONFIG_IXGB=m CONFIG_S2IO=m CONFIG_MYRI10GE=m CONFIG_MYRI10GE_DCA=y CONFIG_NETXEN_NIC=m CONFIG_NIU=m CONFIG_MLX4_EN=m CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_TEHUTI=m CONFIG_QLGE=m CONFIG_SFC=m CONFIG_SFC_MTD=y CONFIG_BE2NET=m CONFIG_TR=y CONFIG_IBMOL=m CONFIG_TMS380TR=m CONFIG_TMSPCI=m CONFIG_ABYSS=m # # Wireless LAN # CONFIG_WLAN_PRE80211=y CONFIG_STRIP=m CONFIG_PCMCIA_WAVELAN=m CONFIG_PCMCIA_NETWAVE=m CONFIG_WLAN_80211=y CONFIG_PCMCIA_RAYCS=m CONFIG_LIBERTAS=m CONFIG_LIBERTAS_USB=m CONFIG_LIBERTAS_CS=m CONFIG_LIBERTAS_SDIO=m # CONFIG_LIBERTAS_DEBUG is not set CONFIG_LIBERTAS_THINFIRM=m CONFIG_LIBERTAS_THINFIRM_USB=m CONFIG_AIRO=m CONFIG_HERMES=m CONFIG_HERMES_CACHE_FW_ON_INIT=y CONFIG_PLX_HERMES=m CONFIG_TMD_HERMES=m CONFIG_NORTEL_HERMES=m CONFIG_PCI_HERMES=m CONFIG_PCMCIA_HERMES=m CONFIG_PCMCIA_SPECTRUM=m CONFIG_ATMEL=m CONFIG_PCI_ATMEL=m CONFIG_PCMCIA_ATMEL=m CONFIG_AIRO_CS=m CONFIG_PCMCIA_WL3501=m # CONFIG_PRISM54 is not set CONFIG_USB_ZD1201=m CONFIG_USB_NET_RNDIS_WLAN=m CONFIG_RTL8180=m CONFIG_RTL8187=m CONFIG_ADM8211=m CONFIG_MAC80211_HWSIM=m CONFIG_P54_COMMON=m CONFIG_P54_USB=m CONFIG_P54_PCI=m CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set CONFIG_ATH9K=m # CONFIG_ATH9K_DEBUG is not set # CONFIG_IPW2100 is not set CONFIG_IPW2200=m CONFIG_IPW2200_MONITOR=y CONFIG_IPW2200_RADIOTAP=y CONFIG_IPW2200_PROMISCUOUS=y CONFIG_IPW2200_QOS=y # CONFIG_IPW2200_DEBUG is not set CONFIG_LIBIPW=m # CONFIG_LIBIPW_DEBUG is not set CONFIG_IWLWIFI=m CONFIG_IWLCORE=m CONFIG_IWLWIFI_LEDS=y CONFIG_IWLWIFI_RFKILL=y # CONFIG_IWLWIFI_DEBUG is not set CONFIG_IWLAGN=m CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y CONFIG_IWLAGN_LEDS=y CONFIG_IWL4965=y CONFIG_IWL5000=y CONFIG_IWL3945=m CONFIG_IWL3945_RFKILL=y CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y CONFIG_IWL3945_LEDS=y # CONFIG_IWL3945_DEBUG is not set CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y # CONFIG_HOSTAP_FIRMWARE_NVRAM is not set CONFIG_HOSTAP_PLX=m CONFIG_HOSTAP_PCI=m CONFIG_HOSTAP_CS=m CONFIG_B43=m 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 is not set CONFIG_B43LEGACY=m 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=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_RT2X00=m CONFIG_RT2400PCI=m CONFIG_RT2500PCI=m CONFIG_RT61PCI=m CONFIG_RT2500USB=m CONFIG_RT73USB=m CONFIG_RT2X00_LIB_PCI=m CONFIG_RT2X00_LIB_USB=m CONFIG_RT2X00_LIB=m CONFIG_RT2X00_LIB_FIRMWARE=y CONFIG_RT2X00_LIB_CRYPTO=y CONFIG_RT2X00_LIB_RFKILL=y CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set # # WiMAX Wireless Broadband devices # CONFIG_WIMAX_I2400M=m CONFIG_WIMAX_I2400M_USB=m CONFIG_WIMAX_I2400M_SDIO=m CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 # # USB Network Adapters # CONFIG_USB_CATC=m CONFIG_USB_KAWETH=m CONFIG_USB_PEGASUS=m CONFIG_USB_RTL8150=m CONFIG_USB_USBNET=m CONFIG_USB_NET_AX8817X=m CONFIG_USB_NET_CDCETHER=m CONFIG_USB_NET_DM9601=m CONFIG_USB_NET_SMSC95XX=m CONFIG_USB_NET_GL620A=m CONFIG_USB_NET_NET1080=m CONFIG_USB_NET_PLUSB=m CONFIG_USB_NET_MCS7830=m CONFIG_USB_NET_RNDIS_HOST=m CONFIG_USB_NET_CDC_SUBSET=m 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=m CONFIG_USB_HSO=m CONFIG_NET_PCMCIA=y CONFIG_PCMCIA_3C589=m CONFIG_PCMCIA_3C574=m CONFIG_PCMCIA_FMVJ18X=m CONFIG_PCMCIA_PCNET=m CONFIG_PCMCIA_NMCLAN=m CONFIG_PCMCIA_SMC91C92=m CONFIG_PCMCIA_XIRC2PS=m CONFIG_PCMCIA_AXNET=m CONFIG_ARCNET_COM20020_CS=m CONFIG_PCMCIA_IBMTR=m CONFIG_WAN=y CONFIG_LANMEDIA=m CONFIG_HDLC=m CONFIG_HDLC_RAW=m CONFIG_HDLC_RAW_ETH=m CONFIG_HDLC_CISCO=m CONFIG_HDLC_FR=m CONFIG_HDLC_PPP=m CONFIG_HDLC_X25=m CONFIG_PCI200SYN=m CONFIG_WANXL=m # CONFIG_PC300TOO is not set CONFIG_FARSYNC=m CONFIG_DSCC4=m CONFIG_DSCC4_PCISYNC=y CONFIG_DSCC4_PCI_RST=y CONFIG_DLCI=m CONFIG_DLCI_MAX=8 CONFIG_WAN_ROUTER_DRIVERS=m CONFIG_CYCLADES_SYNC=m CONFIG_CYCLOMX_X25=y CONFIG_LAPBETHER=m CONFIG_X25_ASY=m CONFIG_SBNI=m # CONFIG_SBNI_MULTILINE is not set CONFIG_ATM_DRIVERS=y CONFIG_ATM_DUMMY=m CONFIG_ATM_TCP=m CONFIG_ATM_LANAI=m CONFIG_ATM_ENI=m # CONFIG_ATM_ENI_DEBUG is not set # CONFIG_ATM_ENI_TUNE_BURST is not set CONFIG_ATM_FIRESTREAM=m CONFIG_ATM_ZATM=m # CONFIG_ATM_ZATM_DEBUG is not set CONFIG_ATM_IDT77252=m # CONFIG_ATM_IDT77252_DEBUG is not set # CONFIG_ATM_IDT77252_RCV_ALL is not set CONFIG_ATM_IDT77252_USE_SUNI=y CONFIG_ATM_AMBASSADOR=m # CONFIG_ATM_AMBASSADOR_DEBUG is not set CONFIG_ATM_HORIZON=m # CONFIG_ATM_HORIZON_DEBUG is not set CONFIG_ATM_IA=m # CONFIG_ATM_IA_DEBUG is not set CONFIG_ATM_FORE200E=m # CONFIG_ATM_FORE200E_USE_TASKLET is not set CONFIG_ATM_FORE200E_TX_RETRY=16 CONFIG_ATM_FORE200E_DEBUG=0 CONFIG_ATM_HE=m CONFIG_ATM_HE_USE_SUNI=y CONFIG_ATM_SOLOS=m CONFIG_XEN_NETDEV_FRONTEND=m CONFIG_FDDI=y CONFIG_DEFXX=m # CONFIG_DEFXX_MMIO is not set CONFIG_SKFP=m CONFIG_HIPPI=y CONFIG_ROADRUNNER=m # CONFIG_ROADRUNNER_LARGE_RINGS is not set CONFIG_PLIP=m CONFIG_PPP=m CONFIG_PPP_MULTILINK=y CONFIG_PPP_FILTER=y CONFIG_PPP_ASYNC=m CONFIG_PPP_SYNC_TTY=m CONFIG_PPP_DEFLATE=m CONFIG_PPP_BSDCOMP=m CONFIG_PPP_MPPE=m CONFIG_PPPOE=m CONFIG_PPPOATM=m CONFIG_PPPOL2TP=m CONFIG_SLIP=m CONFIG_SLIP_COMPRESSED=y CONFIG_SLHC=m CONFIG_SLIP_SMART=y CONFIG_SLIP_MODE_SLIP6=y CONFIG_NET_FC=y CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETPOLL=y # CONFIG_NETPOLL_TRAP is not set CONFIG_NET_POLL_CONTROLLER=y CONFIG_VIRTIO_NET=m CONFIG_ISDN=y CONFIG_MISDN=m CONFIG_MISDN_DSP=m CONFIG_MISDN_L1OIP=m # # mISDN hardware drivers # CONFIG_MISDN_HFCPCI=m CONFIG_MISDN_HFCMULTI=m CONFIG_MISDN_HFCUSB=m CONFIG_ISDN_I4L=m CONFIG_ISDN_PPP=y CONFIG_ISDN_PPP_VJ=y CONFIG_ISDN_MPP=y CONFIG_IPPP_FILTER=y CONFIG_ISDN_PPP_BSDCOMP=m CONFIG_ISDN_AUDIO=y CONFIG_ISDN_TTY_FAX=y CONFIG_ISDN_X25=y # # ISDN feature submodules # CONFIG_ISDN_DIVERSION=m # # ISDN4Linux hardware drivers # # # Passive cards # CONFIG_ISDN_DRV_HISAX=m # # D-channel protocol features # CONFIG_HISAX_EURO=y CONFIG_DE_AOC=y # CONFIG_HISAX_NO_SENDCOMPLETE is not set # CONFIG_HISAX_NO_LLC is not set # CONFIG_HISAX_NO_KEYPAD is not set CONFIG_HISAX_1TR6=y CONFIG_HISAX_NI1=y CONFIG_HISAX_MAX_CARDS=8 # # HiSax supported cards # CONFIG_HISAX_16_3=y CONFIG_HISAX_TELESPCI=y CONFIG_HISAX_S0BOX=y CONFIG_HISAX_FRITZPCI=y CONFIG_HISAX_AVM_A1_PCMCIA=y CONFIG_HISAX_ELSA=y CONFIG_HISAX_DIEHLDIVA=y CONFIG_HISAX_SEDLBAUER=y CONFIG_HISAX_NETJET=y CONFIG_HISAX_NETJET_U=y CONFIG_HISAX_NICCY=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 is not set # # HiSax PCMCIA card service modules # CONFIG_HISAX_SEDLBAUER_CS=m CONFIG_HISAX_ELSA_CS=m CONFIG_HISAX_AVM_A1_CS=m CONFIG_HISAX_TELES_CS=m # # HiSax sub driver modules # CONFIG_HISAX_ST5481=m CONFIG_HISAX_HFCUSB=m CONFIG_HISAX_HFC4S8S=m CONFIG_HISAX_FRITZ_PCIPNP=m CONFIG_HISAX_HDLC=y # # Active cards # CONFIG_HYSDN=m CONFIG_HYSDN_CAPI=y CONFIG_ISDN_DRV_GIGASET=m CONFIG_GIGASET_BASE=m CONFIG_GIGASET_M105=m CONFIG_GIGASET_M101=m # CONFIG_GIGASET_DEBUG is not set # CONFIG_GIGASET_UNDOCREQ is not set CONFIG_ISDN_CAPI=m CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y CONFIG_CAPI_TRACE=y CONFIG_ISDN_CAPI_MIDDLEWARE=y CONFIG_ISDN_CAPI_CAPI20=m CONFIG_ISDN_CAPI_CAPIFS_BOOL=y CONFIG_ISDN_CAPI_CAPIFS=m CONFIG_ISDN_CAPI_CAPIDRV=m # # CAPI hardware drivers # CONFIG_CAPI_AVM=y CONFIG_ISDN_DRV_AVMB1_B1PCI=m CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m CONFIG_ISDN_DRV_AVMB1_AVM_CS=m CONFIG_ISDN_DRV_AVMB1_T1PCI=m CONFIG_ISDN_DRV_AVMB1_C4=m CONFIG_CAPI_EICON=y CONFIG_ISDN_DIVAS=m CONFIG_ISDN_DIVAS_BRIPCI=y CONFIG_ISDN_DIVAS_PRIPCI=y CONFIG_ISDN_DIVAS_DIVACAPI=m CONFIG_ISDN_DIVAS_USERIDI=m CONFIG_ISDN_DIVAS_MAINT=m CONFIG_PHONE=m CONFIG_PHONE_IXJ=m CONFIG_PHONE_IXJ_PCMCIA=m # # Input device support # CONFIG_INPUT=y CONFIG_INPUT_FF_MEMLESS=m CONFIG_INPUT_POLLDEV=m # # 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=m CONFIG_INPUT_EVDEV=m # CONFIG_INPUT_EVBUG is not set CONFIG_XEN_KBDDEV_FRONTEND=y # # Input Device Drivers # CONFIG_INPUT_KEYBOARD=y CONFIG_KEYBOARD_ATKBD=y CONFIG_KEYBOARD_SUNKBD=m CONFIG_KEYBOARD_LKKBD=m CONFIG_KEYBOARD_XTKBD=m CONFIG_KEYBOARD_NEWTON=m CONFIG_KEYBOARD_STOWAWAY=m CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=m 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 is not set # CONFIG_MOUSE_PS2_TOUCHKIT is not set CONFIG_MOUSE_SERIAL=m CONFIG_MOUSE_APPLETOUCH=m CONFIG_MOUSE_BCM5974=m CONFIG_MOUSE_VSXXXAA=m CONFIG_INPUT_JOYSTICK=y CONFIG_JOYSTICK_ANALOG=m CONFIG_JOYSTICK_A3D=m CONFIG_JOYSTICK_ADI=m CONFIG_JOYSTICK_COBRA=m CONFIG_JOYSTICK_GF2K=m CONFIG_JOYSTICK_GRIP=m CONFIG_JOYSTICK_GRIP_MP=m CONFIG_JOYSTICK_GUILLEMOT=m CONFIG_JOYSTICK_INTERACT=m CONFIG_JOYSTICK_SIDEWINDER=m CONFIG_JOYSTICK_TMDC=m CONFIG_JOYSTICK_IFORCE=m CONFIG_JOYSTICK_IFORCE_USB=y CONFIG_JOYSTICK_IFORCE_232=y CONFIG_JOYSTICK_WARRIOR=m CONFIG_JOYSTICK_MAGELLAN=m CONFIG_JOYSTICK_SPACEORB=m CONFIG_JOYSTICK_SPACEBALL=m CONFIG_JOYSTICK_STINGER=m CONFIG_JOYSTICK_TWIDJOY=m CONFIG_JOYSTICK_ZHENHUA=m CONFIG_JOYSTICK_DB9=m CONFIG_JOYSTICK_GAMECON=m CONFIG_JOYSTICK_TURBOGRAFX=m CONFIG_JOYSTICK_JOYDUMP=m CONFIG_JOYSTICK_XPAD=m CONFIG_JOYSTICK_XPAD_FF=y CONFIG_JOYSTICK_XPAD_LEDS=y CONFIG_JOYSTICK_WALKERA0701=m CONFIG_INPUT_TABLET=y CONFIG_TABLET_USB_ACECAD=m CONFIG_TABLET_USB_AIPTEK=m CONFIG_TABLET_USB_GTCO=m CONFIG_TABLET_USB_KBTAB=m CONFIG_TABLET_USB_WACOM=m CONFIG_INPUT_TOUCHSCREEN=y CONFIG_TOUCHSCREEN_ADS7846=m CONFIG_TOUCHSCREEN_FUJITSU=m CONFIG_TOUCHSCREEN_GUNZE=m CONFIG_TOUCHSCREEN_ELO=m CONFIG_TOUCHSCREEN_WACOM_W8001=m CONFIG_TOUCHSCREEN_MTOUCH=m CONFIG_TOUCHSCREEN_INEXIO=m CONFIG_TOUCHSCREEN_MK712=m CONFIG_TOUCHSCREEN_PENMOUNT=m CONFIG_TOUCHSCREEN_TOUCHRIGHT=m CONFIG_TOUCHSCREEN_TOUCHWIN=m CONFIG_TOUCHSCREEN_WM97XX=m CONFIG_TOUCHSCREEN_WM9705=y CONFIG_TOUCHSCREEN_WM9712=y CONFIG_TOUCHSCREEN_WM9713=y CONFIG_TOUCHSCREEN_USB_COMPOSITE=m 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=m CONFIG_TOUCHSCREEN_TSC2007=m CONFIG_INPUT_MISC=y CONFIG_INPUT_PCSPKR=m CONFIG_INPUT_APANEL=m CONFIG_INPUT_ATLAS_BTNS=m CONFIG_INPUT_ATI_REMOTE=m CONFIG_INPUT_ATI_REMOTE2=m CONFIG_INPUT_KEYSPAN_REMOTE=m CONFIG_INPUT_POWERMATE=m CONFIG_INPUT_YEALINK=m CONFIG_INPUT_CM109=m CONFIG_INPUT_UINPUT=m CONFIG_INPUT_PCF50633_PMU=m # # Hardware I/O ports # CONFIG_SERIO=y CONFIG_SERIO_I8042=y CONFIG_SERIO_SERPORT=m CONFIG_SERIO_CT82C710=m CONFIG_SERIO_PARKBD=m CONFIG_SERIO_PCIPS2=m CONFIG_SERIO_LIBPS2=y CONFIG_SERIO_RAW=m CONFIG_GAMEPORT=m CONFIG_GAMEPORT_NS558=m CONFIG_GAMEPORT_L4=m CONFIG_GAMEPORT_EMU10K1=m CONFIG_GAMEPORT_FM801=m # # Character devices # CONFIG_VT=y CONFIG_CONSOLE_TRANSLATIONS=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y # CONFIG_VT_HW_CONSOLE_BINDING is not set CONFIG_DEVKMEM=y CONFIG_SERIAL_NONSTANDARD=y CONFIG_COMPUTONE=m CONFIG_ROCKETPORT=m CONFIG_CYCLADES=m # CONFIG_CYZ_INTR is not set CONFIG_DIGIEPCA=m CONFIG_MOXA_INTELLIO=m CONFIG_MOXA_SMARTIO=m CONFIG_ISI=m CONFIG_SYNCLINK=m CONFIG_SYNCLINKMP=m CONFIG_SYNCLINK_GT=m CONFIG_N_HDLC=m CONFIG_RISCOM8=m CONFIG_SPECIALIX=m CONFIG_SX=m CONFIG_RIO=m CONFIG_RIO_OLDPCI=y CONFIG_STALDRV=y # CONFIG_STALLION is not set # CONFIG_ISTALLION is not set CONFIG_NOZOMI=m # # 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=m CONFIG_SERIAL_8250_NR_UARTS=32 CONFIG_SERIAL_8250_RUNTIME_UARTS=4 CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_MANY_PORTS=y CONFIG_SERIAL_8250_SHARE_IRQ=y # CONFIG_SERIAL_8250_DETECT_IRQ is not set CONFIG_SERIAL_8250_RSA=y # # Non-8250 serial port support # CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_JSM=m CONFIG_UNIX98_PTYS=y CONFIG_DEVPTS_MULTIPLE_INSTANCES=y # CONFIG_LEGACY_PTYS is not set CONFIG_PRINTER=m # CONFIG_LP_CONSOLE is not set CONFIG_PPDEV=m CONFIG_HVC_DRIVER=y CONFIG_HVC_IRQ=y CONFIG_HVC_XEN=y CONFIG_VIRTIO_CONSOLE=m CONFIG_IPMI_HANDLER=m # CONFIG_IPMI_PANIC_EVENT is not set CONFIG_IPMI_DEVICE_INTERFACE=m CONFIG_IPMI_SI=m CONFIG_IPMI_WATCHDOG=m CONFIG_IPMI_POWEROFF=m CONFIG_HW_RANDOM=m CONFIG_HW_RANDOM_INTEL=m CONFIG_HW_RANDOM_AMD=m CONFIG_HW_RANDOM_VIRTIO=m CONFIG_NVRAM=m CONFIG_R3964=m CONFIG_APPLICOM=m # # PCMCIA character devices # CONFIG_SYNCLINK_CS=m CONFIG_CARDMAN_4000=m CONFIG_CARDMAN_4040=m CONFIG_IPWIRELESS=m CONFIG_MWAVE=m CONFIG_PC8736x_GPIO=m CONFIG_NSC_GPIO=m CONFIG_RAW_DRIVER=m CONFIG_MAX_RAW_DEVS=256 CONFIG_HPET=y CONFIG_HPET_MMAP=y CONFIG_HANGCHECK_TIMER=m CONFIG_TCG_TPM=m CONFIG_TCG_TIS=m CONFIG_TCG_NSC=m CONFIG_TCG_ATMEL=m CONFIG_TCG_INFINEON=m CONFIG_TELCLOCK=m CONFIG_DEVPORT=y CONFIG_I2C=m CONFIG_I2C_BOARDINFO=y CONFIG_I2C_CHARDEV=m CONFIG_I2C_HELPER_AUTO=y CONFIG_I2C_ALGOBIT=m CONFIG_I2C_ALGOPCA=m # # I2C Hardware Bus support # # # PC SMBus host controller drivers # CONFIG_I2C_ALI1535=m CONFIG_I2C_ALI1563=m CONFIG_I2C_ALI15X3=m CONFIG_I2C_AMD756=m CONFIG_I2C_AMD756_S4882=m CONFIG_I2C_AMD8111=m CONFIG_I2C_I801=m CONFIG_I2C_ISCH=m CONFIG_I2C_PIIX4=m CONFIG_I2C_NFORCE2=m CONFIG_I2C_NFORCE2_S4985=m CONFIG_I2C_SIS5595=m CONFIG_I2C_SIS630=m CONFIG_I2C_SIS96X=m CONFIG_I2C_VIA=m CONFIG_I2C_VIAPRO=m # # I2C system bus drivers (mostly embedded / system-on-chip) # CONFIG_I2C_OCORES=m CONFIG_I2C_SIMTEC=m # # External I2C/SMBus adapter drivers # CONFIG_I2C_PARPORT=m CONFIG_I2C_PARPORT_LIGHT=m CONFIG_I2C_TAOS_EVM=m CONFIG_I2C_TINY_USB=m # # Graphics adapter I2C/DDC channel drivers # CONFIG_I2C_VOODOO3=m # # Other I2C/SMBus bus drivers # CONFIG_I2C_PCA_PLATFORM=m CONFIG_I2C_STUB=m # # Miscellaneous I2C Chip support # CONFIG_DS1682=m CONFIG_SENSORS_PCF8574=m CONFIG_PCF8575=m CONFIG_SENSORS_PCA9539=m CONFIG_SENSORS_PCF8591=m CONFIG_SENSORS_MAX6875=m CONFIG_SENSORS_TSL2550=m # CONFIG_I2C_DEBUG_CORE is not set # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set # CONFIG_I2C_DEBUG_CHIP is not set CONFIG_SPI=y # CONFIG_SPI_DEBUG is not set CONFIG_SPI_MASTER=y # # SPI Master Controller Drivers # CONFIG_SPI_BITBANG=m CONFIG_SPI_BUTTERFLY=m CONFIG_SPI_LM70_LLP=m # # SPI Protocol Masters # # CONFIG_SPI_SPIDEV is not set CONFIG_SPI_TLE62X0=m CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y # CONFIG_GPIOLIB is not set CONFIG_W1=m CONFIG_W1_CON=y # # 1-wire Bus Masters # CONFIG_W1_MASTER_MATROX=m CONFIG_W1_MASTER_DS2490=m CONFIG_W1_MASTER_DS2482=m # # 1-wire Slaves # CONFIG_W1_SLAVE_THERM=m CONFIG_W1_SLAVE_SMEM=m CONFIG_W1_SLAVE_DS2431=m CONFIG_W1_SLAVE_DS2433=m # CONFIG_W1_SLAVE_DS2433_CRC is not set CONFIG_W1_SLAVE_DS2760=m CONFIG_W1_SLAVE_BQ27000=m CONFIG_POWER_SUPPLY=y # CONFIG_POWER_SUPPLY_DEBUG is not set CONFIG_PDA_POWER=m CONFIG_WM8350_POWER=m CONFIG_BATTERY_DS2760=m CONFIG_BATTERY_BQ27x00=m CONFIG_CHARGER_PCF50633=m CONFIG_HWMON=y CONFIG_HWMON_VID=m CONFIG_SENSORS_ABITUGURU=m CONFIG_SENSORS_ABITUGURU3=m CONFIG_SENSORS_AD7414=m CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADCXX=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m CONFIG_SENSORS_ADT7462=m CONFIG_SENSORS_ADT7470=m CONFIG_SENSORS_ADT7473=m CONFIG_SENSORS_ADT7475=m CONFIG_SENSORS_K8TEMP=m CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS1621=m CONFIG_SENSORS_I5K_AMB=m CONFIG_SENSORS_F71805F=m CONFIG_SENSORS_F71882FG=m CONFIG_SENSORS_F75375S=m CONFIG_SENSORS_FSCHER=m CONFIG_SENSORS_FSCPOS=m CONFIG_SENSORS_FSCHMD=m # CONFIG_SENSORS_G760A is not set CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m CONFIG_SENSORS_CORETEMP=m CONFIG_SENSORS_IBMAEM=m CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM70=m CONFIG_SENSORS_LM75=m CONFIG_SENSORS_LM77=m CONFIG_SENSORS_LM78=m CONFIG_SENSORS_LM80=m CONFIG_SENSORS_LM83=m CONFIG_SENSORS_LM85=m CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m CONFIG_SENSORS_LM93=m CONFIG_SENSORS_LTC4245=m CONFIG_SENSORS_MAX1111=m CONFIG_SENSORS_MAX1619=m CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_SIS5595=m CONFIG_SENSORS_DME1737=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m CONFIG_SENSORS_ADS7828=m CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_VIA686A=m CONFIG_SENSORS_VT1211=m CONFIG_SENSORS_VT8231=m CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83791D=m CONFIG_SENSORS_W83792D=m CONFIG_SENSORS_W83793=m CONFIG_SENSORS_W83L785TS=m CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_HDAPS=m CONFIG_SENSORS_LIS3LV02D=m CONFIG_SENSORS_APPLESMC=m # CONFIG_HWMON_DEBUG_CHIP is not set CONFIG_THERMAL=m CONFIG_THERMAL_HWMON=y CONFIG_WATCHDOG=y # CONFIG_WATCHDOG_NOWAYOUT is not set # # Watchdog Device Drivers # CONFIG_SOFT_WATCHDOG=m CONFIG_WM8350_WATCHDOG=m CONFIG_ACQUIRE_WDT=m CONFIG_ADVANTECH_WDT=m CONFIG_ALIM1535_WDT=m CONFIG_ALIM7101_WDT=m CONFIG_SC520_WDT=m CONFIG_EUROTECH_WDT=m CONFIG_IB700_WDT=m CONFIG_IBMASR=m CONFIG_WAFER_WDT=m CONFIG_I6300ESB_WDT=m CONFIG_ITCO_WDT=m # CONFIG_ITCO_VENDOR_SUPPORT is not set CONFIG_IT8712F_WDT=m CONFIG_IT87_WDT=m CONFIG_HP_WATCHDOG=m CONFIG_SC1200_WDT=m CONFIG_PC87413_WDT=m CONFIG_60XX_WDT=m CONFIG_SBC8360_WDT=m CONFIG_CPU5_WDT=m CONFIG_SMSC_SCH311X_WDT=m CONFIG_SMSC37B787_WDT=m CONFIG_W83627HF_WDT=m CONFIG_W83697HF_WDT=m CONFIG_W83697UG_WDT=m CONFIG_W83877F_WDT=m CONFIG_W83977F_WDT=m CONFIG_MACHZ_WDT=m CONFIG_SBC_EPX_C3_WATCHDOG=m # # PCI-based Watchdog Cards # CONFIG_PCIPCWATCHDOG=m CONFIG_WDTPCI=m CONFIG_WDT_501_PCI=y # # USB-based Watchdog Cards # CONFIG_USBPCWATCHDOG=m CONFIG_SSB_POSSIBLE=y # # Sonics Silicon Backplane # CONFIG_SSB=m 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_DEBUG is not set CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y CONFIG_SSB_DRIVER_PCICORE=y # # Multifunction device drivers # CONFIG_MFD_CORE=m CONFIG_MFD_SM501=m CONFIG_HTC_PASIC3=m # CONFIG_MFD_TMIO is not set CONFIG_MFD_WM8400=m CONFIG_MFD_WM8350=m CONFIG_MFD_WM8350_I2C=m CONFIG_MFD_PCF50633=m CONFIG_PCF50633_ADC=m CONFIG_PCF50633_GPIO=m CONFIG_REGULATOR=y # CONFIG_REGULATOR_DEBUG is not set # CONFIG_REGULATOR_FIXED_VOLTAGE is not set # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set CONFIG_REGULATOR_BQ24022=m CONFIG_REGULATOR_WM8350=m CONFIG_REGULATOR_WM8400=m CONFIG_REGULATOR_PCF50633=m # # Multimedia devices # # # Multimedia core support # CONFIG_VIDEO_DEV=m CONFIG_VIDEO_V4L2_COMMON=m CONFIG_VIDEO_ALLOW_V4L1=y CONFIG_VIDEO_V4L1_COMPAT=y CONFIG_DVB_CORE=m CONFIG_VIDEO_MEDIA=m # # Multimedia drivers # CONFIG_VIDEO_SAA7146=m CONFIG_VIDEO_SAA7146_VV=m CONFIG_MEDIA_ATTACH=y CONFIG_MEDIA_TUNER=m # CONFIG_MEDIA_TUNER_CUSTOMIZE is not set CONFIG_MEDIA_TUNER_SIMPLE=m CONFIG_MEDIA_TUNER_TDA8290=m CONFIG_MEDIA_TUNER_TDA827X=m CONFIG_MEDIA_TUNER_TDA18271=m CONFIG_MEDIA_TUNER_TDA9887=m CONFIG_MEDIA_TUNER_TEA5761=m CONFIG_MEDIA_TUNER_TEA5767=m CONFIG_MEDIA_TUNER_MT20XX=m CONFIG_MEDIA_TUNER_MT2060=m CONFIG_MEDIA_TUNER_MT2266=m CONFIG_MEDIA_TUNER_MT2131=m CONFIG_MEDIA_TUNER_QT1010=m CONFIG_MEDIA_TUNER_XC2028=m CONFIG_MEDIA_TUNER_XC5000=m CONFIG_MEDIA_TUNER_MXL5005S=m CONFIG_MEDIA_TUNER_MXL5007T=m CONFIG_VIDEO_V4L2=m CONFIG_VIDEO_V4L1=m CONFIG_VIDEOBUF_GEN=m CONFIG_VIDEOBUF_DMA_SG=m CONFIG_VIDEOBUF_VMALLOC=m CONFIG_VIDEOBUF_DVB=m CONFIG_VIDEO_BTCX=m CONFIG_VIDEO_IR=m CONFIG_VIDEO_TVEEPROM=m CONFIG_VIDEO_TUNER=m CONFIG_VIDEO_CAPTURE_DRIVERS=y # CONFIG_VIDEO_ADV_DEBUG is not set # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set CONFIG_VIDEO_HELPER_CHIPS_AUTO=y CONFIG_VIDEO_IR_I2C=m CONFIG_VIDEO_TVAUDIO=m CONFIG_VIDEO_TDA7432=m CONFIG_VIDEO_TDA9840=m CONFIG_VIDEO_TDA9875=m CONFIG_VIDEO_TEA6415C=m CONFIG_VIDEO_TEA6420=m CONFIG_VIDEO_MSP3400=m CONFIG_VIDEO_CS5345=m CONFIG_VIDEO_CS53L32A=m CONFIG_VIDEO_M52790=m CONFIG_VIDEO_WM8775=m CONFIG_VIDEO_WM8739=m CONFIG_VIDEO_VP27SMPX=m CONFIG_VIDEO_BT819=m CONFIG_VIDEO_BT856=m CONFIG_VIDEO_BT866=m CONFIG_VIDEO_KS0127=m CONFIG_VIDEO_OV7670=m CONFIG_VIDEO_SAA7110=m CONFIG_VIDEO_SAA7111=m CONFIG_VIDEO_SAA7114=m CONFIG_VIDEO_SAA711X=m CONFIG_VIDEO_SAA717X=m CONFIG_VIDEO_TVP5150=m CONFIG_VIDEO_VPX3220=m CONFIG_VIDEO_CX25840=m CONFIG_VIDEO_CX2341X=m CONFIG_VIDEO_SAA7127=m CONFIG_VIDEO_SAA7185=m CONFIG_VIDEO_ADV7170=m CONFIG_VIDEO_ADV7175=m CONFIG_VIDEO_UPD64031A=m CONFIG_VIDEO_UPD64083=m CONFIG_VIDEO_VIVI=m CONFIG_VIDEO_BT848=m CONFIG_VIDEO_BT848_DVB=y CONFIG_VIDEO_SAA6588=m CONFIG_VIDEO_BWQCAM=m CONFIG_VIDEO_CQCAM=m CONFIG_VIDEO_W9966=m CONFIG_VIDEO_CPIA=m CONFIG_VIDEO_CPIA_PP=m CONFIG_VIDEO_CPIA_USB=m CONFIG_VIDEO_CPIA2=m CONFIG_VIDEO_SAA5246A=m CONFIG_VIDEO_SAA5249=m CONFIG_VIDEO_STRADIS=m CONFIG_VIDEO_ZORAN=m CONFIG_VIDEO_ZORAN_DC30=m CONFIG_VIDEO_ZORAN_ZR36060=m CONFIG_VIDEO_ZORAN_BUZ=m CONFIG_VIDEO_ZORAN_DC10=m CONFIG_VIDEO_ZORAN_LML33=m CONFIG_VIDEO_ZORAN_LML33R10=m CONFIG_VIDEO_ZORAN_AVS6EYES=m CONFIG_VIDEO_MEYE=m CONFIG_VIDEO_SAA7134=m CONFIG_VIDEO_SAA7134_ALSA=m CONFIG_VIDEO_SAA7134_DVB=m CONFIG_VIDEO_MXB=m CONFIG_VIDEO_HEXIUM_ORION=m CONFIG_VIDEO_HEXIUM_GEMINI=m CONFIG_VIDEO_CX88=m CONFIG_VIDEO_CX88_ALSA=m CONFIG_VIDEO_CX88_BLACKBIRD=m CONFIG_VIDEO_CX88_DVB=m CONFIG_VIDEO_CX88_MPEG=m CONFIG_VIDEO_CX88_VP3054=m CONFIG_VIDEO_CX23885=m CONFIG_VIDEO_AU0828=m CONFIG_VIDEO_IVTV=m CONFIG_VIDEO_FB_IVTV=m CONFIG_VIDEO_CX18=m CONFIG_VIDEO_CAFE_CCIC=m CONFIG_SOC_CAMERA=m CONFIG_SOC_CAMERA_MT9M001=m CONFIG_SOC_CAMERA_MT9M111=m CONFIG_SOC_CAMERA_MT9T031=m CONFIG_SOC_CAMERA_MT9V022=m CONFIG_SOC_CAMERA_TW9910=m CONFIG_SOC_CAMERA_PLATFORM=m CONFIG_SOC_CAMERA_OV772X=m CONFIG_V4L_USB_DRIVERS=y CONFIG_USB_VIDEO_CLASS=m CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y CONFIG_USB_GSPCA=m CONFIG_USB_M5602=m CONFIG_USB_STV06XX=m CONFIG_USB_GSPCA_CONEX=m CONFIG_USB_GSPCA_ETOMS=m CONFIG_USB_GSPCA_FINEPIX=m CONFIG_USB_GSPCA_MARS=m CONFIG_USB_GSPCA_OV519=m CONFIG_USB_GSPCA_OV534=m CONFIG_USB_GSPCA_PAC207=m CONFIG_USB_GSPCA_PAC7311=m CONFIG_USB_GSPCA_SONIXB=m CONFIG_USB_GSPCA_SONIXJ=m CONFIG_USB_GSPCA_SPCA500=m CONFIG_USB_GSPCA_SPCA501=m CONFIG_USB_GSPCA_SPCA505=m CONFIG_USB_GSPCA_SPCA506=m CONFIG_USB_GSPCA_SPCA508=m CONFIG_USB_GSPCA_SPCA561=m CONFIG_USB_GSPCA_STK014=m CONFIG_USB_GSPCA_SUNPLUS=m CONFIG_USB_GSPCA_T613=m CONFIG_USB_GSPCA_TV8532=m CONFIG_USB_GSPCA_VC032X=m CONFIG_USB_GSPCA_ZC3XX=m CONFIG_VIDEO_PVRUSB2=m CONFIG_VIDEO_PVRUSB2_SYSFS=y CONFIG_VIDEO_PVRUSB2_DVB=y # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set CONFIG_VIDEO_EM28XX=m CONFIG_VIDEO_EM28XX_ALSA=m CONFIG_VIDEO_EM28XX_DVB=m CONFIG_VIDEO_USBVISION=m CONFIG_VIDEO_USBVIDEO=m CONFIG_USB_VICAM=m CONFIG_USB_IBMCAM=m CONFIG_USB_KONICAWC=m CONFIG_USB_QUICKCAM_MESSENGER=m CONFIG_USB_ET61X251=m CONFIG_VIDEO_OVCAMCHIP=m CONFIG_USB_W9968CF=m CONFIG_USB_OV511=m CONFIG_USB_SE401=m CONFIG_USB_SN9C102=m CONFIG_USB_STV680=m CONFIG_USB_ZC0301=m CONFIG_USB_PWC=m # CONFIG_USB_PWC_DEBUG is not set CONFIG_USB_ZR364XX=m CONFIG_USB_STKWEBCAM=m CONFIG_USB_S2255=m CONFIG_RADIO_ADAPTERS=y CONFIG_RADIO_GEMTEK_PCI=m CONFIG_RADIO_MAXIRADIO=m CONFIG_RADIO_MAESTRO=m CONFIG_USB_DSBR=m CONFIG_USB_SI470X=m CONFIG_USB_MR800=m CONFIG_RADIO_TEA5764=m # CONFIG_DVB_DYNAMIC_MINORS is not set CONFIG_DVB_CAPTURE_DRIVERS=y # # Supported SAA7146 based PCI Adapters # CONFIG_TTPCI_EEPROM=m CONFIG_DVB_AV7110=m CONFIG_DVB_AV7110_OSD=y CONFIG_DVB_BUDGET_CORE=m CONFIG_DVB_BUDGET=m CONFIG_DVB_BUDGET_CI=m CONFIG_DVB_BUDGET_AV=m CONFIG_DVB_BUDGET_PATCH=m # # Supported USB Adapters # CONFIG_DVB_USB=m # CONFIG_DVB_USB_DEBUG is not set CONFIG_DVB_USB_A800=m CONFIG_DVB_USB_DIBUSB_MB=m CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y CONFIG_DVB_USB_DIBUSB_MC=m CONFIG_DVB_USB_DIB0700=m CONFIG_DVB_USB_UMT_010=m CONFIG_DVB_USB_CXUSB=m CONFIG_DVB_USB_M920X=m CONFIG_DVB_USB_GL861=m CONFIG_DVB_USB_AU6610=m CONFIG_DVB_USB_DIGITV=m CONFIG_DVB_USB_VP7045=m CONFIG_DVB_USB_VP702X=m CONFIG_DVB_USB_GP8PSK=m CONFIG_DVB_USB_NOVA_T_USB2=m CONFIG_DVB_USB_TTUSB2=m CONFIG_DVB_USB_DTT200U=m CONFIG_DVB_USB_OPERA1=m CONFIG_DVB_USB_AF9005=m CONFIG_DVB_USB_AF9005_REMOTE=m CONFIG_DVB_USB_DW2102=m CONFIG_DVB_USB_CINERGY_T2=m CONFIG_DVB_USB_ANYSEE=m CONFIG_DVB_USB_DTV5100=m CONFIG_DVB_USB_AF9015=m CONFIG_DVB_TTUSB_BUDGET=m CONFIG_DVB_TTUSB_DEC=m CONFIG_DVB_SIANO_SMS1XXX=m CONFIG_DVB_SIANO_SMS1XXX_SMS_IDS=y # # Supported FlexCopII (B2C2) Adapters # CONFIG_DVB_B2C2_FLEXCOP=m CONFIG_DVB_B2C2_FLEXCOP_PCI=m CONFIG_DVB_B2C2_FLEXCOP_USB=m # CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set # # Supported BT878 Adapters # CONFIG_DVB_BT8XX=m # # Supported Pluto2 Adapters # CONFIG_DVB_PLUTO2=m # # Supported SDMC DM1105 Adapters # CONFIG_DVB_DM1105=m # # Supported DVB Frontends # # # Customise DVB Frontends # # CONFIG_DVB_FE_CUSTOMISE is not set # # Multistandard (satellite) frontends # CONFIG_DVB_STB0899=m CONFIG_DVB_STB6100=m # # DVB-S (satellite) frontends # CONFIG_DVB_CX24110=m CONFIG_DVB_CX24123=m CONFIG_DVB_MT312=m CONFIG_DVB_S5H1420=m CONFIG_DVB_STV0288=m CONFIG_DVB_STB6000=m CONFIG_DVB_STV0299=m CONFIG_DVB_TDA8083=m CONFIG_DVB_TDA10086=m CONFIG_DVB_TDA8261=m CONFIG_DVB_VES1X93=m CONFIG_DVB_TUNER_ITD1000=m CONFIG_DVB_TUNER_CX24113=m CONFIG_DVB_TDA826X=m CONFIG_DVB_TUA6100=m CONFIG_DVB_CX24116=m CONFIG_DVB_SI21XX=m # # DVB-T (terrestrial) frontends # CONFIG_DVB_SP8870=m CONFIG_DVB_SP887X=m CONFIG_DVB_CX22700=m CONFIG_DVB_CX22702=m CONFIG_DVB_DRX397XD=m CONFIG_DVB_L64781=m CONFIG_DVB_TDA1004X=m CONFIG_DVB_NXT6000=m CONFIG_DVB_MT352=m CONFIG_DVB_ZL10353=m CONFIG_DVB_DIB3000MB=m CONFIG_DVB_DIB3000MC=m CONFIG_DVB_DIB7000M=m CONFIG_DVB_DIB7000P=m CONFIG_DVB_TDA10048=m # # DVB-C (cable) frontends # CONFIG_DVB_VES1820=m CONFIG_DVB_TDA10021=m CONFIG_DVB_TDA10023=m CONFIG_DVB_STV0297=m # # ATSC (North American/Korean Terrestrial/Cable DTV) frontends # CONFIG_DVB_NXT200X=m CONFIG_DVB_OR51211=m CONFIG_DVB_OR51132=m CONFIG_DVB_BCM3510=m CONFIG_DVB_LGDT330X=m CONFIG_DVB_LGDT3304=m CONFIG_DVB_S5H1409=m CONFIG_DVB_AU8522=m CONFIG_DVB_S5H1411=m # # ISDB-T (terrestrial) frontends # CONFIG_DVB_S921=m # # Digital terrestrial only tuners/PLL # CONFIG_DVB_PLL=m CONFIG_DVB_TUNER_DIB0070=m # # SEC control devices for DVB-S # CONFIG_DVB_LNBP21=m CONFIG_DVB_ISL6405=m CONFIG_DVB_ISL6421=m CONFIG_DVB_LGS8GL5=m # # Tools to develop new frontends # CONFIG_DVB_DUMMY_FE=m CONFIG_DVB_AF9013=m CONFIG_DAB=y CONFIG_USB_DABUSB=m # # Graphics support # CONFIG_AGP=y CONFIG_AGP_AMD64=y CONFIG_AGP_INTEL=m CONFIG_AGP_SIS=m CONFIG_AGP_VIA=m CONFIG_DRM=m CONFIG_DRM_TDFX=m CONFIG_DRM_R128=m CONFIG_DRM_RADEON=m CONFIG_DRM_I810=m CONFIG_DRM_I830=m CONFIG_DRM_I915=m # CONFIG_DRM_I915_KMS is not set CONFIG_DRM_MGA=m CONFIG_DRM_SIS=m CONFIG_DRM_VIA=m CONFIG_DRM_SAVAGE=m CONFIG_VGASTATE=m CONFIG_VIDEO_OUTPUT_CONTROL=m CONFIG_FB=y CONFIG_FIRMWARE_EDID=y CONFIG_FB_DDC=m 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 is not set CONFIG_FB_SYS_FOPS=y CONFIG_FB_DEFERRED_IO=y CONFIG_FB_HECUBA=m CONFIG_FB_SVGALIB=m # 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=m CONFIG_FB_PM2=m CONFIG_FB_PM2_FIFO_DISCONNECT=y CONFIG_FB_CYBER2000=m CONFIG_FB_ARC=m # CONFIG_FB_ASILIANT is not set # CONFIG_FB_IMSTT is not set CONFIG_FB_VGA16=m CONFIG_FB_UVESA=m CONFIG_FB_VESA=y CONFIG_FB_EFI=y CONFIG_FB_N411=m CONFIG_FB_HGA=m # CONFIG_FB_HGA_ACCEL is not set CONFIG_FB_S1D13XXX=m CONFIG_FB_NVIDIA=m # CONFIG_FB_NVIDIA_I2C is not set # CONFIG_FB_NVIDIA_DEBUG is not set CONFIG_FB_NVIDIA_BACKLIGHT=y # CONFIG_FB_RIVA is not set CONFIG_FB_LE80578=m CONFIG_FB_CARILLO_RANCH=m CONFIG_FB_INTEL=m # CONFIG_FB_INTEL_DEBUG is not set CONFIG_FB_INTEL_I2C=y CONFIG_FB_MATROX=m CONFIG_FB_MATROX_MILLENIUM=y CONFIG_FB_MATROX_MYSTIQUE=y CONFIG_FB_MATROX_G=y CONFIG_FB_MATROX_I2C=m CONFIG_FB_MATROX_MAVEN=m CONFIG_FB_MATROX_MULTIHEAD=y CONFIG_FB_RADEON=m CONFIG_FB_RADEON_I2C=y CONFIG_FB_RADEON_BACKLIGHT=y # CONFIG_FB_RADEON_DEBUG is not set CONFIG_FB_ATY128=m CONFIG_FB_ATY128_BACKLIGHT=y CONFIG_FB_ATY=m CONFIG_FB_ATY_CT=y # CONFIG_FB_ATY_GENERIC_LCD is not set CONFIG_FB_ATY_GX=y CONFIG_FB_ATY_BACKLIGHT=y CONFIG_FB_S3=m CONFIG_FB_SAVAGE=m # CONFIG_FB_SAVAGE_I2C is not set # CONFIG_FB_SAVAGE_ACCEL is not set CONFIG_FB_SIS=m CONFIG_FB_SIS_300=y CONFIG_FB_SIS_315=y CONFIG_FB_VIA=m CONFIG_FB_NEOMAGIC=m CONFIG_FB_KYRO=m CONFIG_FB_3DFX=m # CONFIG_FB_3DFX_ACCEL is not set CONFIG_FB_VOODOO1=m CONFIG_FB_VT8623=m CONFIG_FB_TRIDENT=m # CONFIG_FB_TRIDENT_ACCEL is not set CONFIG_FB_ARK=m CONFIG_FB_PM3=m # CONFIG_FB_CARMINE is not set # CONFIG_FB_GEODE is not set # CONFIG_FB_TMIO is not set CONFIG_FB_SM501=m CONFIG_FB_VIRTUAL=m CONFIG_XEN_FBDEV_FRONTEND=y CONFIG_FB_METRONOME=m CONFIG_FB_MB862XX=m CONFIG_FB_MB862XX_PCI_GDC=y CONFIG_BACKLIGHT_LCD_SUPPORT=y # CONFIG_LCD_CLASS_DEVICE is not set CONFIG_BACKLIGHT_CLASS_DEVICE=y # CONFIG_BACKLIGHT_GENERIC is not set CONFIG_BACKLIGHT_PROGEAR=m CONFIG_BACKLIGHT_MBP_NVIDIA=m # CONFIG_BACKLIGHT_SAHARA is not set # # Display device support # CONFIG_DISPLAY_SUPPORT=m # # Display hardware drivers # # # Console display driver support # CONFIG_VGA_CONSOLE=y # CONFIG_VGACON_SOFT_SCROLLBACK is not set CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y # CONFIG_FONTS is not set CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y # CONFIG_LOGO is not set CONFIG_SOUND=m CONFIG_SOUND_OSS_CORE=y CONFIG_SND=m CONFIG_SND_TIMER=m CONFIG_SND_PCM=m CONFIG_SND_HWDEP=m CONFIG_SND_RAWMIDI=m CONFIG_SND_JACK=y CONFIG_SND_SEQUENCER=m CONFIG_SND_SEQ_DUMMY=m CONFIG_SND_OSSEMUL=y CONFIG_SND_MIXER_OSS=m CONFIG_SND_PCM_OSS=m CONFIG_SND_PCM_OSS_PLUGINS=y CONFIG_SND_SEQUENCER_OSS=y CONFIG_SND_HRTIMER=m CONFIG_SND_SEQ_HRTIMER_DEFAULT=y # CONFIG_SND_DYNAMIC_MINORS is not set CONFIG_SND_SUPPORT_OLD_API=y CONFIG_SND_VERBOSE_PROCFS=y # CONFIG_SND_VERBOSE_PRINTK is not set # CONFIG_SND_DEBUG is not set CONFIG_SND_VMASTER=y CONFIG_SND_MPU401_UART=m CONFIG_SND_OPL3_LIB=m CONFIG_SND_VX_LIB=m CONFIG_SND_AC97_CODEC=m CONFIG_SND_DRIVERS=y CONFIG_SND_PCSP=m CONFIG_SND_DUMMY=m CONFIG_SND_VIRMIDI=m CONFIG_SND_MTPAV=m CONFIG_SND_MTS64=m CONFIG_SND_SERIAL_U16550=m CONFIG_SND_MPU401=m CONFIG_SND_PORTMAN2X4=m CONFIG_SND_AC97_POWER_SAVE=y CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 CONFIG_SND_SB_COMMON=m CONFIG_SND_SB16_DSP=m CONFIG_SND_PCI=y CONFIG_SND_AD1889=m CONFIG_SND_ALS300=m CONFIG_SND_ALS4000=m CONFIG_SND_ALI5451=m CONFIG_SND_ATIIXP=m CONFIG_SND_ATIIXP_MODEM=m CONFIG_SND_AU8810=m CONFIG_SND_AU8820=m CONFIG_SND_AU8830=m # CONFIG_SND_AW2 is not set CONFIG_SND_AZT3328=m CONFIG_SND_BT87X=m # CONFIG_SND_BT87X_OVERCLOCK is not set CONFIG_SND_CA0106=m CONFIG_SND_CMIPCI=m CONFIG_SND_OXYGEN_LIB=m CONFIG_SND_OXYGEN=m CONFIG_SND_CS4281=m CONFIG_SND_CS5530=m CONFIG_SND_DARLA20=m CONFIG_SND_GINA20=m CONFIG_SND_LAYLA20=m CONFIG_SND_DARLA24=m CONFIG_SND_GINA24=m CONFIG_SND_LAYLA24=m CONFIG_SND_MONA=m CONFIG_SND_MIA=m CONFIG_SND_ECHO3G=m CONFIG_SND_INDIGO=m CONFIG_SND_INDIGOIO=m CONFIG_SND_INDIGODJ=m CONFIG_SND_EMU10K1=m CONFIG_SND_EMU10K1X=m CONFIG_SND_ENS1370=m CONFIG_SND_ENS1371=m CONFIG_SND_ES1938=m CONFIG_SND_ES1968=m CONFIG_SND_FM801=m CONFIG_SND_FM801_TEA575X_BOOL=y CONFIG_SND_FM801_TEA575X=m CONFIG_SND_HDA_INTEL=m 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=m CONFIG_SND_HDSPM=m CONFIG_SND_HIFIER=m CONFIG_SND_ICE1712=m CONFIG_SND_ICE1724=m CONFIG_SND_INTEL8X0=m CONFIG_SND_INTEL8X0M=m CONFIG_SND_KORG1212=m CONFIG_SND_MAESTRO3=m CONFIG_SND_MIXART=m CONFIG_SND_NM256=m CONFIG_SND_PCXHR=m CONFIG_SND_RIPTIDE=m CONFIG_SND_RME32=m CONFIG_SND_RME96=m CONFIG_SND_RME9652=m CONFIG_SND_SONICVIBES=m CONFIG_SND_TRIDENT=m CONFIG_SND_VIA82XX=m CONFIG_SND_VIA82XX_MODEM=m CONFIG_SND_VIRTUOSO=m CONFIG_SND_VX222=m CONFIG_SND_YMFPCI=m CONFIG_SND_SPI=y CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=m CONFIG_SND_USB_USX2Y=m CONFIG_SND_USB_CAIAQ=m CONFIG_SND_USB_CAIAQ_INPUT=y CONFIG_SND_USB_US122L=m CONFIG_SND_PCMCIA=y CONFIG_SND_VXPOCKET=m CONFIG_SND_PDAUDIOCF=m # CONFIG_SND_SOC is not set CONFIG_SOUND_PRIME=m CONFIG_SOUND_OSS=m # CONFIG_SOUND_TRACEINIT is not set # CONFIG_SOUND_DMAP is not set CONFIG_SOUND_SSCAPE=m CONFIG_SOUND_VMIDI=m CONFIG_SOUND_TRIX=m CONFIG_SOUND_MSS=m CONFIG_SOUND_MPU401=m CONFIG_SOUND_PAS=m CONFIG_SOUND_PSS=m CONFIG_PSS_MIXER=y CONFIG_SOUND_SB=m CONFIG_SOUND_YM3812=m CONFIG_SOUND_UART6850=m CONFIG_SOUND_AEDSP16=m CONFIG_SC6600=y CONFIG_SC6600_JOY=y CONFIG_SC6600_CDROM=4 CONFIG_SC6600_CDROMBASE=0x0 CONFIG_SOUND_KAHLUA=m CONFIG_AC97_BUS=m CONFIG_HID_SUPPORT=y CONFIG_HID=m # CONFIG_HID_DEBUG is not set CONFIG_HIDRAW=y # # USB Input Devices # CONFIG_USB_HID=m CONFIG_HID_PID=y CONFIG_USB_HIDDEV=y # # Special HID drivers # CONFIG_HID_COMPAT=y CONFIG_HID_A4TECH=m CONFIG_HID_APPLE=m CONFIG_HID_BELKIN=m CONFIG_HID_CHERRY=m CONFIG_HID_CHICONY=m CONFIG_HID_CYPRESS=m CONFIG_HID_EZKEY=m CONFIG_HID_GYRATION=m CONFIG_HID_LOGITECH=m CONFIG_LOGITECH_FF=y CONFIG_LOGIRUMBLEPAD2_FF=y CONFIG_HID_MICROSOFT=m CONFIG_HID_MONTEREY=m CONFIG_HID_NTRIG=m CONFIG_HID_PANTHERLORD=m CONFIG_PANTHERLORD_FF=y CONFIG_HID_PETALYNX=m CONFIG_HID_SAMSUNG=m CONFIG_HID_SONY=m CONFIG_HID_SUNPLUS=m CONFIG_GREENASIA_FF=m CONFIG_HID_TOPSEED=m CONFIG_THRUSTMASTER_FF=m CONFIG_ZEROPLUS_FF=m 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 is not set CONFIG_USB_ANNOUNCE_NEW_DEVICES=y # # Miscellaneous USB options # CONFIG_USB_DEVICEFS=y CONFIG_USB_DEVICE_CLASS=y # CONFIG_USB_DYNAMIC_MINORS is not set CONFIG_USB_SUSPEND=y # CONFIG_USB_OTG is not set CONFIG_USB_MON=y CONFIG_USB_WUSB=m CONFIG_USB_WUSB_CBAF=m # CONFIG_USB_WUSB_CBAF_DEBUG is not set # # USB Host Controller Drivers # CONFIG_USB_C67X00_HCD=m CONFIG_USB_EHCI_HCD=m CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_TT_NEWSCHED=y # CONFIG_USB_OXU210HP_HCD is not set CONFIG_USB_ISP116X_HCD=m # CONFIG_USB_ISP1760_HCD is not set CONFIG_USB_OHCI_HCD=m # CONFIG_USB_OHCI_HCD_SSB is not set # 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=m CONFIG_USB_U132_HCD=m CONFIG_USB_SL811_HCD=m CONFIG_USB_SL811_CS=m CONFIG_USB_R8A66597_HCD=m CONFIG_USB_WHCI_HCD=m CONFIG_USB_HWA_HCD=m # # USB Device Class drivers # CONFIG_USB_ACM=m CONFIG_USB_PRINTER=m CONFIG_USB_WDM=m CONFIG_USB_TMC=m # # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; # # # see USB_STORAGE Help for more information # CONFIG_USB_STORAGE=m # CONFIG_USB_STORAGE_DEBUG is not set CONFIG_USB_STORAGE_DATAFAB=y CONFIG_USB_STORAGE_FREECOM=y CONFIG_USB_STORAGE_ISD200=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=y # CONFIG_USB_LIBUSUAL is not set # # USB Imaging devices # CONFIG_USB_MDC800=m CONFIG_USB_MICROTEK=m # # USB port drivers # CONFIG_USB_USS720=m CONFIG_USB_SERIAL=m CONFIG_USB_EZUSB=y CONFIG_USB_SERIAL_GENERIC=y CONFIG_USB_SERIAL_AIRCABLE=m CONFIG_USB_SERIAL_ARK3116=m CONFIG_USB_SERIAL_BELKIN=m CONFIG_USB_SERIAL_CH341=m # CONFIG_USB_SERIAL_WHITEHEAT is not set CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m CONFIG_USB_SERIAL_CP2101=m CONFIG_USB_SERIAL_CYPRESS_M8=m CONFIG_USB_SERIAL_EMPEG=m CONFIG_USB_SERIAL_FTDI_SIO=m CONFIG_USB_SERIAL_FUNSOFT=m CONFIG_USB_SERIAL_VISOR=m CONFIG_USB_SERIAL_IPAQ=m CONFIG_USB_SERIAL_IR=m CONFIG_USB_SERIAL_EDGEPORT=m CONFIG_USB_SERIAL_EDGEPORT_TI=m CONFIG_USB_SERIAL_GARMIN=m CONFIG_USB_SERIAL_IPW=m CONFIG_USB_SERIAL_IUU=m CONFIG_USB_SERIAL_KEYSPAN_PDA=m CONFIG_USB_SERIAL_KEYSPAN=m CONFIG_USB_SERIAL_KLSI=m CONFIG_USB_SERIAL_KOBIL_SCT=m CONFIG_USB_SERIAL_MCT_U232=m CONFIG_USB_SERIAL_MOS7720=m CONFIG_USB_SERIAL_MOS7840=m CONFIG_USB_SERIAL_MOTOROLA=m CONFIG_USB_SERIAL_NAVMAN=m CONFIG_USB_SERIAL_PL2303=m CONFIG_USB_SERIAL_OTI6858=m CONFIG_USB_SERIAL_SPCP8X5=m CONFIG_USB_SERIAL_HP4X=m CONFIG_USB_SERIAL_SAFE=m # CONFIG_USB_SERIAL_SAFE_PADDED is not set CONFIG_USB_SERIAL_SIEMENS_MPI=m CONFIG_USB_SERIAL_SIERRAWIRELESS=m # CONFIG_USB_SERIAL_TI is not set CONFIG_USB_SERIAL_CYBERJACK=m CONFIG_USB_SERIAL_XIRCOM=m CONFIG_USB_SERIAL_OPTION=m CONFIG_USB_SERIAL_OMNINET=m CONFIG_USB_SERIAL_OPTICON=m CONFIG_USB_SERIAL_DEBUG=m # # USB Miscellaneous drivers # CONFIG_USB_EMI62=m CONFIG_USB_EMI26=m CONFIG_USB_ADUTUX=m CONFIG_USB_SEVSEG=m CONFIG_USB_RIO500=m CONFIG_USB_LEGOTOWER=m CONFIG_USB_LCD=m CONFIG_USB_BERRY_CHARGE=m CONFIG_USB_LED=m CONFIG_USB_CYPRESS_CY7C63=m CONFIG_USB_CYTHERM=m CONFIG_USB_PHIDGET=m CONFIG_USB_PHIDGETKIT=m CONFIG_USB_PHIDGETMOTORCONTROL=m CONFIG_USB_PHIDGETSERVO=m CONFIG_USB_IDMOUSE=m CONFIG_USB_FTDI_ELAN=m CONFIG_USB_APPLEDISPLAY=m CONFIG_USB_SISUSBVGA=m CONFIG_USB_SISUSBVGA_CON=y CONFIG_USB_LD=m CONFIG_USB_TRANCEVIBRATOR=m CONFIG_USB_IOWARRIOR=m CONFIG_USB_TEST=m CONFIG_USB_ISIGHTFW=m CONFIG_USB_VST=m CONFIG_USB_ATM=m CONFIG_USB_SPEEDTOUCH=m CONFIG_USB_CXACRU=m CONFIG_USB_UEAGLEATM=m CONFIG_USB_XUSBATM=m # CONFIG_USB_GADGET is not set # # OTG and related infrastructure # CONFIG_UWB=m CONFIG_UWB_HWA=m CONFIG_UWB_WHCI=m CONFIG_UWB_WLP=m CONFIG_UWB_I1480U=m CONFIG_UWB_I1480U_WLP=m CONFIG_MMC=m # CONFIG_MMC_DEBUG is not set # CONFIG_MMC_UNSAFE_RESUME is not set # # MMC/SD/SDIO Card Drivers # CONFIG_MMC_BLOCK=m CONFIG_MMC_BLOCK_BOUNCE=y CONFIG_SDIO_UART=m # CONFIG_MMC_TEST is not set # # MMC/SD/SDIO Host Controller Drivers # CONFIG_MMC_SDHCI=m CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_RICOH_MMC=m CONFIG_MMC_WBSD=m CONFIG_MMC_TIFM_SD=m CONFIG_MMC_SPI=m CONFIG_MMC_SDRICOH_CS=m CONFIG_MEMSTICK=m # CONFIG_MEMSTICK_DEBUG is not set # # MemoryStick drivers # # CONFIG_MEMSTICK_UNSAFE_RESUME is not set CONFIG_MSPRO_BLOCK=m # # MemoryStick Host Controller Drivers # CONFIG_MEMSTICK_TIFM_MS=m CONFIG_MEMSTICK_JMICRON_38X=m CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=m # # LED drivers # CONFIG_LEDS_ALIX2=m CONFIG_LEDS_PCA9532=m CONFIG_LEDS_CLEVO_MAIL=m CONFIG_LEDS_PCA955X=m CONFIG_LEDS_WM8350=m # # LED Triggers # CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=m CONFIG_LEDS_TRIGGER_IDE_DISK=y CONFIG_LEDS_TRIGGER_HEARTBEAT=m CONFIG_LEDS_TRIGGER_BACKLIGHT=m CONFIG_LEDS_TRIGGER_DEFAULT_ON=m CONFIG_ACCESSIBILITY=y CONFIG_A11Y_BRAILLE_CONSOLE=y CONFIG_INFINIBAND=m CONFIG_INFINIBAND_USER_MAD=m CONFIG_INFINIBAND_USER_ACCESS=m CONFIG_INFINIBAND_USER_MEM=y CONFIG_INFINIBAND_ADDR_TRANS=y CONFIG_INFINIBAND_MTHCA=m CONFIG_INFINIBAND_MTHCA_DEBUG=y CONFIG_INFINIBAND_IPATH=m CONFIG_INFINIBAND_AMSO1100=m # CONFIG_INFINIBAND_AMSO1100_DEBUG is not set CONFIG_INFINIBAND_CXGB3=m # CONFIG_INFINIBAND_CXGB3_DEBUG is not set CONFIG_MLX4_INFINIBAND=m CONFIG_INFINIBAND_NES=m # CONFIG_INFINIBAND_NES_DEBUG is not set CONFIG_INFINIBAND_IPOIB=m # CONFIG_INFINIBAND_IPOIB_CM is not set CONFIG_INFINIBAND_IPOIB_DEBUG=y # CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set CONFIG_INFINIBAND_SRP=m CONFIG_INFINIBAND_ISER=m CONFIG_EDAC=y # # Reporting subsystems # # CONFIG_EDAC_DEBUG is not set CONFIG_EDAC_MM_EDAC=m CONFIG_EDAC_E752X=m CONFIG_EDAC_I82975X=m CONFIG_EDAC_I3000=m CONFIG_EDAC_X38=m CONFIG_EDAC_I5400=m CONFIG_EDAC_I5000=m CONFIG_EDAC_I5100=m CONFIG_RTC_LIB=y CONFIG_RTC_CLASS=y CONFIG_RTC_HCTOSYS=y CONFIG_RTC_HCTOSYS_DEVICE="rtc0" # CONFIG_RTC_DEBUG is not set # # RTC interfaces # CONFIG_RTC_INTF_SYSFS=y CONFIG_RTC_INTF_PROC=y CONFIG_RTC_INTF_DEV=y # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set # CONFIG_RTC_DRV_TEST is not set # # I2C RTC drivers # CONFIG_RTC_DRV_DS1307=m CONFIG_RTC_DRV_DS1374=m CONFIG_RTC_DRV_DS1672=m CONFIG_RTC_DRV_MAX6900=m CONFIG_RTC_DRV_RS5C372=m CONFIG_RTC_DRV_ISL1208=m CONFIG_RTC_DRV_X1205=m CONFIG_RTC_DRV_PCF8563=m CONFIG_RTC_DRV_PCF8583=m CONFIG_RTC_DRV_M41T80=m # CONFIG_RTC_DRV_M41T80_WDT is not set CONFIG_RTC_DRV_S35390A=m CONFIG_RTC_DRV_FM3130=m CONFIG_RTC_DRV_RX8581=m # # SPI RTC drivers # CONFIG_RTC_DRV_M41T94=m CONFIG_RTC_DRV_DS1305=m CONFIG_RTC_DRV_DS1390=m CONFIG_RTC_DRV_MAX6902=m CONFIG_RTC_DRV_R9701=m CONFIG_RTC_DRV_RS5C348=m CONFIG_RTC_DRV_DS3234=m # # Platform RTC drivers # CONFIG_RTC_DRV_CMOS=y CONFIG_RTC_DRV_DS1286=m CONFIG_RTC_DRV_DS1511=m CONFIG_RTC_DRV_DS1553=m CONFIG_RTC_DRV_DS1742=m CONFIG_RTC_DRV_STK17TA8=m CONFIG_RTC_DRV_M48T86=m CONFIG_RTC_DRV_M48T35=m CONFIG_RTC_DRV_M48T59=m CONFIG_RTC_DRV_BQ4802=m CONFIG_RTC_DRV_V3020=m CONFIG_RTC_DRV_WM8350=m CONFIG_RTC_DRV_PCF50633=m # # on-CPU RTC drivers # CONFIG_DMADEVICES=y # # DMA Devices # CONFIG_INTEL_IOATDMA=m CONFIG_DMA_ENGINE=y # # DMA Clients # CONFIG_NET_DMA=y # CONFIG_DMATEST is not set CONFIG_DCA=m # CONFIG_AUXDISPLAY is not set CONFIG_UIO=m CONFIG_UIO_CIF=m CONFIG_UIO_PDRV=m CONFIG_UIO_PDRV_GENIRQ=m CONFIG_UIO_SMX=m CONFIG_UIO_SERCOS3=m CONFIG_XEN_BALLOON=y CONFIG_XEN_SCRUB_PAGES=y CONFIG_XENFS=m CONFIG_XEN_COMPAT_XENFS=y CONFIG_STAGING=y # CONFIG_STAGING_EXCLUDE_BUILD is not set CONFIG_ET131X=m # CONFIG_ET131X_DEBUG is not set # CONFIG_SLICOSS is not set # CONFIG_SXG is not set # CONFIG_ME4000 is not set # CONFIG_MEILHAUS is not set # CONFIG_VIDEO_GO7007 is not set # CONFIG_USB_IP_COMMON is not set # CONFIG_W35UND is not set CONFIG_PRISM2_USB=m # CONFIG_ECHO is not set CONFIG_USB_ATMEL=m # CONFIG_POCH is not set # CONFIG_AGNX is not set # CONFIG_OTUS is not set CONFIG_RT2860=m CONFIG_RT2870=m CONFIG_COMEDI=m CONFIG_COMEDI_PCI_DRIVERS=m CONFIG_COMEDI_USB_DRIVERS=m # CONFIG_ASUS_OLED is not set # CONFIG_PANEL is not set # CONFIG_ALTERA_PCIE_CHDMA is not set CONFIG_RTL8187SE=m # CONFIG_INPUT_MIMIO is not set # CONFIG_TRANZPORT is not set # CONFIG_EPL is not set # # Android # # CONFIG_ANDROID is not set # CONFIG_ANDROID_BINDER_IPC is not set # CONFIG_ANDROID_LOGGER is not set # CONFIG_ANDROID_RAM_CONSOLE is not set # CONFIG_ANDROID_LOW_MEMORY_KILLER is not set CONFIG_X86_PLATFORM_DEVICES=y CONFIG_ACER_WMI=m CONFIG_ASUS_LAPTOP=m CONFIG_FUJITSU_LAPTOP=m # CONFIG_FUJITSU_LAPTOP_DEBUG is not set CONFIG_HP_WMI=m CONFIG_MSI_LAPTOP=m CONFIG_PANASONIC_LAPTOP=m CONFIG_COMPAL_LAPTOP=m CONFIG_SONY_LAPTOP=m CONFIG_SONYPI_COMPAT=y CONFIG_THINKPAD_ACPI=m # CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set # CONFIG_THINKPAD_ACPI_DEBUG is not set CONFIG_THINKPAD_ACPI_BAY=y CONFIG_THINKPAD_ACPI_VIDEO=y CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y # CONFIG_INTEL_MENLOW is not set CONFIG_EEEPC_LAPTOP=m CONFIG_ACPI_WMI=m CONFIG_ACPI_ASUS=m CONFIG_ACPI_TOSHIBA=m # # Firmware Drivers # CONFIG_EDD=m # CONFIG_EDD_OFF is not set CONFIG_FIRMWARE_MEMMAP=y CONFIG_EFI_VARS=m CONFIG_DELL_RBU=m CONFIG_DCDBAS=m CONFIG_DMIID=y CONFIG_ISCSI_IBFT_FIND=y CONFIG_ISCSI_IBFT=y # # File systems # CONFIG_EXT2_FS=m CONFIG_EXT2_FS_XATTR=y CONFIG_EXT2_FS_POSIX_ACL=y CONFIG_EXT2_FS_SECURITY=y # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=m CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT3_FS_SECURITY=y CONFIG_EXT4_FS=m CONFIG_EXT4DEV_COMPAT=y CONFIG_EXT4_FS_XATTR=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_JBD2=m # CONFIG_JBD2_DEBUG is not set CONFIG_FS_MBCACHE=m CONFIG_REISERFS_FS=m # CONFIG_REISERFS_CHECK is not set # CONFIG_REISERFS_PROC_INFO is not set CONFIG_REISERFS_FS_XATTR=y CONFIG_REISERFS_FS_POSIX_ACL=y CONFIG_REISERFS_FS_SECURITY=y CONFIG_JFS_FS=m CONFIG_JFS_POSIX_ACL=y CONFIG_JFS_SECURITY=y # CONFIG_JFS_DEBUG is not set # CONFIG_JFS_STATISTICS is not set CONFIG_FS_POSIX_ACL=y CONFIG_FILE_LOCKING=y CONFIG_XFS_FS=m CONFIG_XFS_QUOTA=y CONFIG_XFS_POSIX_ACL=y CONFIG_XFS_RT=y # CONFIG_XFS_DEBUG is not set CONFIG_GFS2_FS=m CONFIG_GFS2_FS_LOCKING_DLM=m CONFIG_OCFS2_FS=m CONFIG_OCFS2_FS_O2CB=m CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m CONFIG_OCFS2_FS_STATS=y CONFIG_OCFS2_DEBUG_MASKLOG=y # CONFIG_OCFS2_DEBUG_FS is not set CONFIG_OCFS2_FS_POSIX_ACL=y CONFIG_BTRFS_FS=m CONFIG_BTRFS_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=m CONFIG_QFMT_V1=m CONFIG_QFMT_V2=m CONFIG_QUOTACTL=y CONFIG_AUTOFS_FS=m CONFIG_AUTOFS4_FS=m CONFIG_FUSE_FS=m CONFIG_GENERIC_ACL=y # # CD-ROM/DVD Filesystems # CONFIG_ISO9660_FS=m CONFIG_JOLIET=y CONFIG_ZISOFS=y CONFIG_UDF_FS=m CONFIG_UDF_NLS=y # # DOS/FAT/NT Filesystems # CONFIG_FAT_FS=m CONFIG_MSDOS_FS=m CONFIG_VFAT_FS=m CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="utf8" CONFIG_NTFS_FS=m # CONFIG_NTFS_DEBUG is not set CONFIG_NTFS_RW=y # # Pseudo filesystems # CONFIG_PROC_FS=y CONFIG_PROC_KCORE=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=m CONFIG_MISC_FILESYSTEMS=y CONFIG_ADFS_FS=m # CONFIG_ADFS_FS_RW is not set CONFIG_AFFS_FS=m CONFIG_ECRYPT_FS=m CONFIG_HFS_FS=m CONFIG_HFSPLUS_FS=m CONFIG_BEFS_FS=m # CONFIG_BEFS_DEBUG is not set CONFIG_BFS_FS=m CONFIG_EFS_FS=m CONFIG_JFFS2_FS=m CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_WRITEBUFFER=y # CONFIG_JFFS2_FS_WBUF_VERIFY is not set 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 is not set # 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=m 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 is not set CONFIG_CRAMFS=m CONFIG_SQUASHFS=m # CONFIG_SQUASHFS_EMBEDDED is not set CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 CONFIG_VXFS_FS=m CONFIG_MINIX_FS=m CONFIG_OMFS_FS=m CONFIG_HPFS_FS=m CONFIG_QNX4FS_FS=m CONFIG_ROMFS_FS=m CONFIG_SYSV_FS=m CONFIG_UFS_FS=m # CONFIG_UFS_FS_WRITE is not set # CONFIG_UFS_DEBUG is not set CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=m CONFIG_NFS_V3=y CONFIG_NFS_V3_ACL=y CONFIG_NFS_V4=y CONFIG_NFSD=m CONFIG_NFSD_V2_ACL=y CONFIG_NFSD_V3=y CONFIG_NFSD_V3_ACL=y CONFIG_NFSD_V4=y CONFIG_LOCKD=m CONFIG_LOCKD_V4=y CONFIG_EXPORTFS=m CONFIG_NFS_ACL_SUPPORT=m CONFIG_NFS_COMMON=y CONFIG_SUNRPC=m CONFIG_SUNRPC_GSS=m CONFIG_SUNRPC_XPRT_RDMA=m # CONFIG_SUNRPC_REGISTER_V4 is not set CONFIG_RPCSEC_GSS_KRB5=m CONFIG_RPCSEC_GSS_SPKM3=m # CONFIG_SMB_FS is not set CONFIG_CIFS=m # CONFIG_CIFS_STATS is not set CONFIG_CIFS_WEAK_PW_HASH=y CONFIG_CIFS_UPCALL=y CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y # CONFIG_CIFS_DEBUG2 is not set CONFIG_CIFS_EXPERIMENTAL=y CONFIG_CIFS_DFS_UPCALL=y CONFIG_NCP_FS=m # CONFIG_NCPFS_PACKET_SIGNING is not set # CONFIG_NCPFS_IOCTL_LOCKING is not set # CONFIG_NCPFS_STRONG is not set CONFIG_NCPFS_NFS_NS=y CONFIG_NCPFS_OS2_NS=y # CONFIG_NCPFS_SMALLDOS is not set CONFIG_NCPFS_NLS=y CONFIG_NCPFS_EXTRAS=y CONFIG_CODA_FS=m CONFIG_AFS_FS=m # CONFIG_AFS_DEBUG is not set CONFIG_9P_FS=m # # Partition Types # CONFIG_PARTITION_ADVANCED=y CONFIG_ACORN_PARTITION=y # CONFIG_ACORN_PARTITION_CUMANA is not set # CONFIG_ACORN_PARTITION_EESOX is not set CONFIG_ACORN_PARTITION_ICS=y # CONFIG_ACORN_PARTITION_ADFS is not set # CONFIG_ACORN_PARTITION_POWERTEC is not set 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 is not set CONFIG_SGI_PARTITION=y CONFIG_ULTRIX_PARTITION=y CONFIG_SUN_PARTITION=y CONFIG_KARMA_PARTITION=y CONFIG_EFI_PARTITION=y # CONFIG_SYSV68_PARTITION is not set CONFIG_NLS=m CONFIG_NLS_DEFAULT="utf8" CONFIG_NLS_CODEPAGE_437=m CONFIG_NLS_CODEPAGE_737=m CONFIG_NLS_CODEPAGE_775=m CONFIG_NLS_CODEPAGE_850=m CONFIG_NLS_CODEPAGE_852=m CONFIG_NLS_CODEPAGE_855=m CONFIG_NLS_CODEPAGE_857=m CONFIG_NLS_CODEPAGE_860=m CONFIG_NLS_CODEPAGE_861=m CONFIG_NLS_CODEPAGE_862=m CONFIG_NLS_CODEPAGE_863=m CONFIG_NLS_CODEPAGE_864=m CONFIG_NLS_CODEPAGE_865=m CONFIG_NLS_CODEPAGE_866=m CONFIG_NLS_CODEPAGE_869=m CONFIG_NLS_CODEPAGE_936=m CONFIG_NLS_CODEPAGE_950=m CONFIG_NLS_CODEPAGE_932=m CONFIG_NLS_CODEPAGE_949=m CONFIG_NLS_CODEPAGE_874=m CONFIG_NLS_ISO8859_8=m CONFIG_NLS_CODEPAGE_1250=m CONFIG_NLS_CODEPAGE_1251=m CONFIG_NLS_ASCII=m CONFIG_NLS_ISO8859_1=m CONFIG_NLS_ISO8859_2=m CONFIG_NLS_ISO8859_3=m CONFIG_NLS_ISO8859_4=m CONFIG_NLS_ISO8859_5=m CONFIG_NLS_ISO8859_6=m CONFIG_NLS_ISO8859_7=m CONFIG_NLS_ISO8859_9=m CONFIG_NLS_ISO8859_13=m CONFIG_NLS_ISO8859_14=m CONFIG_NLS_ISO8859_15=m CONFIG_NLS_KOI8_R=m CONFIG_NLS_KOI8_U=m CONFIG_NLS_UTF8=m CONFIG_DLM=m 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=2048 CONFIG_MAGIC_SYSRQ=y CONFIG_UNUSED_SYMBOLS=y CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_SHIRQ is not set CONFIG_DETECT_SOFTLOCKUP=y # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 CONFIG_SCHED_DEBUG=y # CONFIG_SCHEDSTATS is not set CONFIG_TIMER_STATS=y # CONFIG_DEBUG_OBJECTS is not set # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_RT_MUTEXES is not set # CONFIG_RT_MUTEX_TESTER is not set # CONFIG_DEBUG_SPINLOCK is not set # CONFIG_DEBUG_MUTEXES is not set # CONFIG_DEBUG_LOCK_ALLOC is not set # CONFIG_PROVE_LOCKING is not set # CONFIG_LOCK_STAT is not set # CONFIG_DEBUG_SPINLOCK_SLEEP is not set # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set CONFIG_STACKTRACE=y # 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 is not set # CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_NOTIFIERS is not set CONFIG_ARCH_WANT_FRAME_POINTERS=y # CONFIG_FRAME_POINTER is not set # CONFIG_BOOT_PRINTK_DELAY is not set # CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_CPU_STALL_DETECTOR is not set # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set # CONFIG_FAULT_INJECTION is not set # CONFIG_LATENCYTOP is not set CONFIG_SYSCTL_SYSCALL_CHECK=y CONFIG_USER_STACKTRACE_SUPPORT=y CONFIG_NOP_TRACER=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y CONFIG_RING_BUFFER=y CONFIG_TRACING=y # # Tracers # # CONFIG_FUNCTION_TRACER is not set # CONFIG_IRQSOFF_TRACER is not set # CONFIG_SYSPROF_TRACER is not set # CONFIG_SCHED_TRACER is not set CONFIG_CONTEXT_SWITCH_TRACER=y CONFIG_BOOT_TRACER=y # CONFIG_TRACE_BRANCH_PROFILING is not set # CONFIG_POWER_TRACER is not set # CONFIG_STACK_TRACER is not set # CONFIG_MMIOTRACE is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set # CONFIG_DYNAMIC_PRINTK_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set CONFIG_STRICT_DEVMEM=y CONFIG_X86_VERBOSE_BOOTUP=y CONFIG_EARLY_PRINTK=y # CONFIG_EARLY_PRINTK_DBGP is not set # CONFIG_DEBUG_STACKOVERFLOW is not set # CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_DEBUG_PER_CPU_MAPS is not set # CONFIG_X86_PTDUMP is not set # CONFIG_DEBUG_RODATA is not set # CONFIG_DEBUG_NX_TEST is not set # CONFIG_IOMMU_DEBUG is not set CONFIG_HAVE_MMIOTRACE_SUPPORT=y 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 is not set # CONFIG_CPA_DEBUG is not set CONFIG_OPTIMIZE_INLINING=y # # Security options # CONFIG_KEYS=y # CONFIG_KEYS_DEBUG_PROC_KEYS is not set CONFIG_SECURITY=y CONFIG_SECURITYFS=y CONFIG_SECURITY_NETWORK=y CONFIG_SECURITY_NETWORK_XFRM=y # CONFIG_SECURITY_PATH is not set CONFIG_SECURITY_FILE_CAPABILITIES=y # CONFIG_SECURITY_ROOTPLUG is not set CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 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_POLICYDB_VERSION_MAX is not set CONFIG_XOR_BLOCKS=m CONFIG_ASYNC_CORE=m CONFIG_ASYNC_MEMCPY=m CONFIG_ASYNC_XOR=m CONFIG_CRYPTO=y # # Crypto core or helper # CONFIG_CRYPTO_FIPS=y CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ALGAPI2=y CONFIG_CRYPTO_AEAD=m CONFIG_CRYPTO_AEAD2=y CONFIG_CRYPTO_BLKCIPHER=m CONFIG_CRYPTO_BLKCIPHER2=y CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_HASH2=y CONFIG_CRYPTO_RNG=m CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y CONFIG_CRYPTO_GF128MUL=m CONFIG_CRYPTO_NULL=m # CONFIG_CRYPTO_CRYPTD is not set CONFIG_CRYPTO_AUTHENC=m CONFIG_CRYPTO_TEST=m # # Authenticated Encryption with Associated Data # CONFIG_CRYPTO_CCM=m CONFIG_CRYPTO_GCM=m CONFIG_CRYPTO_SEQIV=m # # Block modes # CONFIG_CRYPTO_CBC=m CONFIG_CRYPTO_CTR=m CONFIG_CRYPTO_CTS=m CONFIG_CRYPTO_ECB=m CONFIG_CRYPTO_LRW=m CONFIG_CRYPTO_PCBC=m CONFIG_CRYPTO_XTS=m # # Hash modes # CONFIG_CRYPTO_HMAC=m CONFIG_CRYPTO_XCBC=m # # Digest # CONFIG_CRYPTO_CRC32C=m CONFIG_CRYPTO_CRC32C_INTEL=m CONFIG_CRYPTO_MD4=m CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_MICHAEL_MIC=m CONFIG_CRYPTO_RMD128=m CONFIG_CRYPTO_RMD160=m CONFIG_CRYPTO_RMD256=m CONFIG_CRYPTO_RMD320=m CONFIG_CRYPTO_SHA1=m CONFIG_CRYPTO_SHA256=m CONFIG_CRYPTO_SHA512=m CONFIG_CRYPTO_TGR192=m CONFIG_CRYPTO_WP512=m # # Ciphers # CONFIG_CRYPTO_AES=m CONFIG_CRYPTO_AES_X86_64=m CONFIG_CRYPTO_ANUBIS=m CONFIG_CRYPTO_ARC4=m CONFIG_CRYPTO_BLOWFISH=m CONFIG_CRYPTO_CAMELLIA=m CONFIG_CRYPTO_CAST5=m CONFIG_CRYPTO_CAST6=m CONFIG_CRYPTO_DES=m CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_KHAZAD=m CONFIG_CRYPTO_SALSA20=m CONFIG_CRYPTO_SALSA20_X86_64=m CONFIG_CRYPTO_SEED=m CONFIG_CRYPTO_SERPENT=m CONFIG_CRYPTO_TEA=m CONFIG_CRYPTO_TWOFISH=m CONFIG_CRYPTO_TWOFISH_COMMON=m CONFIG_CRYPTO_TWOFISH_X86_64=m # # Compression # CONFIG_CRYPTO_DEFLATE=m CONFIG_CRYPTO_LZO=m # # Random Number Generation # CONFIG_CRYPTO_ANSI_CPRNG=m CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_DEV_HIFN_795X=m CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y CONFIG_HAVE_KVM=y CONFIG_HAVE_KVM_IRQCHIP=y CONFIG_VIRTUALIZATION=y CONFIG_KVM=m CONFIG_KVM_INTEL=m CONFIG_KVM_AMD=m # CONFIG_KVM_TRACE is not set CONFIG_VIRTIO=m CONFIG_VIRTIO_RING=m CONFIG_VIRTIO_PCI=m CONFIG_VIRTIO_BALLOON=m # # 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=m CONFIG_CRC16=m CONFIG_CRC_T10DIF=m CONFIG_CRC_ITU_T=m CONFIG_CRC32=y CONFIG_CRC7=m CONFIG_LIBCRC32C=m CONFIG_ZLIB_INFLATE=m CONFIG_ZLIB_DEFLATE=m CONFIG_LZO_COMPRESS=m CONFIG_LZO_DECOMPRESS=m CONFIG_GENERIC_ALLOCATOR=y CONFIG_REED_SOLOMON=m CONFIG_REED_SOLOMON_DEC16=y CONFIG_TEXTSEARCH=y CONFIG_TEXTSEARCH_KMP=m CONFIG_TEXTSEARCH_BM=m CONFIG_TEXTSEARCH_FSM=m CONFIG_PLIST=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_HAS_DMA=y CONFIG_CHECK_SIGNATURE=y --OgqxwSJOaUobr8KG-- --jho1yZJdad60DJr+ 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) iEYEARECAAYFAkocq34ACgkQkZz88chpJ2ONDwCgu4gI8PwTaP8HLsrBfdqsYLMH ZqwAniim/qdxcHdVqty0fdJPTEowEVYQ =/ldz -----END PGP SIGNATURE----- --jho1yZJdad60DJr+-- From BATV+bc1368fc9d1556f9f742+2103+infradead.org+hch@bombadil.srs.infradead.org Wed May 27 04:17:25 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,J_BACKHAIR_56 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4R9HMCQ185700 for ; Wed, 27 May 2009 04:17:25 -0500 X-ASG-Debug-ID: 1243415855-25df02330000-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 4C95F2B1550 for ; Wed, 27 May 2009 02:17:35 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id glRPdJpiKqjAgUtq for ; Wed, 27 May 2009 02:17:35 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9FGQ-0006TR-OW; Wed, 27 May 2009 09:17:34 +0000 Date: Wed, 27 May 2009 05:17:34 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: validate quota log items during log recovery Subject: Re: [PATCH] xfs: validate quota log items during log recovery Message-ID: <20090527091734.GA21958@infradead.org> References: <20090303175427.GA20582@infradead.org> <4A1C13DC.5000605@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A1C13DC.5000605@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: 1243415856 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, May 26, 2009 at 11:07:56AM -0500, Eric Sandeen wrote: > Christoph Hellwig wrote: > > Arkadiusz has been seeing really strange crashes in xfs_qm_dqcheck that > > I can only explain by a log item beeing too smal to actually fit the > ^^being too small^^ Thanks, corrected. > > + if (item->ri_buf[i].i_addr == NULL || > > + item->ri_buf[i].i_len < sizeof(xfs_dqblk_t)) { > > + cmn_err(CE_ALERT, > > + "XFS: dquot too small (%d) in xlog_recover_do_reg_buffer.", > > + item->ri_buf[i].i_len); > > Shouldn't this differentiate between i_addr == NULL and i_len too small, > though? While we're at it anyway... > > Maybe: I've split both into individual checks and used __func__ to print the function instead of hardconding it. > > error = xfs_qm_dqcheck((xfs_disk_dquot_t *) > > item->ri_buf[i].i_addr, > > -1, 0, XFS_QMOPT_DOWARN, > > "dquot_buf_recover"); > > + if (error) > > + goto next; > > I guess we can't do much else, but what happens in the end, when we skip > a buffer... Yeah, same action a a xfs_qm_dqcheck failure. Error handling here probably wants to be revisited, but that should be a separate patch. Updated patch below: Subject: xfs: validate quota log items during log recovery From: Christoph Hellwig Arkadiusz has seen really strange crashes in xfs_qm_dqcheck that I can only explain by a log item being too smal to actually fit the xfs_dqblk_t we're dereferencing all over xfs_qm_dqcheck. So add graceful checks for NULL or too small quota items to the log recovery code. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_log_recover.c =================================================================== --- xfs.orig/fs/xfs/xfs_log_recover.c 2009-05-27 10:40:03.752821404 +0200 +++ xfs/fs/xfs/xfs_log_recover.c 2009-05-27 10:43:23.740939498 +0200 @@ -1975,16 +1975,30 @@ xlog_recover_do_reg_buffer( error = 0; if (buf_f->blf_flags & (XFS_BLI_UDQUOT_BUF|XFS_BLI_PDQUOT_BUF|XFS_BLI_GDQUOT_BUF)) { + if (item->ri_buf[i].i_addr == NULL) { + cmn_err(CE_ALERT, + "XFS: NULL dquot in %s.", __func__); + goto next; + } + if (item->ri_buf[i].i_len < sizeof(xfs_dqblk_t)) { + cmn_err(CE_ALERT, + "XFS: dquot too small (%d) in %s.", + item->ri_buf[i].i_len, __func__); + goto next; + } error = xfs_qm_dqcheck((xfs_disk_dquot_t *) item->ri_buf[i].i_addr, -1, 0, XFS_QMOPT_DOWARN, "dquot_buf_recover"); + if (error) + goto next; } - if (!error) - memcpy(xfs_buf_offset(bp, - (uint)bit << XFS_BLI_SHIFT), /* dest */ - item->ri_buf[i].i_addr, /* source */ - nbits<ri_buf[i].i_addr, /* source */ + nbits<ri_buf[1].i_addr; - ASSERT(recddq); + + if (item->ri_buf[1].i_addr == NULL) { + cmn_err(CE_ALERT, + "XFS: NULL dquot in %s.", __func__); + return XFS_ERROR(EIO); + } + if (item->ri_buf[1].i_len < sizeof(xfs_dqblk_t)) { + cmn_err(CE_ALERT, + "XFS: dquot too small (%d) in %s.", + item->ri_buf[1].i_len, __func__); + return XFS_ERROR(EIO); + } + /* * This type of quotas was turned off, so ignore this record. */ From svavar@fiton.is Wed May 27 04:26:01 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,J_CHICKENPOX_73, MIME_8BIT_HEADER autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4R9Q0gI186039 for ; Wed, 27 May 2009 04:26:01 -0500 X-ASG-Debug-ID: 1243416372-202f03640000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from atlas.fiton.is (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 96C972B144C for ; Wed, 27 May 2009 02:26:12 -0700 (PDT) Received: from atlas.fiton.is ([62.145.135.105]) by cuda.sgi.com with ESMTP id 9mjryZMON4PE4xGs for ; Wed, 27 May 2009 02:26:12 -0700 (PDT) Received: from localhost ([127.0.0.1]) by atlas.fiton.is (using TLSv1/SSLv3 with cipher AES128-SHA (128 bits)) for xfs@oss.sgi.com; Wed, 27 May 2009 09:26:55 +0000 Message-Id: <59D949A6-71F6-4C4C-B5F9-B5B22B189771@fiton.is> From: =?ISO-8859-1?Q?Svavar_=D6rn_Eysteinsson?= To: xfs@oss.sgi.com In-Reply-To: <4A1BE48F.9020107@dermichi.com> Content-Type: text/plain; charset=WINDOWS-1252; format=flowed; delsp=yes Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Apple Message framework v935.3) X-ASG-Orig-Subj: Re: Incorrect Free Space / xfs_growfs on RAID5 Volume ? Subject: Re: Incorrect Free Space / xfs_growfs on RAID5 Volume ? Date: Wed, 27 May 2009 09:26:10 +0000 References: <4A1BE48F.9020107@dermichi.com> X-Mailer: Apple Mail (2.935.3) X-Barracuda-Connect: UNKNOWN[62.145.135.105] X-Barracuda-Start-Time: 1243416373 X-Barracuda-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.82 X-Barracuda-Spam-Status: No, SCORE=-0.82 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, MARKETING_SUBJECT, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26867 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi. I read on = http://www.carltonbale.com/2007/05/how-to-break-the-2tb-2-terabyte-file-sy= stem-limit/ that if your kernel is compiled with CONFIG_LBD You can break the 2tb =20= limit. Any facts on that ? **** Breaking 2TB Option 2 - Use Linux with CONFIG_LBD enabled. Most Linux =20= file systems are capable of partitions larger than 2 TB, as long as =20 the Linux kernel itself is. (See this comparison of Linux file =20 systems.) Most Linux distributions now have kernels compiled with =20 CONFIG_LBD enabled (Ubuntu 6.10 does, for example.) As long as the =20 kernel is configured/compiled properly, it is straight-forward to =20 create a single 4TB EXT3 (or similar) partition. * To summarize: 1 RAID array of five 1TB Drives -> 1 RAID level 5 =20= Volume Set that is 4TB -> 1 EXT3 (or similar) Linux partition that is =20= 4TB. **** .... Is this maby out of my scope/setup ? Is there a simple way for me to check if my kernel has this option =20 compiled in ? I'm running Fedora Core 6 with 2.6.27.7 #1 SMP Tue Nov 25 11:50:10 =20 GMT 2008 i686 i686 i386 GNU/Linux. And the FINAL question.... Is there any way for me to alter the raid =20 volume, partitions to GPT or just format the /dev/sdb without loosing =20= any data ? Maby it's just not possible without backup up data, and restore'ing ? Thanks allot guys.. Best regards, Svavar - Reykjavik - Iceland On 26.5.2009, at 12:46, Michael Weissenbacher wrote: > Hi Svavar! >> Now the strange part. When I issue =93df -h=94 command it shows much =20= >> smaller >> disk space added then it should have. > > You have run into the 2TB limit for a DOS Paritition Table. You must =20= > use GPT (GUID Partition Table) to overcome the limit. You can't use =20= > fdisk for that since it has no GPT support. An alternative would be =20= > parted [1]. I'm not sure how this can be done without data loss. An =20= > alternative would be to not use partitions at all and create the XFS =20= > directly on /dev/sdb. > This is not really an XFS issue but an partitioning issue. > > [1] http://www.gnu.org/software/parted/index.shtml > > hth, > Michael From BATV+bc1368fc9d1556f9f742+2103+infradead.org+hch@bombadil.srs.infradead.org Wed May 27 04:56:06 2009 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_42, J_CHICKENPOX_45,J_CHICKENPOX_63,J_CHICKENPOX_64,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4R9u53c186915 for ; Wed, 27 May 2009 04:56:06 -0500 X-ASG-Debug-ID: 1243418179-6d1502cd0000-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 7CDEF1A28DA0 for ; Wed, 27 May 2009 02:56:19 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 9gTDeuidRo6HROYE for ; Wed, 27 May 2009 02:56:19 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9Fru-0005A5-HJ; Wed, 27 May 2009 09:56:18 +0000 Date: Wed, 27 May 2009 05:56:18 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: kill xfs_qmops Subject: Re: [PATCH] xfs: kill xfs_qmops Message-ID: <20090527095616.GA19069@infradead.org> References: <20090224143736.GA16616@infradead.org> <4A1C2839.3010005@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A1C2839.3010005@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: 1243418179 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, May 26, 2009 at 12:34:49PM -0500, Eric Sandeen wrote: > > + udqp = NULL; > > + gdqp = NULL; > > Just wondering about the reason for this change? in xfs_ioctl_setattr() > it's a little weird because you gave udqp & gdqp the same treatment, but > not olddquot (which is initialized to NULL in the declaration too) Seemd like a merge error to me. I've reverted these bits and now leave them as they were before. > > Index: xfs/fs/xfs/linux-2.6/xfs_super.c > > =================================================================== > > --- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2009-02-24 15:32:16.141370566 +0100 > > +++ xfs/fs/xfs/linux-2.6/xfs_super.c 2009-02-24 15:32:35.866394539 +0100 > > @@ -416,6 +416,14 @@ xfs_parseargs( > > return EINVAL; > > } > > > > +#ifndef CONFIG_XFS_QUOTA > > + if (XFS_IS_QUOTA_RUNNING(mp)) { > > + cmn_err(CE_WARN, > > + "XFS: quota support not available in this kernel."); > > + return EINVAL; > > + } > > +#endif > > The wording of the macro seems a little confusing in this location, how > can quota be "running" if we are just starting the mount and there is no > quota built in, but oh well, not really the fault of this patch I guess. > > Would it make any more sense to just say "if (mp->m_qflags)" instead, > because we just got done setting that bit of the structure in parseargs...? > Aside from those nitpicks seems ok, though TBH I'm a bit confused about > when we check XFS_IS_QUOTA_RUNNING vs XFS_IS_QUOTA_ON in this new world .... XFS_IS_QUOTA_RUNNING/XFS_IS_QUOTA_ON is indeed extremly confusing. For now I'd like to keep is as-is as the patch is already big enough. But I'll put an item to introduce some better naming/macro in this area on my todo list so we'll eventually sort this out. > > @@ -1214,7 +1222,10 @@ xfs_fs_statfs( > > statp->f_ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); > > spin_unlock(&mp->m_sb_lock); > > > > - XFS_QM_DQSTATVFS(XFS_I(dentry->d_inode), statp); > > + if ((ip->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) || > > + ((mp->m_qflags & (XFS_PQUOTA_ACCT|XFS_OQUOTA_ENFD))) == > > + (XFS_PQUOTA_ACCT|XFS_OQUOTA_ENFD)) > > + xfs_qm_statvfs(ip, statp); > > return 0; > > } > > Ok, so the tests for the ip & mp flags were removed from > xfs_qm_statvfs() because they are always set here in the only caller... > but would an ASSERT() of those be worth keeping in xfs_qm_statvfs? No. statfs always gets a positive dentry passed, and that means the inode and mount pointer are always valid. If they weren't we're in deep enough trouble that the NULL pointer dereference panic is more than warranted. > > +++ xfs/fs/xfs/quota/xfs_dquot.c 2009-02-24 15:32:35.867425537 +0100 > > @@ -1194,7 +1194,9 @@ void > > xfs_qm_dqrele( > > xfs_dquot_t *dqp) > > { > > - ASSERT(dqp); > > + if (!dqp) > > + return; > > + > > xfs_dqtrace_entry(dqp, "DQRELE"); > > > > xfs_dqlock(dqp); > > dumb question, maybe - how do we get here w/ dqp == NULL when before it > was an ASSERT? previously XFS_QM_DQRELE expanded to xfs_qm_dqrele_null if quotas were enabled which had the NULL check. With just a few direct callers of the old xfs_qm_dqrele it seems more logial to me to just have the NULL check in the main xfs_qm_dqrele instead of keeping a wrapper. > > @@ -2469,8 +2479,10 @@ xfs_qm_vop_chown( > > uint bfield = XFS_IS_REALTIME_INODE(ip) ? > > XFS_TRANS_DQ_RTBCOUNT : XFS_TRANS_DQ_BCOUNT; > > > > + if (!XFS_IS_QUOTA_RUNNING(ip->i_mount)) > > + return NULL; > > + > > ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); > > - ASSERT(XFS_IS_QUOTA_RUNNING(ip->i_mount)); > > > > /* old dquot */ > > prevdq = *IO_olddq; > > seems a little weird to call this & return, should the (3) callers just > check first? I guess similar questions on other tests... I tried to avoid too many changes to the callers, but given that we already have XFS_IS_UQUOTA_ON checks in the callers we might aswell add the XFS_IS_QUOTA_RUNNING, too. I've changed all places that have checks like XFS_IS_*QUOTA_ON in the caller to also do the XFS_IS_QUOTA_RUNNING in the caller, but leave it in the callee when we also perform the other checks there, e.g. for all thexfs_trans_dquot.c functions. > > int > > xfs_qm_vop_rename_dqattach( > > - xfs_inode_t **i_tab) > > + struct xfs_inode **i_tab) > > { > > - xfs_inode_t *ip; > > - int i; > > - int error; > > - > > - ip = i_tab[0]; > > + struct xfs_mount *mp = i_tab[0]->i_mount; > > + int i; > > > > - if (! XFS_IS_QUOTA_ON(ip->i_mount)) > > + if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) > > return 0; > > > > - if (XFS_NOT_DQATTACHED(ip->i_mount, ip)) { > > - error = xfs_qm_dqattach(ip, 0); > > - if (error) > > - return error; > > - } > > for (i = 1; (i < 4 && i_tab[i]); i++) { > > + struct xfs_inode *ip = i_tab[i]; > > + int error; > > + > > /* > > * Watch out for duplicate entries in the table. > > */ > > - if ((ip = i_tab[i]) != i_tab[i-1]) { > > - if (XFS_NOT_DQATTACHED(ip->i_mount, ip)) { > > + if (i == 0 || ip != i_tab[i-1]) { > > > ^^^^^^ how is that ever true? never, but that's a bug because the loop should now start at 0. Looks like out quota testing in xfsqa still isn't that good or the first inode is always already attached in normal operation (probably the latter). Updated patch below: Subject: xfs: kill xfs_qmops From: Christoph Hellwig Kill the quota ops function vector and replace it with direct calls or stubs in the CONFIG_XFS_QUOTA=n case. Make sure we check XFS_IS_QUOTA_RUNNING in the right spots. We can remove the number of those checks because the XFS_TRANS_DQ_DIRTY flag can't be set otherwise. This brings us back closer to the way this code worked in IRIX and earlier Linux versions, but we keep a lot of the more useful factoring of common code. Eventually we should also kill xfs_qm_bhv.c, but that's left for a later patch. Reduces the size of the source code by about 250 lines and the size of XFS module by about 1.5 kilobytes with quotas enabled: text data bss dec hex filename 615957 2960 3848 622765 980ad fs/xfs/xfs.o 617231 3152 3848 624231 98667 fs/xfs/xfs.o.old Fallout: - xfs_qm_dqattach is split into xfs_qm_dqattach_locked which expects the inode locked and xfs_qm_dqattach which does the locking around it, thus removing XFS_QMOPT_ILOCKED. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/quota/xfs_trans_dquot.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_trans_dquot.c 2009-05-27 11:14:50.004939778 +0200 +++ xfs/fs/xfs/quota/xfs_trans_dquot.c 2009-05-27 11:35:36.483814276 +0200 @@ -111,7 +111,7 @@ xfs_trans_log_dquot( * Carry forward whatever is left of the quota blk reservation to * the spanky new transaction */ -STATIC void +void xfs_trans_dup_dqinfo( xfs_trans_t *otp, xfs_trans_t *ntp) @@ -167,19 +167,17 @@ xfs_trans_dup_dqinfo( /* * Wrap around mod_dquot to account for both user and group quotas. */ -STATIC void +void xfs_trans_mod_dquot_byino( xfs_trans_t *tp, xfs_inode_t *ip, uint field, long delta) { - xfs_mount_t *mp; - - ASSERT(tp); - mp = tp->t_mountp; + xfs_mount_t *mp = tp->t_mountp; - if (!XFS_IS_QUOTA_ON(mp) || + if (!XFS_IS_QUOTA_RUNNING(mp) || + !XFS_IS_QUOTA_ON(mp) || ip->i_ino == mp->m_sb.sb_uquotino || ip->i_ino == mp->m_sb.sb_gquotino) return; @@ -229,6 +227,7 @@ xfs_trans_mod_dquot( xfs_dqtrx_t *qtrx; ASSERT(tp); + ASSERT(XFS_IS_QUOTA_RUNNING(tp->t_mountp)); qtrx = NULL; if (tp->t_dqinfo == NULL) @@ -346,7 +345,7 @@ xfs_trans_dqlockedjoin( * Unreserve just the reservations done by this transaction. * dquot is still left locked at exit. */ -STATIC void +void xfs_trans_apply_dquot_deltas( xfs_trans_t *tp) { @@ -357,7 +356,7 @@ xfs_trans_apply_dquot_deltas( long totalbdelta; long totalrtbdelta; - if (! (tp->t_flags & XFS_TRANS_DQ_DIRTY)) + if (!(tp->t_flags & XFS_TRANS_DQ_DIRTY)) return; ASSERT(tp->t_dqinfo); @@ -531,7 +530,7 @@ xfs_trans_apply_dquot_deltas( * we simply throw those away, since that's the expected behavior * when a transaction is curtailed without a commit. */ -STATIC void +void xfs_trans_unreserve_and_mod_dquots( xfs_trans_t *tp) { @@ -768,7 +767,7 @@ xfs_trans_reserve_quota_bydquots( { int resvd = 0, error; - if (!XFS_IS_QUOTA_ON(mp)) + if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) return 0; if (tp && tp->t_dqinfo == NULL) @@ -811,18 +810,17 @@ xfs_trans_reserve_quota_bydquots( * This doesn't change the actual usage, just the reservation. * The inode sent in is locked. */ -STATIC int +int xfs_trans_reserve_quota_nblks( - xfs_trans_t *tp, - xfs_mount_t *mp, - xfs_inode_t *ip, - long nblks, - long ninos, - uint flags) + struct xfs_trans *tp, + struct xfs_inode *ip, + long nblks, + long ninos, + uint flags) { - int error; + struct xfs_mount *mp = ip->i_mount; - if (!XFS_IS_QUOTA_ON(mp)) + if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) return 0; if (XFS_IS_PQUOTA_ON(mp)) flags |= XFS_QMOPT_ENOSPC; @@ -831,7 +829,6 @@ xfs_trans_reserve_quota_nblks( ASSERT(ip->i_ino != mp->m_sb.sb_gquotino); ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); - ASSERT(XFS_IS_QUOTA_RUNNING(ip->i_mount)); ASSERT((flags & ~(XFS_QMOPT_FORCE_RES | XFS_QMOPT_ENOSPC)) == XFS_TRANS_DQ_RES_RTBLKS || (flags & ~(XFS_QMOPT_FORCE_RES | XFS_QMOPT_ENOSPC)) == @@ -840,11 +837,9 @@ xfs_trans_reserve_quota_nblks( /* * Reserve nblks against these dquots, with trans as the mediator. */ - error = xfs_trans_reserve_quota_bydquots(tp, mp, - ip->i_udquot, ip->i_gdquot, - nblks, ninos, - flags); - return error; + return xfs_trans_reserve_quota_bydquots(tp, mp, + ip->i_udquot, ip->i_gdquot, + nblks, ninos, flags); } /* @@ -895,25 +890,15 @@ STATIC void xfs_trans_alloc_dqinfo( xfs_trans_t *tp) { - (tp)->t_dqinfo = kmem_zone_zalloc(xfs_Gqm->qm_dqtrxzone, KM_SLEEP); + tp->t_dqinfo = kmem_zone_zalloc(xfs_Gqm->qm_dqtrxzone, KM_SLEEP); } -STATIC void +void xfs_trans_free_dqinfo( xfs_trans_t *tp) { if (!tp->t_dqinfo) return; - kmem_zone_free(xfs_Gqm->qm_dqtrxzone, (tp)->t_dqinfo); - (tp)->t_dqinfo = NULL; + kmem_zone_free(xfs_Gqm->qm_dqtrxzone, tp->t_dqinfo); + tp->t_dqinfo = NULL; } - -xfs_dqtrxops_t xfs_trans_dquot_ops = { - .qo_dup_dqinfo = xfs_trans_dup_dqinfo, - .qo_free_dqinfo = xfs_trans_free_dqinfo, - .qo_mod_dquot_byino = xfs_trans_mod_dquot_byino, - .qo_apply_dquot_deltas = xfs_trans_apply_dquot_deltas, - .qo_reserve_quota_nblks = xfs_trans_reserve_quota_nblks, - .qo_reserve_quota_bydquots = xfs_trans_reserve_quota_bydquots, - .qo_unreserve_and_mod_dquots = xfs_trans_unreserve_and_mod_dquots, -}; Index: xfs/fs/xfs/xfs_quota.h =================================================================== --- xfs.orig/fs/xfs/xfs_quota.h 2009-05-27 11:14:50.053939517 +0200 +++ xfs/fs/xfs/xfs_quota.h 2009-05-27 11:17:27.976843156 +0200 @@ -197,7 +197,6 @@ typedef struct xfs_qoff_logformat { #define XFS_QMOPT_UMOUNTING 0x0000100 /* filesys is being unmounted */ #define XFS_QMOPT_DOLOG 0x0000200 /* log buf changes (in quotacheck) */ #define XFS_QMOPT_DOWARN 0x0000400 /* increase warning cnt if needed */ -#define XFS_QMOPT_ILOCKED 0x0000800 /* inode is already locked (excl) */ #define XFS_QMOPT_DQREPAIR 0x0001000 /* repair dquot if damaged */ #define XFS_QMOPT_GQUOTA 0x0002000 /* group dquot requested */ #define XFS_QMOPT_ENOSPC 0x0004000 /* enospc instead of edquot (prj) */ @@ -302,69 +301,72 @@ typedef struct xfs_dqtrx { long qt_delrtb_delta; /* delayed RT blk count changes */ } xfs_dqtrx_t; -/* - * Dquot transaction functions, used if quota is enabled. - */ -typedef void (*qo_dup_dqinfo_t)(struct xfs_trans *, struct xfs_trans *); -typedef void (*qo_mod_dquot_byino_t)(struct xfs_trans *, - struct xfs_inode *, uint, long); -typedef void (*qo_free_dqinfo_t)(struct xfs_trans *); -typedef void (*qo_apply_dquot_deltas_t)(struct xfs_trans *); -typedef void (*qo_unreserve_and_mod_dquots_t)(struct xfs_trans *); -typedef int (*qo_reserve_quota_nblks_t)( - struct xfs_trans *, struct xfs_mount *, - struct xfs_inode *, long, long, uint); -typedef int (*qo_reserve_quota_bydquots_t)( - struct xfs_trans *, struct xfs_mount *, - struct xfs_dquot *, struct xfs_dquot *, - long, long, uint); -typedef struct xfs_dqtrxops { - qo_dup_dqinfo_t qo_dup_dqinfo; - qo_free_dqinfo_t qo_free_dqinfo; - qo_mod_dquot_byino_t qo_mod_dquot_byino; - qo_apply_dquot_deltas_t qo_apply_dquot_deltas; - qo_reserve_quota_nblks_t qo_reserve_quota_nblks; - qo_reserve_quota_bydquots_t qo_reserve_quota_bydquots; - qo_unreserve_and_mod_dquots_t qo_unreserve_and_mod_dquots; -} xfs_dqtrxops_t; - -#define XFS_DQTRXOP(mp, tp, op, args...) \ - ((mp)->m_qm_ops->xfs_dqtrxops ? \ - ((mp)->m_qm_ops->xfs_dqtrxops->op)(tp, ## args) : 0) - -#define XFS_DQTRXOP_VOID(mp, tp, op, args...) \ - ((mp)->m_qm_ops->xfs_dqtrxops ? \ - ((mp)->m_qm_ops->xfs_dqtrxops->op)(tp, ## args) : (void)0) - -#define XFS_TRANS_DUP_DQINFO(mp, otp, ntp) \ - XFS_DQTRXOP_VOID(mp, otp, qo_dup_dqinfo, ntp) -#define XFS_TRANS_FREE_DQINFO(mp, tp) \ - XFS_DQTRXOP_VOID(mp, tp, qo_free_dqinfo) -#define XFS_TRANS_MOD_DQUOT_BYINO(mp, tp, ip, field, delta) \ - XFS_DQTRXOP_VOID(mp, tp, qo_mod_dquot_byino, ip, field, delta) -#define XFS_TRANS_APPLY_DQUOT_DELTAS(mp, tp) \ - XFS_DQTRXOP_VOID(mp, tp, qo_apply_dquot_deltas) -#define XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, tp, ip, nblks, ninos, fl) \ - XFS_DQTRXOP(mp, tp, qo_reserve_quota_nblks, mp, ip, nblks, ninos, fl) -#define XFS_TRANS_RESERVE_QUOTA_BYDQUOTS(mp, tp, ud, gd, nb, ni, fl) \ - XFS_DQTRXOP(mp, tp, qo_reserve_quota_bydquots, mp, ud, gd, nb, ni, fl) -#define XFS_TRANS_UNRESERVE_AND_MOD_DQUOTS(mp, tp) \ - XFS_DQTRXOP_VOID(mp, tp, qo_unreserve_and_mod_dquots) - -#define XFS_TRANS_UNRESERVE_QUOTA_NBLKS(mp, tp, ip, nblks, ninos, flags) \ - XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, tp, ip, -(nblks), -(ninos), flags) -#define XFS_TRANS_RESERVE_QUOTA(mp, tp, ud, gd, nb, ni, f) \ - XFS_TRANS_RESERVE_QUOTA_BYDQUOTS(mp, tp, ud, gd, nb, ni, \ - f | XFS_QMOPT_RES_REGBLKS) -#define XFS_TRANS_UNRESERVE_QUOTA(mp, tp, ud, gd, nb, ni, f) \ - XFS_TRANS_RESERVE_QUOTA_BYDQUOTS(mp, tp, ud, gd, -(nb), -(ni), \ +#ifdef CONFIG_XFS_QUOTA +extern void xfs_trans_dup_dqinfo(struct xfs_trans *, struct xfs_trans *); +extern void xfs_trans_free_dqinfo(struct xfs_trans *); +extern void xfs_trans_mod_dquot_byino(struct xfs_trans *, struct xfs_inode *, + uint, long); +extern void xfs_trans_apply_dquot_deltas(struct xfs_trans *); +extern void xfs_trans_unreserve_and_mod_dquots(struct xfs_trans *); +extern int xfs_trans_reserve_quota_nblks(struct xfs_trans *, + struct xfs_inode *, long, long, uint); +extern int xfs_trans_reserve_quota_bydquots(struct xfs_trans *, + struct xfs_mount *, struct xfs_dquot *, + struct xfs_dquot *, long, long, uint); + +extern int xfs_qm_vop_dqalloc(struct xfs_inode *, uid_t, gid_t, prid_t, uint, + struct xfs_dquot **, struct xfs_dquot **); +extern void xfs_qm_vop_create_dqattach(struct xfs_trans *, struct xfs_inode *, + struct xfs_dquot *, struct xfs_dquot *); +extern int xfs_qm_vop_rename_dqattach(struct xfs_inode **); +extern struct xfs_dquot *xfs_qm_vop_chown(struct xfs_trans *, + struct xfs_inode *, struct xfs_dquot **, struct xfs_dquot *); +extern int xfs_qm_vop_chown_reserve(struct xfs_trans *, struct xfs_inode *, + struct xfs_dquot *, struct xfs_dquot *, uint); +extern int xfs_qm_dqattach(struct xfs_inode *, uint); +extern int xfs_qm_dqattach_locked(struct xfs_inode *, uint); +extern void xfs_qm_dqdetach(struct xfs_inode *); +extern void xfs_qm_dqrele(struct xfs_dquot *); +extern void xfs_qm_statvfs(struct xfs_inode *, struct kstatfs *); +extern int xfs_qm_sync(struct xfs_mount *, int); +extern int xfs_qm_newmount(struct xfs_mount *, uint *, uint *); +extern void xfs_qm_mount_quotas(struct xfs_mount *); +extern void xfs_qm_unmount(struct xfs_mount *); +extern void xfs_qm_unmount_quotas(struct xfs_mount *); + +#else +#define xfs_trans_dup_dqinfo(tp, tp2) +#define xfs_trans_free_dqinfo(tp) +#define xfs_trans_mod_dquot_byino(tp, ip, fields, delta) +#define xfs_trans_apply_dquot_deltas(tp) +#define xfs_trans_unreserve_and_mod_dquots(tp) +#define xfs_trans_reserve_quota_nblks(tp, ip, nblks, ninos, flags) (0) +#define xfs_trans_reserve_quota_bydquots(tp, mp, u, g, nb, ni, fl) (0) +#define xfs_qm_vop_dqalloc(ip, uid, gid, prid, fl, ou, og) (0) +#define xfs_qm_vop_create_dqattach(tp, ip, u, g) +#define xfs_qm_vop_rename_dqattach(it) (0) +#define xfs_qm_vop_chown(tp, ip, old, new) (NULL) +#define xfs_qm_vop_chown_reserve(tp, ip, u, g, fl) (0) +#define xfs_qm_dqattach(ip, fl) (0) +#define xfs_qm_dqattach_locked(ip, fl) (0) +#define xfs_qm_dqdetach(ip) +#define xfs_qm_dqrele(d) +#define xfs_qm_statvfs(ip, s) +#define xfs_qm_sync(mp, fl) (0) +#define xfs_qm_newmount(mp, a, b) (0) +#define xfs_qm_mount_quotas(mp) +#define xfs_qm_unmount(mp) +#define xfs_qm_unmount_quotas(mp) (0) +#endif /* CONFIG_XFS_QUOTA */ + +#define xfs_trans_unreserve_quota_nblks(tp, ip, nblks, ninos, flags) \ + xfs_trans_reserve_quota_nblks(tp, ip, -(nblks), -(ninos), flags) +#define xfs_trans_reserve_quota(tp, mp, ud, gd, nb, ni, f) \ + xfs_trans_reserve_quota_bydquots(tp, mp, ud, gd, nb, ni, \ f | XFS_QMOPT_RES_REGBLKS) extern int xfs_qm_dqcheck(xfs_disk_dquot_t *, xfs_dqid_t, uint, uint, char *); extern int xfs_mount_reset_sbqflags(struct xfs_mount *); -extern struct xfs_qmops xfs_qmcore_xfs; - #endif /* __KERNEL__ */ - #endif /* __XFS_QUOTA_H__ */ Index: xfs/fs/xfs/xfs_trans.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans.c 2009-05-27 11:14:50.058939944 +0200 +++ xfs/fs/xfs/xfs_trans.c 2009-05-27 11:17:27.980865945 +0200 @@ -297,7 +297,7 @@ xfs_trans_dup( tp->t_rtx_res = tp->t_rtx_res_used; ntp->t_pflags = tp->t_pflags; - XFS_TRANS_DUP_DQINFO(tp->t_mountp, tp, ntp); + xfs_trans_dup_dqinfo(tp, ntp); atomic_inc(&tp->t_mountp->m_active_trans); return ntp; @@ -831,7 +831,7 @@ shut_us_down: * means is that we have some (non-persistent) quota * reservations that need to be unreserved. */ - XFS_TRANS_UNRESERVE_AND_MOD_DQUOTS(mp, tp); + xfs_trans_unreserve_and_mod_dquots(tp); if (tp->t_ticket) { commit_lsn = xfs_log_done(mp, tp->t_ticket, NULL, log_flags); @@ -850,10 +850,9 @@ shut_us_down: /* * If we need to update the superblock, then do it now. */ - if (tp->t_flags & XFS_TRANS_SB_DIRTY) { + if (tp->t_flags & XFS_TRANS_SB_DIRTY) xfs_trans_apply_sb_deltas(tp); - } - XFS_TRANS_APPLY_DQUOT_DELTAS(mp, tp); + xfs_trans_apply_dquot_deltas(tp); /* * Ask each log item how many log_vector entries it will @@ -1058,7 +1057,7 @@ xfs_trans_uncommit( } xfs_trans_unreserve_and_mod_sb(tp); - XFS_TRANS_UNRESERVE_AND_MOD_DQUOTS(tp->t_mountp, tp); + xfs_trans_unreserve_and_mod_dquots(tp); xfs_trans_free_items(tp, flags); xfs_trans_free_busy(tp); @@ -1183,7 +1182,7 @@ xfs_trans_cancel( } #endif xfs_trans_unreserve_and_mod_sb(tp); - XFS_TRANS_UNRESERVE_AND_MOD_DQUOTS(mp, tp); + xfs_trans_unreserve_and_mod_dquots(tp); if (tp->t_ticket) { if (flags & XFS_TRANS_RELEASE_LOG_RES) { @@ -1213,7 +1212,7 @@ xfs_trans_free( xfs_trans_t *tp) { atomic_dec(&tp->t_mountp->m_active_trans); - XFS_TRANS_FREE_DQINFO(tp->t_mountp, tp); + xfs_trans_free_dqinfo(tp); kmem_zone_free(xfs_trans_zone, tp); } Index: xfs/fs/xfs/xfs_utils.c =================================================================== --- xfs.orig/fs/xfs/xfs_utils.c 2009-05-27 11:14:50.062939545 +0200 +++ xfs/fs/xfs/xfs_utils.c 2009-05-27 11:17:27.982973196 +0200 @@ -166,7 +166,7 @@ xfs_dir_ialloc( xfs_buf_relse(ialloc_context); if (dqinfo) { tp->t_dqinfo = dqinfo; - XFS_TRANS_FREE_DQINFO(tp->t_mountp, tp); + xfs_trans_free_dqinfo(tp); } *tpp = ntp; *ipp = NULL; Index: xfs/fs/xfs/xfs_bmap.c =================================================================== --- xfs.orig/fs/xfs/xfs_bmap.c 2009-05-27 11:14:50.067939483 +0200 +++ xfs/fs/xfs/xfs_bmap.c 2009-05-27 11:17:27.987965801 +0200 @@ -2691,7 +2691,7 @@ xfs_bmap_rtalloc( * Adjust the disk quota also. This was reserved * earlier. */ - XFS_TRANS_MOD_DQUOT_BYINO(mp, ap->tp, ap->ip, + xfs_trans_mod_dquot_byino(ap->tp, ap->ip, ap->wasdel ? XFS_TRANS_DQ_DELRTBCOUNT : XFS_TRANS_DQ_RTBCOUNT, (long) ralen); } else { @@ -2995,7 +2995,7 @@ xfs_bmap_btalloc( * Adjust the disk quota also. This was reserved * earlier. */ - XFS_TRANS_MOD_DQUOT_BYINO(mp, ap->tp, ap->ip, + xfs_trans_mod_dquot_byino(ap->tp, ap->ip, ap->wasdel ? XFS_TRANS_DQ_DELBCOUNT : XFS_TRANS_DQ_BCOUNT, (long) args.len); @@ -3066,7 +3066,7 @@ xfs_bmap_btree_to_extents( return error; xfs_bmap_add_free(cbno, 1, cur->bc_private.b.flist, mp); ip->i_d.di_nblocks--; - XFS_TRANS_MOD_DQUOT_BYINO(mp, tp, ip, XFS_TRANS_DQ_BCOUNT, -1L); + xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_BCOUNT, -1L); xfs_trans_binval(tp, cbp); if (cur->bc_bufs[0] == cbp) cur->bc_bufs[0] = NULL; @@ -3386,7 +3386,7 @@ xfs_bmap_del_extent( * Adjust quota data. */ if (qfield) - XFS_TRANS_MOD_DQUOT_BYINO(mp, tp, ip, qfield, (long)-nblks); + xfs_trans_mod_dquot_byino(tp, ip, qfield, (long)-nblks); /* * Account for change in delayed indirect blocks. @@ -3523,7 +3523,7 @@ xfs_bmap_extents_to_btree( *firstblock = cur->bc_private.b.firstblock = args.fsbno; cur->bc_private.b.allocated++; ip->i_d.di_nblocks++; - XFS_TRANS_MOD_DQUOT_BYINO(mp, tp, ip, XFS_TRANS_DQ_BCOUNT, 1L); + xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_BCOUNT, 1L); abp = xfs_btree_get_bufl(mp, tp, args.fsbno, 0); /* * Fill in the child block. @@ -3690,7 +3690,7 @@ xfs_bmap_local_to_extents( XFS_BMAP_TRACE_POST_UPDATE("new", ip, 0, whichfork); XFS_IFORK_NEXT_SET(ip, whichfork, 1); ip->i_d.di_nblocks = 1; - XFS_TRANS_MOD_DQUOT_BYINO(args.mp, tp, ip, + xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_BCOUNT, 1L); flags |= xfs_ilog_fext(whichfork); } else { @@ -4048,7 +4048,7 @@ xfs_bmap_add_attrfork( XFS_TRANS_PERM_LOG_RES, XFS_ADDAFORK_LOG_COUNT))) goto error0; xfs_ilock(ip, XFS_ILOCK_EXCL); - error = XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, tp, ip, blks, 0, rsvd ? + error = xfs_trans_reserve_quota_nblks(tp, ip, blks, 0, rsvd ? XFS_QMOPT_RES_REGBLKS | XFS_QMOPT_FORCE_RES : XFS_QMOPT_RES_REGBLKS); if (error) { @@ -4983,10 +4983,11 @@ xfs_bmapi( * adjusted later. We return if we haven't * allocated blocks already inside this loop. */ - if ((error = XFS_TRANS_RESERVE_QUOTA_NBLKS( - mp, NULL, ip, (long)alen, 0, + error = xfs_trans_reserve_quota_nblks( + NULL, ip, (long)alen, 0, rt ? XFS_QMOPT_RES_RTBLKS : - XFS_QMOPT_RES_REGBLKS))) { + XFS_QMOPT_RES_REGBLKS); + if (error) { if (n == 0) { *nmap = 0; ASSERT(cur == NULL); @@ -5035,8 +5036,8 @@ xfs_bmapi( if (XFS_IS_QUOTA_ON(mp)) /* unreserve the blocks now */ (void) - XFS_TRANS_UNRESERVE_QUOTA_NBLKS( - mp, NULL, ip, + xfs_trans_unreserve_quota_nblks( + NULL, ip, (long)alen, 0, rt ? XFS_QMOPT_RES_RTBLKS : XFS_QMOPT_RES_REGBLKS); @@ -5691,14 +5692,14 @@ xfs_bunmapi( do_div(rtexts, mp->m_sb.sb_rextsize); xfs_mod_incore_sb(mp, XFS_SBS_FREXTENTS, (int64_t)rtexts, rsvd); - (void)XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, - NULL, ip, -((long)del.br_blockcount), 0, + (void)xfs_trans_reserve_quota_nblks(NULL, + ip, -((long)del.br_blockcount), 0, XFS_QMOPT_RES_RTBLKS); } else { xfs_mod_incore_sb(mp, XFS_SBS_FDBLOCKS, (int64_t)del.br_blockcount, rsvd); - (void)XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, - NULL, ip, -((long)del.br_blockcount), 0, + (void)xfs_trans_reserve_quota_nblks(NULL, + ip, -((long)del.br_blockcount), 0, XFS_QMOPT_RES_REGBLKS); } ip->i_delayed_blks -= del.br_blockcount; Index: xfs/fs/xfs/xfs_bmap_btree.c =================================================================== --- xfs.orig/fs/xfs/xfs_bmap_btree.c 2009-05-27 11:14:50.073964481 +0200 +++ xfs/fs/xfs/xfs_bmap_btree.c 2009-05-27 11:17:27.990960596 +0200 @@ -590,7 +590,7 @@ xfs_bmbt_alloc_block( cur->bc_private.b.allocated++; cur->bc_private.b.ip->i_d.di_nblocks++; xfs_trans_log_inode(args.tp, cur->bc_private.b.ip, XFS_ILOG_CORE); - XFS_TRANS_MOD_DQUOT_BYINO(args.mp, args.tp, cur->bc_private.b.ip, + xfs_trans_mod_dquot_byino(args.tp, cur->bc_private.b.ip, XFS_TRANS_DQ_BCOUNT, 1L); new->l = cpu_to_be64(args.fsbno); @@ -618,7 +618,7 @@ xfs_bmbt_free_block( ip->i_d.di_nblocks--; xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); - XFS_TRANS_MOD_DQUOT_BYINO(mp, tp, ip, XFS_TRANS_DQ_BCOUNT, -1L); + xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_BCOUNT, -1L); xfs_trans_binval(tp, bp); return 0; } Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c 2009-05-27 11:14:50.077939638 +0200 +++ xfs/fs/xfs/xfs_vnodeops.c 2009-05-27 11:25:30.776848132 +0200 @@ -118,7 +118,7 @@ xfs_setattr( */ ASSERT(udqp == NULL); ASSERT(gdqp == NULL); - code = XFS_QM_DQVOPALLOC(mp, ip, uid, gid, ip->i_d.di_projid, + code = xfs_qm_vop_dqalloc(ip, uid, gid, ip->i_d.di_projid, qflags, &udqp, &gdqp); if (code) return code; @@ -180,10 +180,11 @@ xfs_setattr( * Do a quota reservation only if uid/gid is actually * going to change. */ - if ((XFS_IS_UQUOTA_ON(mp) && iuid != uid) || - (XFS_IS_GQUOTA_ON(mp) && igid != gid)) { + if (XFS_IS_QUOTA_RUNNING(mp) && + ((XFS_IS_UQUOTA_ON(mp) && iuid != uid) || + (XFS_IS_GQUOTA_ON(mp) && igid != gid))) { ASSERT(tp); - code = XFS_QM_DQVOPCHOWNRESV(mp, tp, ip, udqp, gdqp, + code = xfs_qm_vop_chown_reserve(tp, ip, udqp, gdqp, capable(CAP_FOWNER) ? XFS_QMOPT_FORCE_RES : 0); if (code) /* out of quota */ @@ -217,7 +218,7 @@ xfs_setattr( /* * Make sure that the dquots are attached to the inode. */ - code = XFS_QM_DQATTACH(mp, ip, XFS_QMOPT_ILOCKED); + code = xfs_qm_dqattach_locked(ip, 0); if (code) goto error_return; @@ -351,21 +352,21 @@ xfs_setattr( * in the transaction. */ if (iuid != uid) { - if (XFS_IS_UQUOTA_ON(mp)) { + if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_UQUOTA_ON(mp)) { ASSERT(mask & ATTR_UID); ASSERT(udqp); - olddquot1 = XFS_QM_DQVOPCHOWN(mp, tp, ip, + olddquot1 = xfs_qm_vop_chown(tp, ip, &ip->i_udquot, udqp); } ip->i_d.di_uid = uid; inode->i_uid = uid; } if (igid != gid) { - if (XFS_IS_GQUOTA_ON(mp)) { + if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_GQUOTA_ON(mp)) { ASSERT(!XFS_IS_PQUOTA_ON(mp)); ASSERT(mask & ATTR_GID); ASSERT(gdqp); - olddquot2 = XFS_QM_DQVOPCHOWN(mp, tp, ip, + olddquot2 = xfs_qm_vop_chown(tp, ip, &ip->i_gdquot, gdqp); } ip->i_d.di_gid = gid; @@ -461,10 +462,10 @@ xfs_setattr( /* * Release any dquot(s) the inode had kept before chown. */ - XFS_QM_DQRELE(mp, olddquot1); - XFS_QM_DQRELE(mp, olddquot2); - XFS_QM_DQRELE(mp, udqp); - XFS_QM_DQRELE(mp, gdqp); + xfs_qm_dqrele(olddquot1); + xfs_qm_dqrele(olddquot2); + xfs_qm_dqrele(udqp); + xfs_qm_dqrele(gdqp); if (code) { return code; @@ -482,8 +483,8 @@ xfs_setattr( commit_flags |= XFS_TRANS_ABORT; /* FALLTHROUGH */ error_return: - XFS_QM_DQRELE(mp, udqp); - XFS_QM_DQRELE(mp, gdqp); + xfs_qm_dqrele(udqp); + xfs_qm_dqrele(gdqp); if (tp) { xfs_trans_cancel(tp, commit_flags); } @@ -739,7 +740,8 @@ xfs_free_eofblocks( /* * Attach the dquots to the inode up front. */ - if ((error = XFS_QM_DQATTACH(mp, ip, 0))) + error = xfs_qm_dqattach(ip, 0); + if (error) return error; /* @@ -1181,7 +1183,8 @@ xfs_inactive( ASSERT(ip->i_d.di_nlink == 0); - if ((error = XFS_QM_DQATTACH(mp, ip, 0))) + error = xfs_qm_dqattach(ip, 0); + if (error) return VN_INACTIVE_CACHE; tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE); @@ -1307,7 +1310,7 @@ xfs_inactive( /* * Credit the quota account(s). The inode is gone. */ - XFS_TRANS_MOD_DQUOT_BYINO(mp, tp, ip, XFS_TRANS_DQ_ICOUNT, -1); + xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_ICOUNT, -1); /* * Just ignore errors at this point. There is nothing we can @@ -1323,11 +1326,11 @@ xfs_inactive( xfs_fs_cmn_err(CE_NOTE, mp, "xfs_inactive: " "xfs_trans_commit() returned error %d", error); } + /* * Release the dquots held by inode, if any. */ - XFS_QM_DQDETACH(mp, ip); - + xfs_qm_dqdetach(ip); xfs_iunlock(ip, XFS_IOLOCK_EXCL | XFS_ILOCK_EXCL); out: @@ -1427,8 +1430,7 @@ xfs_create( /* * Make sure that we have allocated dquot(s) on disk. */ - error = XFS_QM_DQVOPALLOC(mp, dp, - current_fsuid(), current_fsgid(), prid, + error = xfs_qm_vop_dqalloc(dp, current_fsuid(), current_fsgid(), prid, XFS_QMOPT_QUOTALL | XFS_QMOPT_INHERIT, &udqp, &gdqp); if (error) goto std_return; @@ -1489,7 +1491,7 @@ xfs_create( /* * Reserve disk quota and the inode. */ - error = XFS_TRANS_RESERVE_QUOTA(mp, tp, udqp, gdqp, resblks, 1, 0); + error = xfs_trans_reserve_quota(tp, mp, udqp, gdqp, resblks, 1, 0); if (error) goto out_trans_cancel; @@ -1561,7 +1563,7 @@ xfs_create( * These ids of the inode couldn't have changed since the new * inode has been locked ever since it was created. */ - XFS_QM_DQVOPCREATE(mp, tp, ip, udqp, gdqp); + xfs_qm_vop_create_dqattach(tp, ip, udqp, gdqp); /* * xfs_trans_commit normally decrements the vnode ref count @@ -1580,8 +1582,8 @@ xfs_create( goto out_dqrele; } - XFS_QM_DQRELE(mp, udqp); - XFS_QM_DQRELE(mp, gdqp); + xfs_qm_dqrele(udqp); + xfs_qm_dqrele(gdqp); *ipp = ip; @@ -1602,8 +1604,8 @@ xfs_create( out_trans_cancel: xfs_trans_cancel(tp, cancel_flags); out_dqrele: - XFS_QM_DQRELE(mp, udqp); - XFS_QM_DQRELE(mp, gdqp); + xfs_qm_dqrele(udqp); + xfs_qm_dqrele(gdqp); if (unlock_dp_on_error) xfs_iunlock(dp, XFS_ILOCK_EXCL); @@ -1837,11 +1839,11 @@ xfs_remove( return error; } - error = XFS_QM_DQATTACH(mp, dp, 0); + error = xfs_qm_dqattach(dp, 0); if (error) goto std_return; - error = XFS_QM_DQATTACH(mp, ip, 0); + error = xfs_qm_dqattach(ip, 0); if (error) goto std_return; @@ -2028,11 +2030,11 @@ xfs_link( /* Return through std_return after this point. */ - error = XFS_QM_DQATTACH(mp, sip, 0); + error = xfs_qm_dqattach(sip, 0); if (error) goto std_return; - error = XFS_QM_DQATTACH(mp, tdp, 0); + error = xfs_qm_dqattach(tdp, 0); if (error) goto std_return; @@ -2205,8 +2207,7 @@ xfs_symlink( /* * Make sure that we have allocated dquot(s) on disk. */ - error = XFS_QM_DQVOPALLOC(mp, dp, - current_fsuid(), current_fsgid(), prid, + error = xfs_qm_vop_dqalloc(dp, current_fsuid(), current_fsgid(), prid, XFS_QMOPT_QUOTALL | XFS_QMOPT_INHERIT, &udqp, &gdqp); if (error) goto std_return; @@ -2248,7 +2249,7 @@ xfs_symlink( /* * Reserve disk quota : blocks and inode. */ - error = XFS_TRANS_RESERVE_QUOTA(mp, tp, udqp, gdqp, resblks, 1, 0); + error = xfs_trans_reserve_quota(tp, mp, udqp, gdqp, resblks, 1, 0); if (error) goto error_return; @@ -2288,7 +2289,7 @@ xfs_symlink( /* * Also attach the dquot(s) to it, if applicable. */ - XFS_QM_DQVOPCREATE(mp, tp, ip, udqp, gdqp); + xfs_qm_vop_create_dqattach(tp, ip, udqp, gdqp); if (resblks) resblks -= XFS_IALLOC_SPACE_RES(mp); @@ -2376,8 +2377,8 @@ xfs_symlink( goto error2; } error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); - XFS_QM_DQRELE(mp, udqp); - XFS_QM_DQRELE(mp, gdqp); + xfs_qm_dqrele(udqp); + xfs_qm_dqrele(gdqp); /* Fall through to std_return with error = 0 or errno from * xfs_trans_commit */ @@ -2401,8 +2402,8 @@ std_return: cancel_flags |= XFS_TRANS_ABORT; error_return: xfs_trans_cancel(tp, cancel_flags); - XFS_QM_DQRELE(mp, udqp); - XFS_QM_DQRELE(mp, gdqp); + xfs_qm_dqrele(udqp); + xfs_qm_dqrele(gdqp); if (unlock_dp_on_error) xfs_iunlock(dp, XFS_ILOCK_EXCL); @@ -2541,7 +2542,8 @@ xfs_alloc_file_space( if (XFS_FORCED_SHUTDOWN(mp)) return XFS_ERROR(EIO); - if ((error = XFS_QM_DQATTACH(mp, ip, 0))) + error = xfs_qm_dqattach(ip, 0); + if (error) return error; if (len <= 0) @@ -2628,8 +2630,8 @@ retry: break; } xfs_ilock(ip, XFS_ILOCK_EXCL); - error = XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, tp, ip, - qblocks, 0, quota_flag); + error = xfs_trans_reserve_quota_nblks(tp, ip, qblocks, + 0, quota_flag); if (error) goto error1; @@ -2688,7 +2690,7 @@ dmapi_enospc_check: error0: /* Cancel bmap, unlock inode, unreserve quota blocks, cancel trans */ xfs_bmap_cancel(&free_list); - XFS_TRANS_UNRESERVE_QUOTA_NBLKS(mp, tp, ip, qblocks, 0, quota_flag); + xfs_trans_unreserve_quota_nblks(tp, ip, qblocks, 0, quota_flag); error1: /* Just cancel transaction */ xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); @@ -2827,7 +2829,8 @@ xfs_free_file_space( xfs_itrace_entry(ip); - if ((error = XFS_QM_DQATTACH(mp, ip, 0))) + error = xfs_qm_dqattach(ip, 0); + if (error) return error; error = 0; @@ -2953,9 +2956,9 @@ xfs_free_file_space( break; } xfs_ilock(ip, XFS_ILOCK_EXCL); - error = XFS_TRANS_RESERVE_QUOTA(mp, tp, - ip->i_udquot, ip->i_gdquot, resblks, 0, - XFS_QMOPT_RES_REGBLKS); + error = xfs_trans_reserve_quota(tp, mp, + ip->i_udquot, ip->i_gdquot, + resblks, 0, XFS_QMOPT_RES_REGBLKS); if (error) goto error1; Index: xfs/fs/xfs/quota/xfs_qm.h =================================================================== --- xfs.orig/fs/xfs/quota/xfs_qm.h 2009-05-27 11:14:50.012967824 +0200 +++ xfs/fs/xfs/quota/xfs_qm.h 2009-05-27 11:17:27.998843443 +0200 @@ -127,8 +127,6 @@ typedef struct xfs_quotainfo { } xfs_quotainfo_t; -extern xfs_dqtrxops_t xfs_trans_dquot_ops; - extern void xfs_trans_mod_dquot(xfs_trans_t *, xfs_dquot_t *, uint, long); extern int xfs_trans_reserve_quota_bydquots(xfs_trans_t *, xfs_mount_t *, xfs_dquot_t *, xfs_dquot_t *, long, long, uint); @@ -159,17 +157,11 @@ typedef struct xfs_dquot_acct { #define XFS_QM_RTBWARNLIMIT 5 extern void xfs_qm_destroy_quotainfo(xfs_mount_t *); -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 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); /* dquot stuff */ extern boolean_t xfs_qm_dqalloc_incore(xfs_dquot_t **); -extern int xfs_qm_dqattach(xfs_inode_t *, uint); -extern void xfs_qm_dqdetach(xfs_inode_t *); extern int xfs_qm_dqpurge_all(xfs_mount_t *, uint); extern void xfs_qm_dqrele_all_inodes(xfs_mount_t *, uint); @@ -183,19 +175,6 @@ extern int xfs_qm_scall_getqstat(xfs_mo extern int xfs_qm_scall_quotaon(xfs_mount_t *, uint); extern int xfs_qm_scall_quotaoff(xfs_mount_t *, uint); -/* vop stuff */ -extern int xfs_qm_vop_dqalloc(xfs_mount_t *, xfs_inode_t *, - uid_t, gid_t, prid_t, uint, - xfs_dquot_t **, xfs_dquot_t **); -extern void xfs_qm_vop_dqattach_and_dqmod_newinode( - xfs_trans_t *, xfs_inode_t *, - xfs_dquot_t *, xfs_dquot_t *); -extern int xfs_qm_vop_rename_dqattach(xfs_inode_t **); -extern xfs_dquot_t * xfs_qm_vop_chown(xfs_trans_t *, xfs_inode_t *, - xfs_dquot_t **, xfs_dquot_t *); -extern int xfs_qm_vop_chown_reserve(xfs_trans_t *, xfs_inode_t *, - xfs_dquot_t *, xfs_dquot_t *, uint); - /* list stuff */ extern void xfs_qm_freelist_append(xfs_frlist_t *, xfs_dquot_t *); extern void xfs_qm_freelist_unlink(xfs_dquot_t *); Index: xfs/fs/xfs/quota/xfs_qm_bhv.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_qm_bhv.c 2009-05-27 11:14:50.023940799 +0200 +++ xfs/fs/xfs/quota/xfs_qm_bhv.c 2009-05-27 11:17:28.002843883 +0200 @@ -84,7 +84,7 @@ xfs_fill_statvfs_from_dquot( * return a statvfs of the project, not the entire filesystem. * This makes such trees appear as if they are filesystems in themselves. */ -STATIC void +void xfs_qm_statvfs( xfs_inode_t *ip, struct kstatfs *statp) @@ -92,20 +92,13 @@ xfs_qm_statvfs( xfs_mount_t *mp = ip->i_mount; xfs_dquot_t *dqp; - if (!(ip->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) || - !((mp->m_qflags & (XFS_PQUOTA_ACCT|XFS_OQUOTA_ENFD))) == - (XFS_PQUOTA_ACCT|XFS_OQUOTA_ENFD)) - return; - if (!xfs_qm_dqget(mp, NULL, ip->i_d.di_projid, XFS_DQ_PROJ, 0, &dqp)) { - xfs_disk_dquot_t *dp = &dqp->q_core; - - xfs_fill_statvfs_from_dquot(statp, dp); + xfs_fill_statvfs_from_dquot(statp, &dqp->q_core); xfs_qm_dqput(dqp); } } -STATIC int +int xfs_qm_newmount( xfs_mount_t *mp, uint *needquotamount, @@ -114,9 +107,6 @@ xfs_qm_newmount( uint quotaondisk; uint uquotaondisk = 0, gquotaondisk = 0, pquotaondisk = 0; - *quotaflags = 0; - *needquotamount = B_FALSE; - quotaondisk = xfs_sb_version_hasquota(&mp->m_sb) && (mp->m_sb.sb_qflags & XFS_ALL_QUOTA_ACCT); @@ -179,66 +169,6 @@ xfs_qm_newmount( return 0; } -STATIC int -xfs_qm_endmount( - xfs_mount_t *mp, - uint needquotamount, - uint quotaflags) -{ - if (needquotamount) { - ASSERT(mp->m_qflags == 0); - mp->m_qflags = quotaflags; - xfs_qm_mount_quotas(mp); - } - -#if defined(DEBUG) && defined(XFS_LOUD_RECOVERY) - if (! (XFS_IS_QUOTA_ON(mp))) - xfs_fs_cmn_err(CE_NOTE, mp, "Disk quotas not turned on"); - else - xfs_fs_cmn_err(CE_NOTE, mp, "Disk quotas turned on"); -#endif - -#ifdef QUOTADEBUG - if (XFS_IS_QUOTA_ON(mp) && xfs_qm_internalqcheck(mp)) - cmn_err(CE_WARN, "XFS: mount internalqcheck failed"); -#endif - - return 0; -} - -STATIC void -xfs_qm_dqrele_null( - xfs_dquot_t *dq) -{ - /* - * Called from XFS, where we always check first for a NULL dquot. - */ - if (!dq) - return; - xfs_qm_dqrele(dq); -} - - -struct xfs_qmops xfs_qmcore_xfs = { - .xfs_qminit = xfs_qm_newmount, - .xfs_qmdone = xfs_qm_unmount_quotadestroy, - .xfs_qmmount = xfs_qm_endmount, - .xfs_qmunmount = xfs_qm_unmount_quotas, - .xfs_dqrele = xfs_qm_dqrele_null, - .xfs_dqattach = xfs_qm_dqattach, - .xfs_dqdetach = xfs_qm_dqdetach, - .xfs_dqpurgeall = xfs_qm_dqpurge_all, - .xfs_dqvopalloc = xfs_qm_vop_dqalloc, - .xfs_dqvopcreate = xfs_qm_vop_dqattach_and_dqmod_newinode, - .xfs_dqvoprename = xfs_qm_vop_rename_dqattach, - .xfs_dqvopchown = xfs_qm_vop_chown, - .xfs_dqvopchownresv = xfs_qm_vop_chown_reserve, - .xfs_dqstatvfs = xfs_qm_statvfs, - .xfs_dqsync = xfs_qm_sync, - .xfs_dqtrxops = &xfs_trans_dquot_ops, -}; -EXPORT_SYMBOL(xfs_qmcore_xfs); - void __init xfs_qm_init(void) { Index: xfs/fs/xfs/xfs_attr.c =================================================================== --- xfs.orig/fs/xfs/xfs_attr.c 2009-05-27 11:14:50.084939550 +0200 +++ xfs/fs/xfs/xfs_attr.c 2009-05-27 11:17:28.009816489 +0200 @@ -249,8 +249,9 @@ xfs_attr_set_int(xfs_inode_t *dp, struct /* * Attach the dquots to the inode. */ - if ((error = XFS_QM_DQATTACH(mp, dp, 0))) - return (error); + error = xfs_qm_dqattach(dp, 0); + if (error) + return error; /* * If the inode doesn't have an attribute fork, add one. @@ -311,7 +312,7 @@ xfs_attr_set_int(xfs_inode_t *dp, struct } xfs_ilock(dp, XFS_ILOCK_EXCL); - error = XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, args.trans, dp, args.total, 0, + error = xfs_trans_reserve_quota_nblks(args.trans, dp, args.total, 0, rsvd ? XFS_QMOPT_RES_REGBLKS | XFS_QMOPT_FORCE_RES : XFS_QMOPT_RES_REGBLKS); if (error) { @@ -501,8 +502,9 @@ xfs_attr_remove_int(xfs_inode_t *dp, str /* * Attach the dquots to the inode. */ - if ((error = XFS_QM_DQATTACH(mp, dp, 0))) - return (error); + error = xfs_qm_dqattach(dp, 0); + if (error) + return error; /* * Start our first transaction of the day. Index: xfs/fs/xfs/xfs_iomap.c =================================================================== --- xfs.orig/fs/xfs/xfs_iomap.c 2009-05-27 11:14:50.088939640 +0200 +++ xfs/fs/xfs/xfs_iomap.c 2009-05-27 11:17:28.013815601 +0200 @@ -385,7 +385,7 @@ xfs_iomap_write_direct( * Make sure that the dquots are there. This doesn't hold * the ilock across a disk read. */ - error = XFS_QM_DQATTACH(ip->i_mount, ip, XFS_QMOPT_ILOCKED); + error = xfs_qm_dqattach_locked(ip, 0); if (error) return XFS_ERROR(error); @@ -444,8 +444,7 @@ xfs_iomap_write_direct( if (error) goto error_out; - error = XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, tp, ip, - qblocks, 0, quota_flag); + error = xfs_trans_reserve_quota_nblks(tp, ip, qblocks, 0, quota_flag); if (error) goto error1; @@ -495,7 +494,7 @@ xfs_iomap_write_direct( error0: /* Cancel bmap, unlock inode, unreserve quota blocks, cancel trans */ xfs_bmap_cancel(&free_list); - XFS_TRANS_UNRESERVE_QUOTA_NBLKS(mp, tp, ip, qblocks, 0, quota_flag); + xfs_trans_unreserve_quota_nblks(tp, ip, qblocks, 0, quota_flag); error1: /* Just cancel transaction */ xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); @@ -582,7 +581,7 @@ xfs_iomap_write_delay( * Make sure that the dquots are there. This doesn't hold * the ilock across a disk read. */ - error = XFS_QM_DQATTACH(mp, ip, XFS_QMOPT_ILOCKED); + error = xfs_qm_dqattach_locked(ip, 0); if (error) return XFS_ERROR(error); @@ -684,7 +683,8 @@ xfs_iomap_write_allocate( /* * Make sure that the dquots are there. */ - if ((error = XFS_QM_DQATTACH(mp, ip, 0))) + error = xfs_qm_dqattach(ip, 0); + if (error) return XFS_ERROR(error); offset_fsb = XFS_B_TO_FSBT(mp, offset); Index: xfs/fs/xfs/xfs_mount.h =================================================================== --- xfs.orig/fs/xfs/xfs_mount.h 2009-05-27 11:14:50.093940346 +0200 +++ xfs/fs/xfs/xfs_mount.h 2009-05-27 11:17:28.017838040 +0200 @@ -64,6 +64,8 @@ struct xfs_swapext; struct xfs_mru_cache; struct xfs_nameops; struct xfs_ail; +struct xfs_quotainfo; + /* * Prototypes and functions for the Data Migration subsystem. @@ -107,86 +109,6 @@ typedef struct xfs_dmops { (*(mp)->m_dm_ops->xfs_send_unmount)(mp,ip,right,mode,rval,fl) -/* - * Prototypes and functions for the Quota Management subsystem. - */ - -struct xfs_dquot; -struct xfs_dqtrxops; -struct xfs_quotainfo; - -typedef int (*xfs_qminit_t)(struct xfs_mount *, uint *, uint *); -typedef int (*xfs_qmmount_t)(struct xfs_mount *, uint, uint); -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); -typedef void (*xfs_dqdetach_t)(struct xfs_inode *); -typedef int (*xfs_dqpurgeall_t)(struct xfs_mount *, uint); -typedef int (*xfs_dqvopalloc_t)(struct xfs_mount *, - struct xfs_inode *, uid_t, gid_t, prid_t, uint, - struct xfs_dquot **, struct xfs_dquot **); -typedef void (*xfs_dqvopcreate_t)(struct xfs_trans *, struct xfs_inode *, - struct xfs_dquot *, struct xfs_dquot *); -typedef int (*xfs_dqvoprename_t)(struct xfs_inode **); -typedef struct xfs_dquot * (*xfs_dqvopchown_t)( - struct xfs_trans *, struct xfs_inode *, - 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 *, struct kstatfs *); -typedef int (*xfs_dqsync_t)(struct xfs_mount *, int flags); - -typedef struct xfs_qmops { - xfs_qminit_t xfs_qminit; - xfs_qmdone_t xfs_qmdone; - xfs_qmmount_t xfs_qmmount; - xfs_qmunmount_t xfs_qmunmount; - xfs_dqrele_t xfs_dqrele; - xfs_dqattach_t xfs_dqattach; - xfs_dqdetach_t xfs_dqdetach; - xfs_dqpurgeall_t xfs_dqpurgeall; - xfs_dqvopalloc_t xfs_dqvopalloc; - xfs_dqvopcreate_t xfs_dqvopcreate; - xfs_dqvoprename_t xfs_dqvoprename; - xfs_dqvopchown_t xfs_dqvopchown; - xfs_dqvopchownresv_t xfs_dqvopchownresv; - xfs_dqstatvfs_t xfs_dqstatvfs; - xfs_dqsync_t xfs_dqsync; - struct xfs_dqtrxops *xfs_dqtrxops; -} xfs_qmops_t; - -#define XFS_QM_INIT(mp, mnt, fl) \ - (*(mp)->m_qm_ops->xfs_qminit)(mp, mnt, fl) -#define XFS_QM_MOUNT(mp, mnt, fl) \ - (*(mp)->m_qm_ops->xfs_qmmount)(mp, mnt, fl) -#define XFS_QM_UNMOUNT(mp) \ - (*(mp)->m_qm_ops->xfs_qmunmount)(mp) -#define XFS_QM_DONE(mp) \ - (*(mp)->m_qm_ops->xfs_qmdone)(mp) -#define XFS_QM_DQRELE(mp, dq) \ - (*(mp)->m_qm_ops->xfs_dqrele)(dq) -#define XFS_QM_DQATTACH(mp, ip, fl) \ - (*(mp)->m_qm_ops->xfs_dqattach)(ip, fl) -#define XFS_QM_DQDETACH(mp, ip) \ - (*(mp)->m_qm_ops->xfs_dqdetach)(ip) -#define XFS_QM_DQPURGEALL(mp, fl) \ - (*(mp)->m_qm_ops->xfs_dqpurgeall)(mp, fl) -#define XFS_QM_DQVOPALLOC(mp, ip, uid, gid, prid, fl, dq1, dq2) \ - (*(mp)->m_qm_ops->xfs_dqvopalloc)(mp, ip, uid, gid, prid, fl, dq1, dq2) -#define XFS_QM_DQVOPCREATE(mp, tp, ip, dq1, dq2) \ - (*(mp)->m_qm_ops->xfs_dqvopcreate)(tp, ip, dq1, dq2) -#define XFS_QM_DQVOPRENAME(mp, ip) \ - (*(mp)->m_qm_ops->xfs_dqvoprename)(ip) -#define XFS_QM_DQVOPCHOWN(mp, tp, ip, dqp, dq) \ - (*(mp)->m_qm_ops->xfs_dqvopchown)(tp, ip, dqp, dq) -#define XFS_QM_DQVOPCHOWNRESV(mp, tp, ip, dq1, dq2, fl) \ - (*(mp)->m_qm_ops->xfs_dqvopchownresv)(tp, ip, dq1, dq2, fl) -#define XFS_QM_DQSTATVFS(ip, statp) \ - (*(ip)->i_mount->m_qm_ops->xfs_dqstatvfs)(ip, statp) -#define XFS_QM_DQSYNC(mp, flags) \ - (*(mp)->m_qm_ops->xfs_dqsync)(mp, flags) - #ifdef HAVE_PERCPU_SB /* @@ -510,8 +432,6 @@ extern int xfs_sb_validate_fsb_count(str extern int xfs_dmops_get(struct xfs_mount *); extern void xfs_dmops_put(struct xfs_mount *); -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/fs/xfs/Makefile =================================================================== --- xfs.orig/fs/xfs/Makefile 2009-05-27 11:14:50.099970234 +0200 +++ xfs/fs/xfs/Makefile 2009-05-27 11:17:28.019816644 +0200 @@ -88,8 +88,7 @@ xfs-y += xfs_alloc.o \ xfs_utils.o \ xfs_vnodeops.o \ xfs_rw.o \ - xfs_dmops.o \ - xfs_qmops.o + xfs_dmops.o xfs-$(CONFIG_XFS_TRACE) += xfs_btree_trace.o \ xfs_dir2_trace.o Index: xfs/fs/xfs/linux-2.6/xfs_ioctl.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_ioctl.c 2009-05-27 11:14:50.104939511 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_ioctl.c 2009-05-27 11:26:12.517361521 +0200 @@ -908,7 +908,8 @@ xfs_ioctl_setattr( struct xfs_mount *mp = ip->i_mount; struct xfs_trans *tp; unsigned int lock_flags = 0; - struct xfs_dquot *udqp = NULL, *gdqp = NULL; + struct xfs_dquot *udqp = NULL; + struct xfs_dquot *gdqp = NULL; struct xfs_dquot *olddquot = NULL; int code; @@ -928,7 +929,7 @@ xfs_ioctl_setattr( * because the i_*dquot fields will get updated anyway. */ if (XFS_IS_QUOTA_ON(mp) && (mask & FSX_PROJID)) { - code = XFS_QM_DQVOPALLOC(mp, ip, ip->i_d.di_uid, + code = xfs_qm_vop_dqalloc(ip, ip->i_d.di_uid, ip->i_d.di_gid, fa->fsx_projid, XFS_QMOPT_PQUOTA, &udqp, &gdqp); if (code) @@ -963,10 +964,11 @@ xfs_ioctl_setattr( * Do a quota reservation only if projid is actually going to change. */ if (mask & FSX_PROJID) { - if (XFS_IS_PQUOTA_ON(mp) && + if (XFS_IS_QUOTA_RUNNING(mp) && + XFS_IS_PQUOTA_ON(mp) && ip->i_d.di_projid != fa->fsx_projid) { ASSERT(tp); - code = XFS_QM_DQVOPCHOWNRESV(mp, tp, ip, udqp, gdqp, + code = xfs_qm_vop_chown_reserve(tp, ip, udqp, gdqp, capable(CAP_FOWNER) ? XFS_QMOPT_FORCE_RES : 0); if (code) /* out of quota */ @@ -1068,8 +1070,8 @@ xfs_ioctl_setattr( * in the transaction. */ if (ip->i_d.di_projid != fa->fsx_projid) { - if (XFS_IS_PQUOTA_ON(mp)) { - olddquot = XFS_QM_DQVOPCHOWN(mp, tp, ip, + if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_PQUOTA_ON(mp)) { + olddquot = xfs_qm_vop_chown(tp, ip, &ip->i_gdquot, gdqp); } ip->i_d.di_projid = fa->fsx_projid; @@ -1115,9 +1117,9 @@ xfs_ioctl_setattr( /* * Release any dquot(s) the inode had kept before chown. */ - XFS_QM_DQRELE(mp, olddquot); - XFS_QM_DQRELE(mp, udqp); - XFS_QM_DQRELE(mp, gdqp); + xfs_qm_dqrele(olddquot); + xfs_qm_dqrele(udqp); + xfs_qm_dqrele(gdqp); if (code) return code; @@ -1131,8 +1133,8 @@ xfs_ioctl_setattr( return 0; error_return: - XFS_QM_DQRELE(mp, udqp); - XFS_QM_DQRELE(mp, gdqp); + xfs_qm_dqrele(udqp); + xfs_qm_dqrele(gdqp); xfs_trans_cancel(tp, 0); if (lock_flags) xfs_iunlock(ip, lock_flags); Index: xfs/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2009-05-27 11:14:50.108938972 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_super.c 2009-05-27 11:17:28.025850723 +0200 @@ -405,6 +405,14 @@ xfs_parseargs( return EINVAL; } +#ifndef CONFIG_XFS_QUOTA + if (XFS_IS_QUOTA_RUNNING(mp)) { + cmn_err(CE_WARN, + "XFS: quota support not available in this kernel."); + return EINVAL; + } +#endif + if ((mp->m_qflags & (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE)) && (mp->m_qflags & (XFS_PQUOTA_ACCT | XFS_PQUOTA_ACTIVE))) { cmn_err(CE_WARN, @@ -1098,7 +1106,6 @@ xfs_fs_put_super( xfs_freesb(mp); xfs_icsb_destroy_counters(mp); xfs_close_devices(mp); - xfs_qmops_put(mp); xfs_dmops_put(mp); xfs_free_fsname(mp); kfree(mp); @@ -1168,6 +1175,7 @@ xfs_fs_statfs( { struct xfs_mount *mp = XFS_M(dentry->d_sb); xfs_sb_t *sbp = &mp->m_sb; + struct xfs_inode *ip = XFS_I(dentry->d_inode); __uint64_t fakeinos, id; xfs_extlen_t lsize; @@ -1196,7 +1204,10 @@ xfs_fs_statfs( statp->f_ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); spin_unlock(&mp->m_sb_lock); - XFS_QM_DQSTATVFS(XFS_I(dentry->d_inode), statp); + if ((ip->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) || + ((mp->m_qflags & (XFS_PQUOTA_ACCT|XFS_OQUOTA_ENFD))) == + (XFS_PQUOTA_ACCT|XFS_OQUOTA_ENFD)) + xfs_qm_statvfs(ip, statp); return 0; } @@ -1404,16 +1415,13 @@ xfs_fs_fill_super( error = xfs_dmops_get(mp); if (error) goto out_free_fsname; - error = xfs_qmops_get(mp); - if (error) - goto out_put_dmops; if (silent) flags |= XFS_MFSI_QUIET; error = xfs_open_devices(mp); if (error) - goto out_put_qmops; + goto out_put_dmops; if (xfs_icsb_init_counters(mp)) mp->m_flags |= XFS_MOUNT_NO_PERCPU_SB; @@ -1482,8 +1490,6 @@ xfs_fs_fill_super( out_destroy_counters: xfs_icsb_destroy_counters(mp); xfs_close_devices(mp); - out_put_qmops: - xfs_qmops_put(mp); out_put_dmops: xfs_dmops_put(mp); out_free_fsname: Index: xfs/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-05-27 11:14:50.113939678 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-05-27 11:17:28.027815777 +0200 @@ -43,6 +43,7 @@ #include "xfs_buf_item.h" #include "xfs_inode_item.h" #include "xfs_rw.h" +#include "xfs_quota.h" #include #include @@ -317,12 +318,12 @@ xfs_quiesce_data( /* push non-blocking */ xfs_sync_inodes(mp, SYNC_DELWRI|SYNC_BDFLUSH); - XFS_QM_DQSYNC(mp, SYNC_BDFLUSH); + xfs_qm_sync(mp, SYNC_BDFLUSH); xfs_filestream_flush(mp); /* push and block */ xfs_sync_inodes(mp, SYNC_DELWRI|SYNC_WAIT|SYNC_IOWAIT); - XFS_QM_DQSYNC(mp, SYNC_WAIT); + xfs_qm_sync(mp, SYNC_WAIT); /* write superblock and hoover up shutdown errors */ error = xfs_sync_fsdata(mp, 0); @@ -467,7 +468,7 @@ xfs_sync_worker( xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); xfs_reclaim_inodes(mp, 0, XFS_IFLUSH_DELWRI_ELSE_ASYNC); /* dgc: errors ignored here */ - error = XFS_QM_DQSYNC(mp, SYNC_BDFLUSH); + error = xfs_qm_sync(mp, SYNC_BDFLUSH); error = xfs_sync_fsdata(mp, SYNC_BDFLUSH); if (xfs_log_need_covered(mp)) error = xfs_commit_dummy_trans(mp, XFS_LOG_FORCE); Index: xfs/fs/xfs/quota/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_dquot.c 2009-05-27 11:14:50.030940222 +0200 +++ xfs/fs/xfs/quota/xfs_dquot.c 2009-05-27 11:17:28.031850579 +0200 @@ -1194,7 +1194,9 @@ void xfs_qm_dqrele( xfs_dquot_t *dqp) { - ASSERT(dqp); + if (!dqp) + return; + xfs_dqtrace_entry(dqp, "DQRELE"); xfs_dqlock(dqp); Index: xfs/fs/xfs/quota/xfs_dquot.h =================================================================== --- xfs.orig/fs/xfs/quota/xfs_dquot.h 2009-05-27 11:14:50.039940390 +0200 +++ xfs/fs/xfs/quota/xfs_dquot.h 2009-05-27 11:17:28.032850705 +0200 @@ -181,7 +181,6 @@ extern void xfs_qm_adjust_dqlimits(xfs_ extern int xfs_qm_dqget(xfs_mount_t *, xfs_inode_t *, xfs_dqid_t, uint, uint, xfs_dquot_t **); extern void xfs_qm_dqput(xfs_dquot_t *); -extern void xfs_qm_dqrele(xfs_dquot_t *); extern void xfs_dqlock(xfs_dquot_t *); extern void xfs_dqlock2(xfs_dquot_t *, xfs_dquot_t *); extern void xfs_dqunlock(xfs_dquot_t *); Index: xfs/fs/xfs/quota/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_qm.c 2009-05-27 11:14:50.046939534 +0200 +++ xfs/fs/xfs/quota/xfs_qm.c 2009-05-27 11:37:15.354855599 +0200 @@ -287,11 +287,13 @@ xfs_qm_rele_quotafs_ref( * Just destroy the quotainfo structure. */ void -xfs_qm_unmount_quotadestroy( - xfs_mount_t *mp) +xfs_qm_unmount( + struct xfs_mount *mp) { - if (mp->m_quotainfo) + if (mp->m_quotainfo) { + xfs_qm_dqpurge_all(mp, XFS_QMOPT_QUOTALL | XFS_QMOPT_UMOUNTING); xfs_qm_destroy_quotainfo(mp); + } } @@ -385,8 +387,13 @@ xfs_qm_mount_quotas( if (error) { xfs_fs_cmn_err(CE_WARN, mp, "Failed to initialize disk quotas."); + return; } - return; + +#ifdef QUOTADEBUG + if (XFS_IS_QUOTA_ON(mp)) + xfs_qm_internalqcheck(mp); +#endif } /* @@ -774,12 +781,11 @@ xfs_qm_dqattach_grouphint( * Given a locked inode, attach dquot(s) to it, taking U/G/P-QUOTAON * into account. * If XFS_QMOPT_DQALLOC, the dquot(s) will be allocated if needed. - * If XFS_QMOPT_ILOCKED, then inode sent is already locked EXCL. * Inode may get unlocked and relocked in here, and the caller must deal with * the consequences. */ int -xfs_qm_dqattach( +xfs_qm_dqattach_locked( xfs_inode_t *ip, uint flags) { @@ -787,17 +793,14 @@ xfs_qm_dqattach( uint nquotas = 0; int error = 0; - if ((! XFS_IS_QUOTA_ON(mp)) || - (! XFS_NOT_DQATTACHED(mp, ip)) || - (ip->i_ino == mp->m_sb.sb_uquotino) || - (ip->i_ino == mp->m_sb.sb_gquotino)) + if (!XFS_IS_QUOTA_RUNNING(mp) || + !XFS_IS_QUOTA_ON(mp) || + !XFS_NOT_DQATTACHED(mp, ip) || + ip->i_ino == mp->m_sb.sb_uquotino || + ip->i_ino == mp->m_sb.sb_gquotino) return 0; - ASSERT((flags & XFS_QMOPT_ILOCKED) == 0 || - xfs_isilocked(ip, XFS_ILOCK_EXCL)); - - if (! (flags & XFS_QMOPT_ILOCKED)) - xfs_ilock(ip, XFS_ILOCK_EXCL); + ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); if (XFS_IS_UQUOTA_ON(mp)) { error = xfs_qm_dqattach_one(ip, ip->i_d.di_uid, XFS_DQ_USER, @@ -849,8 +852,7 @@ xfs_qm_dqattach( xfs_qm_dqattach_grouphint(ip->i_udquot, ip->i_gdquot); } - done: - + done: #ifdef QUOTADEBUG if (! error) { if (XFS_IS_UQUOTA_ON(mp)) @@ -858,15 +860,22 @@ xfs_qm_dqattach( if (XFS_IS_OQUOTA_ON(mp)) ASSERT(ip->i_gdquot); } + ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); #endif + return error; +} - if (! (flags & XFS_QMOPT_ILOCKED)) - xfs_iunlock(ip, XFS_ILOCK_EXCL); +int +xfs_qm_dqattach( + struct xfs_inode *ip, + uint flags) +{ + int error; + + xfs_ilock(ip, XFS_ILOCK_EXCL); + error = xfs_qm_dqattach_locked(ip, flags); + xfs_iunlock(ip, XFS_ILOCK_EXCL); -#ifdef QUOTADEBUG - else - ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); -#endif return error; } @@ -912,7 +921,7 @@ xfs_qm_sync( boolean_t nowait; int error; - if (! XFS_IS_QUOTA_ON(mp)) + if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) return 0; restarts = 0; @@ -2319,20 +2328,20 @@ xfs_qm_write_sb_changes( */ int xfs_qm_vop_dqalloc( - xfs_mount_t *mp, - xfs_inode_t *ip, - uid_t uid, - gid_t gid, - prid_t prid, - uint flags, - xfs_dquot_t **O_udqpp, - xfs_dquot_t **O_gdqpp) -{ - int error; - xfs_dquot_t *uq, *gq; - uint lockflags; + struct xfs_inode *ip, + uid_t uid, + gid_t gid, + prid_t prid, + uint flags, + struct xfs_dquot **O_udqpp, + struct xfs_dquot **O_gdqpp) +{ + struct xfs_mount *mp = ip->i_mount; + struct xfs_dquot *uq, *gq; + int error; + uint lockflags; - if (!XFS_IS_QUOTA_ON(mp)) + if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) return 0; lockflags = XFS_ILOCK_EXCL; @@ -2346,8 +2355,8 @@ xfs_qm_vop_dqalloc( * if necessary. The dquot(s) will not be locked. */ if (XFS_NOT_DQATTACHED(mp, ip)) { - if ((error = xfs_qm_dqattach(ip, XFS_QMOPT_DQALLOC | - XFS_QMOPT_ILOCKED))) { + error = xfs_qm_dqattach_locked(ip, XFS_QMOPT_DQALLOC); + if (error) { xfs_iunlock(ip, lockflags); return error; } @@ -2469,6 +2478,7 @@ xfs_qm_vop_chown( uint bfield = XFS_IS_REALTIME_INODE(ip) ? XFS_TRANS_DQ_RTBCOUNT : XFS_TRANS_DQ_BCOUNT; + ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); ASSERT(XFS_IS_QUOTA_RUNNING(ip->i_mount)); @@ -2508,13 +2518,13 @@ xfs_qm_vop_chown_reserve( xfs_dquot_t *gdqp, uint flags) { - int error; - xfs_mount_t *mp; + xfs_mount_t *mp = ip->i_mount; uint delblks, blkflags, prjflags = 0; xfs_dquot_t *unresudq, *unresgdq, *delblksudq, *delblksgdq; + int error; + ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)); - mp = ip->i_mount; ASSERT(XFS_IS_QUOTA_RUNNING(mp)); delblks = ip->i_delayed_blks; @@ -2582,28 +2592,23 @@ xfs_qm_vop_chown_reserve( int xfs_qm_vop_rename_dqattach( - xfs_inode_t **i_tab) + struct xfs_inode **i_tab) { - xfs_inode_t *ip; - int i; - int error; - - ip = i_tab[0]; + struct xfs_mount *mp = i_tab[0]->i_mount; + int i; - if (! XFS_IS_QUOTA_ON(ip->i_mount)) + if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) return 0; - if (XFS_NOT_DQATTACHED(ip->i_mount, ip)) { - error = xfs_qm_dqattach(ip, 0); - if (error) - return error; - } - for (i = 1; (i < 4 && i_tab[i]); i++) { + for (i = 0; (i < 4 && i_tab[i]); i++) { + struct xfs_inode *ip = i_tab[i]; + int error; + /* * Watch out for duplicate entries in the table. */ - if ((ip = i_tab[i]) != i_tab[i-1]) { - if (XFS_NOT_DQATTACHED(ip->i_mount, ip)) { + if (i == 0 || ip != i_tab[i-1]) { + if (XFS_NOT_DQATTACHED(mp, ip)) { error = xfs_qm_dqattach(ip, 0); if (error) return error; @@ -2614,17 +2619,19 @@ xfs_qm_vop_rename_dqattach( } void -xfs_qm_vop_dqattach_and_dqmod_newinode( - xfs_trans_t *tp, - xfs_inode_t *ip, - xfs_dquot_t *udqp, - xfs_dquot_t *gdqp) +xfs_qm_vop_create_dqattach( + struct xfs_trans *tp, + struct xfs_inode *ip, + struct xfs_dquot *udqp, + struct xfs_dquot *gdqp) { - if (!XFS_IS_QUOTA_ON(tp->t_mountp)) + struct xfs_mount *mp = tp->t_mountp; + + if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) return; ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); - ASSERT(XFS_IS_QUOTA_RUNNING(tp->t_mountp)); + ASSERT(XFS_IS_QUOTA_RUNNING(mp)); if (udqp) { xfs_dqlock(udqp); @@ -2632,7 +2639,7 @@ xfs_qm_vop_dqattach_and_dqmod_newinode( xfs_dqunlock(udqp); ASSERT(ip->i_udquot == NULL); ip->i_udquot = udqp; - ASSERT(XFS_IS_UQUOTA_ON(tp->t_mountp)); + ASSERT(XFS_IS_UQUOTA_ON(mp)); ASSERT(ip->i_d.di_uid == be32_to_cpu(udqp->q_core.d_id)); xfs_trans_mod_dquot(tp, udqp, XFS_TRANS_DQ_ICOUNT, 1); } @@ -2642,8 +2649,8 @@ xfs_qm_vop_dqattach_and_dqmod_newinode( xfs_dqunlock(gdqp); ASSERT(ip->i_gdquot == NULL); ip->i_gdquot = gdqp; - ASSERT(XFS_IS_OQUOTA_ON(tp->t_mountp)); - ASSERT((XFS_IS_GQUOTA_ON(tp->t_mountp) ? + ASSERT(XFS_IS_OQUOTA_ON(mp)); + ASSERT((XFS_IS_GQUOTA_ON(mp) ? ip->i_d.di_gid : ip->i_d.di_projid) == be32_to_cpu(gdqp->q_core.d_id)); xfs_trans_mod_dquot(tp, gdqp, XFS_TRANS_DQ_ICOUNT, 1); Index: xfs/fs/xfs/xfs_iget.c =================================================================== --- xfs.orig/fs/xfs/xfs_iget.c 2009-05-27 11:14:50.118964061 +0200 +++ xfs/fs/xfs/xfs_iget.c 2009-05-27 11:17:28.042941515 +0200 @@ -500,10 +500,7 @@ xfs_ireclaim( * ilock one but will still hold the iolock. */ xfs_ilock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); - /* - * Release dquots (and their references) if any. - */ - XFS_QM_DQDETACH(ip->i_mount, ip); + xfs_qm_dqdetach(ip); xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); switch (ip->i_d.di_mode & S_IFMT) { Index: xfs/fs/xfs/xfs_mount.c =================================================================== --- xfs.orig/fs/xfs/xfs_mount.c 2009-05-27 11:14:50.123970843 +0200 +++ xfs/fs/xfs/xfs_mount.c 2009-05-27 11:38:30.812398301 +0200 @@ -960,6 +960,53 @@ xfs_check_sizes(xfs_mount_t *mp) } /* + * Clear the quotaflags in memory and in the superblock. + */ +int +xfs_mount_reset_sbqflags( + struct xfs_mount *mp) +{ + int error; + struct xfs_trans *tp; + + mp->m_qflags = 0; + + /* + * It is OK to look at sb_qflags here in mount path, + * without m_sb_lock. + */ + if (mp->m_sb.sb_qflags == 0) + return 0; + spin_lock(&mp->m_sb_lock); + mp->m_sb.sb_qflags = 0; + spin_unlock(&mp->m_sb_lock); + + /* + * If the fs is readonly, let the incore superblock run + * with quotas off but don't flush the update out to disk + */ + if (mp->m_flags & XFS_MOUNT_RDONLY) + return 0; + +#ifdef QUOTADEBUG + xfs_fs_cmn_err(CE_NOTE, mp, "Writing superblock quota changes"); +#endif + + tp = xfs_trans_alloc(mp, XFS_TRANS_QM_SBCHANGE); + error = xfs_trans_reserve(tp, 0, mp->m_sb.sb_sectsize + 128, 0, 0, + XFS_DEFAULT_LOG_COUNT); + if (error) { + xfs_trans_cancel(tp, 0); + xfs_fs_cmn_err(CE_ALERT, mp, + "xfs_mount_reset_sbqflags: Superblock update failed!"); + return error; + } + + xfs_mod_sb(tp, XFS_SB_QFLAGS); + return xfs_trans_commit(tp, 0); +} + +/* * This function does the following on an initial mount of a file system: * - reads the superblock from disk and init the mount struct * - if we're a 32-bit kernel, do a size check on the superblock @@ -976,7 +1023,8 @@ xfs_mountfs( xfs_sb_t *sbp = &(mp->m_sb); xfs_inode_t *rip; __uint64_t resblks; - uint quotamount, quotaflags; + uint quotamount = 0; + uint quotaflags = 0; int error = 0; xfs_mount_common(mp, sbp); @@ -1210,9 +1258,28 @@ xfs_mountfs( /* * Initialise the XFS quota management subsystem for this mount */ - error = XFS_QM_INIT(mp, "amount, "aflags); - if (error) - goto out_rtunmount; + if (XFS_IS_QUOTA_RUNNING(mp)) { + error = xfs_qm_newmount(mp, "amount, "aflags); + if (error) + goto out_rtunmount; + } else { + ASSERT(!XFS_IS_QUOTA_ON(mp)); + + /* + * If a file system had quotas running earlier, but decided to + * mount without -o uquota/pquota/gquota options, revoke the + * quotachecked license. + */ + if (mp->m_sb.sb_qflags & XFS_ALL_QUOTA_ACCT) { + cmn_err(CE_NOTE, + "XFS: resetting qflags for filesystem %s", + mp->m_fsname); + + error = xfs_mount_reset_sbqflags(mp); + if (error) + return error; + } + } /* * Finish recovering the file system. This part needed to be @@ -1228,9 +1295,19 @@ xfs_mountfs( /* * Complete the quota initialisation, post-log-replay component. */ - error = XFS_QM_MOUNT(mp, quotamount, quotaflags); - if (error) - goto out_rtunmount; + if (quotamount) { + ASSERT(mp->m_qflags == 0); + mp->m_qflags = quotaflags; + + xfs_qm_mount_quotas(mp); + } + +#if defined(DEBUG) && defined(XFS_LOUD_RECOVERY) + if (XFS_IS_QUOTA_ON(mp)) + xfs_fs_cmn_err(CE_NOTE, mp, "Disk quotas turned on"); + else + xfs_fs_cmn_err(CE_NOTE, mp, "Disk quotas not turned on"); +#endif /* * Now we are mounted, reserve a small amount of unused space for @@ -1279,12 +1356,7 @@ 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); - + xfs_qm_unmount_quotas(mp); xfs_rtunmount_inodes(mp); IRELE(mp->m_rootip); @@ -1301,10 +1373,7 @@ xfs_unmountfs( xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); xfs_reclaim_inodes(mp, 0, XFS_IFLUSH_ASYNC); - XFS_QM_DQPURGEALL(mp, XFS_QMOPT_QUOTALL | XFS_QMOPT_UMOUNTING); - - if (mp->m_quotainfo) - XFS_QM_DONE(mp); + xfs_qm_unmount(mp); /* * Flush out the log synchronously so that we know for sure Index: xfs/fs/xfs/xfs_qmops.c =================================================================== --- xfs.orig/fs/xfs/xfs_qmops.c 2009-05-27 11:14:50.127939714 +0200 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,152 +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_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_quota.h" -#include "xfs_error.h" - - -STATIC struct xfs_dquot * -xfs_dqvopchown_default( - struct xfs_trans *tp, - struct xfs_inode *ip, - struct xfs_dquot **dqp, - struct xfs_dquot *dq) -{ - return NULL; -} - -/* - * Clear the quotaflags in memory and in the superblock. - */ -int -xfs_mount_reset_sbqflags(xfs_mount_t *mp) -{ - int error; - xfs_trans_t *tp; - - mp->m_qflags = 0; - /* - * It is OK to look at sb_qflags here in mount path, - * without m_sb_lock. - */ - if (mp->m_sb.sb_qflags == 0) - return 0; - spin_lock(&mp->m_sb_lock); - mp->m_sb.sb_qflags = 0; - spin_unlock(&mp->m_sb_lock); - - /* - * if the fs is readonly, let the incore superblock run - * with quotas off but don't flush the update out to disk - */ - if (mp->m_flags & XFS_MOUNT_RDONLY) - return 0; -#ifdef QUOTADEBUG - xfs_fs_cmn_err(CE_NOTE, mp, "Writing superblock quota changes"); -#endif - tp = xfs_trans_alloc(mp, XFS_TRANS_QM_SBCHANGE); - if ((error = xfs_trans_reserve(tp, 0, mp->m_sb.sb_sectsize + 128, 0, 0, - XFS_DEFAULT_LOG_COUNT))) { - xfs_trans_cancel(tp, 0); - xfs_fs_cmn_err(CE_ALERT, mp, - "xfs_mount_reset_sbqflags: Superblock update failed!"); - return error; - } - xfs_mod_sb(tp, XFS_SB_QFLAGS); - error = xfs_trans_commit(tp, 0); - return error; -} - -STATIC int -xfs_noquota_init( - xfs_mount_t *mp, - uint *needquotamount, - uint *quotaflags) -{ - int error = 0; - - *quotaflags = 0; - *needquotamount = B_FALSE; - - ASSERT(!XFS_IS_QUOTA_ON(mp)); - - /* - * If a file system had quotas running earlier, but decided to - * mount without -o uquota/pquota/gquota options, revoke the - * quotachecked license. - */ - if (mp->m_sb.sb_qflags & XFS_ALL_QUOTA_ACCT) { - cmn_err(CE_NOTE, - "XFS resetting qflags for filesystem %s", - mp->m_fsname); - - error = xfs_mount_reset_sbqflags(mp); - } - return error; -} - -static struct xfs_qmops xfs_qmcore_stub = { - .xfs_qminit = (xfs_qminit_t) xfs_noquota_init, - .xfs_qmdone = (xfs_qmdone_t) fs_noerr, - .xfs_qmmount = (xfs_qmmount_t) fs_noerr, - .xfs_qmunmount = (xfs_qmunmount_t) fs_noerr, - .xfs_dqrele = (xfs_dqrele_t) fs_noerr, - .xfs_dqattach = (xfs_dqattach_t) fs_noerr, - .xfs_dqdetach = (xfs_dqdetach_t) fs_noerr, - .xfs_dqpurgeall = (xfs_dqpurgeall_t) fs_noerr, - .xfs_dqvopalloc = (xfs_dqvopalloc_t) fs_noerr, - .xfs_dqvopcreate = (xfs_dqvopcreate_t) fs_noerr, - .xfs_dqvoprename = (xfs_dqvoprename_t) fs_noerr, - .xfs_dqvopchown = xfs_dqvopchown_default, - .xfs_dqvopchownresv = (xfs_dqvopchownresv_t) fs_noerr, - .xfs_dqstatvfs = (xfs_dqstatvfs_t) fs_noval, - .xfs_dqsync = (xfs_dqsync_t) fs_noerr, -}; - -int -xfs_qmops_get(struct xfs_mount *mp) -{ - if (XFS_IS_QUOTA_RUNNING(mp)) { -#ifdef CONFIG_XFS_QUOTA - mp->m_qm_ops = &xfs_qmcore_xfs; -#else - cmn_err(CE_WARN, - "XFS: qouta support not available in this kernel."); - return EINVAL; -#endif - } else { - mp->m_qm_ops = &xfs_qmcore_stub; - } - - return 0; -} - -void -xfs_qmops_put(struct xfs_mount *mp) -{ -} Index: xfs/fs/xfs/xfs_rename.c =================================================================== --- xfs.orig/fs/xfs/xfs_rename.c 2009-05-27 11:14:50.134968541 +0200 +++ xfs/fs/xfs/xfs_rename.c 2009-05-27 11:17:28.050941486 +0200 @@ -166,7 +166,8 @@ xfs_rename( /* * Attach the dquots to the inodes */ - if ((error = XFS_QM_DQVOPRENAME(mp, inodes))) { + error = xfs_qm_vop_rename_dqattach(inodes); + if (error) { xfs_trans_cancel(tp, cancel_flags); goto std_return; } From BATV+bc1368fc9d1556f9f742+2103+infradead.org+hch@bombadil.srs.infradead.org Wed May 27 05:23:17 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RANAE0187716 for ; Wed, 27 May 2009 05:23:16 -0500 X-ASG-Debug-ID: 1243420156-16d803790000-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 47DB710178DE for ; Wed, 27 May 2009 03:29:17 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id KyJ9pRZtvrUaMthE for ; Wed, 27 May 2009 03:29:17 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9GI3-0001sR-Pb; Wed, 27 May 2009 10:23:19 +0000 Date: Wed, 27 May 2009 06:23:19 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs mailing list X-ASG-Orig-Subj: Re: [PATCH] add more statics & drop some unused functions Subject: Re: [PATCH] add more statics & drop some unused functions Message-ID: <20090527102319.GA28274@infradead.org> References: <4A1C3D65.4020306@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A1C3D65.4020306@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: 1243420159 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, May 26, 2009 at 02:05:09PM -0500, Eric Sandeen wrote: > A lot more functions could be made static, but they need > forward declarations; this does some easy ones, and also > found a few unused functions in the process. Looks good to me. From BATV+bc1368fc9d1556f9f742+2103+infradead.org+hch@bombadil.srs.infradead.org Wed May 27 05:58:28 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RAwR1p188709 for ; Wed, 27 May 2009 05:58:28 -0500 X-ASG-Debug-ID: 1243421921-4aa7016c0000-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 C5EB31A28F2A for ; Wed, 27 May 2009 03:58:41 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id B6Dw1zjMFWZSjpxi for ; Wed, 27 May 2009 03:58:41 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9GqH-00048o-B5; Wed, 27 May 2009 10:58:41 +0000 Date: Wed, 27 May 2009 06:58:41 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/7] xfs: split inode flushing from xfs_sync_inodes_ag Subject: Re: [PATCH 2/7] xfs: split inode flushing from xfs_sync_inodes_ag Message-ID: <20090527105841.GA10545@infradead.org> References: <20090514171233.942489000@bombadil.infradead.org> <20090514171558.298098000@bombadil.infradead.org> <4A1C54FB.2080705@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A1C54FB.2080705@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: 1243421921 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, May 26, 2009 at 03:45:47PM -0500, Eric Sandeen wrote: > What happened to the XFS_IFLUSH_DELWRI case? > > You mentioned "keep the current behavior exactly" but this seems like a > change, no? Yeah, this got lost when playing with variations of the patch. Correct version below: Subject: xfs: split inode flushing from xfs_sync_inodes_ag From: Christoph Hellwig In many cases we only want to sync inode metadata. Split out the inode flushing into a separate helper to prepare factoring the inode sync code. Based on a patch from Dave Chinner, but redone to keep the current behaviour exactly and leave changes to the flushing logic to another patch. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-05-27 12:08:49.137850883 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-05-27 12:11:09.530815659 +0200 @@ -77,6 +77,35 @@ xfs_sync_inode_data( return error; } +STATIC int +xfs_sync_inode_attr( + struct xfs_inode *ip, + int flags) +{ + int error = 0; + + xfs_ilock(ip, XFS_ILOCK_SHARED); + if (xfs_inode_clean(ip)) + goto out_unlock; + if (!xfs_iflock_nowait(ip)) { + if (!(flags & SYNC_WAIT)) + goto out_unlock; + xfs_iflock(ip); + } + + if (xfs_inode_clean(ip)) { + xfs_ifunlock(ip); + goto out_unlock; + } + + error = xfs_iflush(ip, (flags & SYNC_WAIT) ? + XFS_IFLUSH_SYNC : XFS_IFLUSH_DELWRI); + + out_unlock: + xfs_iunlock(ip, XFS_ILOCK_SHARED); + return error; +} + /* * Sync all the inodes in the given AG according to the * direction given by the flags. @@ -96,7 +125,6 @@ xfs_sync_inodes_ag( do { struct inode *inode; xfs_inode_t *ip = NULL; - int lock_flags = XFS_ILOCK_SHARED; /* * use a gang lookup to find the next inode in the tree @@ -155,22 +183,10 @@ xfs_sync_inodes_ag( if (flags & SYNC_DELWRI) error = xfs_sync_inode_data(ip, flags); - xfs_ilock(ip, XFS_ILOCK_SHARED); - if ((flags & SYNC_ATTR) && !xfs_inode_clean(ip)) { - if (flags & SYNC_WAIT) { - xfs_iflock(ip); - if (!xfs_inode_clean(ip)) - error = xfs_iflush(ip, XFS_IFLUSH_SYNC); - else - xfs_ifunlock(ip); - } else if (xfs_iflock_nowait(ip)) { - if (!xfs_inode_clean(ip)) - error = xfs_iflush(ip, XFS_IFLUSH_DELWRI); - else - xfs_ifunlock(ip); - } - } - xfs_iput(ip, lock_flags); + if (flags & SYNC_ATTR) + error = xfs_sync_inode_attr(ip, flags); + + IRELE(ip); if (error) last_error = error; From sandeen@sandeen.net Wed May 27 11:29:24 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_73,MIME_8BIT_HEADER autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RGTOEp198692 for ; Wed, 27 May 2009 11:29:24 -0500 X-ASG-Debug-ID: 1243442126-7ae302610000-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 CAD3C10197E3 for ; Wed, 27 May 2009 09:35:26 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id DZRc0JSOGTVP79Wh for ; Wed, 27 May 2009 09:35:26 -0700 (PDT) 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 n4RGTR09009597; Wed, 27 May 2009 12:29:27 -0400 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 n4RGTQOn003847; Wed, 27 May 2009 12:29:27 -0400 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 n4RGTOPT014775; Wed, 27 May 2009 12:29:25 -0400 Message-ID: <4A1D6A64.7010305@sandeen.net> Date: Wed, 27 May 2009 11:29:24 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: =?windows-1252?Q?Svavar_=D6rn_Eysteinsson?= CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Incorrect Free Space / xfs_growfs on RAID5 Volume ? Subject: Re: Incorrect Free Space / xfs_growfs on RAID5 Volume ? References: <4A1BE48F.9020107@dermichi.com> <59D949A6-71F6-4C4C-B5F9-B5B22B189771@fiton.is> In-Reply-To: <59D949A6-71F6-4C4C-B5F9-B5B22B189771@fiton.is> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit 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: 1243442127 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: -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=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26889 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Svavar Örn Eysteinsson wrote: > Hi. > > I read on http://www.carltonbale.com/2007/05/how-to-break-the-2tb-2-terabyte-file-system-limit/ > that if your kernel is compiled with CONFIG_LBD You can break the 2tb > limit. Any facts on that ? This lets the kernel track block devices which are more than 2^32 sectors large, but it does not change the fact that an msdos partition table cannot have a partition this large. > **** > Breaking 2TB Option 2 - Use Linux with CONFIG_LBD enabled. Most Linux > file systems are capable of partitions larger than 2 TB, as long as > the Linux kernel itself is. (See this comparison of Linux file > systems.) Most Linux distributions now have kernels compiled with > CONFIG_LBD enabled (Ubuntu 6.10 does, for example.) As long as the > kernel is configured/compiled properly, it is straight-forward to > create a single 4TB EXT3 (or similar) partition. > > * To summarize: 1 RAID array of five 1TB Drives -> 1 RAID level 5 > Volume Set that is 4TB -> 1 EXT3 (or similar) Linux partition that is > 4TB. > **** > > .... Is this maby out of my scope/setup ? > > > Is there a simple way for me to check if my kernel has this option > compiled in ? > I'm running Fedora Core 6 with 2.6.27.7 #1 SMP Tue Nov 25 11:50:10 > GMT 2008 i686 i686 i386 GNU/Linux. That's pretty old.... but it probably has it on. I don't remember if FC6 had config-* in /boot; if so you could just check there. Otherwise grab the src.rpm and work from there ... > > And the FINAL question.... Is there any way for me to alter the raid > volume, partitions to GPT or just format the /dev/sdb without loosing > any data ? > Maby it's just not possible without backup up data, and restore'ing ? It is probably possible to put a new GPT table in place of the DOS table, but you have to be careful. The idea is that you need a GPT table with a partition starting at exactly the same place, and with the end in the correct (larger) place ... and the GPT table must all fit before the first sector of the first partition. With care, this usually works. -Eric > > Thanks allot guys.. > > > Best regards, > > Svavar - Reykjavik - Iceland > > > > On 26.5.2009, at 12:46, Michael Weissenbacher wrote: > >> Hi Svavar! >>> Now the strange part. When I issue “df -h” command it shows much >>> smaller >>> disk space added then it should have. >> You have run into the 2TB limit for a DOS Paritition Table. You must >> use GPT (GUID Partition Table) to overcome the limit. You can't use >> fdisk for that since it has no GPT support. An alternative would be >> parted [1]. I'm not sure how this can be done without data loss. An >> alternative would be to not use partitions at all and create the XFS >> directly on /dev/sdb. >> This is not really an XFS issue but an partitioning issue. >> >> [1] http://www.gnu.org/software/parted/index.shtml >> >> hth, >> Michael > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From news@mgras.net Wed May 27 12:22:21 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RHMIKZ200186 for ; Wed, 27 May 2009 12:22:21 -0500 X-ASG-Debug-ID: 1243445305-629a00a80000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from foehn.mgras.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1EF9A101A193 for ; Wed, 27 May 2009 10:28:25 -0700 (PDT) Received: from foehn.mgras.de (quickstep.mgras.net [213.146.115.59]) by cuda.sgi.com with ESMTP id q3tMk33vdB1NHqXX for ; Wed, 27 May 2009 10:28:25 -0700 (PDT) Received: from osprey.mgras.de (osprey.mgras.de [192.168.48.3]) by foehn.mgras.de (8.13.1/8.13.0) with ESMTP id n4RHLeve002796 for ; Wed, 27 May 2009 19:21:41 +0200 (CEST) Received: (from news@localhost) by osprey.mgras.de (AIX5.1/8.11.6p2/8.11.0) id n4RHLeF35674 for linux-xfs@oss.sgi.com; Wed, 27 May 2009 19:21:40 +0200 To: linux-xfs@oss.sgi.com Path: not-for-mail From: Martin Spott Newsgroups: list.linux-xfs X-ASG-Orig-Subj: Re: Kernel crash with 2.6.29 + nfs + xfs (radix-tree) Subject: Re: Kernel crash with 2.6.29 + nfs + xfs (radix-tree) Date: Wed, 27 May 2009 17:21:40 +0000 (UTC) Organization: home Lines: 33 Message-ID: References: <20090520003745.GA27491@samad.com.au> <20090526090916.GA17194@infradead.org> NNTP-Posting-Host: jive.mgras.de X-Trace: osprey.mgras.de 1243444900 36520 192.168.48.5 (27 May 2009 17:21:40 GMT) X-Complaints-To: usenet@mgras.net NNTP-Posting-Date: Wed, 27 May 2009 17:21:40 +0000 (UTC) User-Agent: tin/1.9.3-20080506 ("Dalintober") (UNIX) (Linux/2.6.29.3 (x86_64)) X-Barracuda-Connect: quickstep.mgras.net[213.146.115.59] X-Barracuda-Start-Time: 1243445308 X-Barracuda-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.62 X-Barracuda-Spam-Status: No, SCORE=-1.62 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.26890 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.40 BSF_SC0_SA085b Custom Rule SA085b X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > May 24 08:48:00 (none) last message repeated 61 times > May 24 08:48:47 (none) last message repeated 760 times > May 24 08:50:55 (none) kernel: reconnect_path: npd != pd > May 24 08:50:55 (none) last message repeated 9 times > May 24 08:55:04 (none) kernel: reconnect_path: npd != pd > May 24 08:56:05 (none) last message repeated 47 times > May 24 08:56:49 (none) last message repeated 419 times Resembles me of trouble I've recently seen on some of the machines I maintain after updating from 2.6.27.11 to 2.6.29.[2,3], serving a few dozend LTSP (diskless so-called thin-clients) root filesystems via NFS from XFS - not really huge load, to be honest. After running 2.6.29.4 for one day now I have the feeling that the issue had been cured - but I didn't manage to get a clue about the fix. Very few people have been reporting a similar issue here: http://www.mail-archive.com/debian-user@lists.debian.org/msg545497.html and here: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=527517 Additional information wanted ? Cheers, Martin. -- Unix _IS_ user friendly - it's just selective about who its friends are ! -------------------------------------------------------------------------- From news@mgras.net Wed May 27 13:06:24 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RI6NDH202094 for ; Wed, 27 May 2009 13:06:24 -0500 X-ASG-Debug-ID: 1243447952-325701a60000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from foehn.mgras.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 21078101A2B3 for ; Wed, 27 May 2009 11:12:32 -0700 (PDT) Received: from foehn.mgras.de (quickstep.mgras.net [213.146.115.59]) by cuda.sgi.com with ESMTP id pauV0b2JvyCq3NLZ for ; Wed, 27 May 2009 11:12:32 -0700 (PDT) Received: from osprey.mgras.de (osprey.mgras.de [192.168.48.3]) by foehn.mgras.de (8.13.1/8.13.0) with ESMTP id n4RI5mOA002929 for ; Wed, 27 May 2009 20:05:48 +0200 (CEST) Received: (from news@localhost) by osprey.mgras.de (AIX5.1/8.11.6p2/8.11.0) id n4RI5lL36366 for linux-xfs@oss.sgi.com; Wed, 27 May 2009 20:05:47 +0200 To: linux-xfs@oss.sgi.com Path: not-for-mail From: Martin Spott Newsgroups: list.linux-xfs X-ASG-Orig-Subj: Re: Kernel crash with 2.6.29 + nfs + xfs (radix-tree) Subject: Re: Kernel crash with 2.6.29 + nfs + xfs (radix-tree) Date: Wed, 27 May 2009 18:05:47 +0000 (UTC) Organization: home Lines: 11 Message-ID: References: <20090520003745.GA27491@samad.com.au> NNTP-Posting-Host: jive.mgras.de X-Trace: osprey.mgras.de 1243447547 36956 192.168.48.5 (27 May 2009 18:05:47 GMT) X-Complaints-To: usenet@mgras.net NNTP-Posting-Date: Wed, 27 May 2009 18:05:47 +0000 (UTC) User-Agent: tin/1.9.3-20080506 ("Dalintober") (UNIX) (Linux/2.6.29.3 (x86_64)) X-Barracuda-Connect: quickstep.mgras.net[213.146.115.59] X-Barracuda-Start-Time: 1243447954 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26894 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Martin Spott wrote: > After running 2.6.29.4 for one day now I have the feeling that the > issue had been cured - [...] Disregard - I just realized that the above statement is untrue, Martin. -- Unix _IS_ user friendly - it's just selective about who its friends are ! -------------------------------------------------------------------------- From sandeen@sandeen.net Wed May 27 13:53:22 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RIrMOA204142 for ; Wed, 27 May 2009 13:53:22 -0500 X-ASG-Debug-ID: 1243450415-2fa302cd0000-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 482182B394B for ; Wed, 27 May 2009 11:53:35 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 91Q3H9Mcu9JPWpQD for ; Wed, 27 May 2009 11:53:35 -0700 (PDT) Received: by mail.sandeen.net (Postfix, from userid 500) id 269E610298D5; Wed, 27 May 2009 13:53:34 -0500 (CDT) From: Eric Sandeen To: xfs@oss.sgi.com Cc: Eric Sandeen X-ASG-Orig-Subj: [PATCH 4/9] 069: make scratch mkfs quiet Subject: [PATCH 4/9] 069: make scratch mkfs quiet Date: Wed, 27 May 2009 13:53:28 -0500 Message-Id: <1243450413-12681-5-git-send-email-sandeen@sandeen.net> X-Mailer: git-send-email 1.5.5.6 In-Reply-To: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1243450416 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26897 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The _scratch_mkfs call in test 069 was not redirecting stderr to /dev/null; other mkfs's may be more noisy on stderr. Signed-off-by: Eric Sandeen --- 069 | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/069 b/069 index 4950901..78689ed 100755 --- a/069 +++ b/069 @@ -32,7 +32,7 @@ rm -f $seq.full umount $SCRATCH_DEV >/dev/null 2>&1 echo "*** mkfs" -_scratch_mkfs >/dev/null || _fail "mkfs failed" +_scratch_mkfs >/dev/null 2>&1 || _fail "mkfs failed" echo "*** mount FS" _scratch_mount >/dev/null || _fail "mount failed" -- 1.5.5.6 From sandeen@sandeen.net Wed May 27 13:53:22 2009 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, URIBL_BLACK autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RIrMr0204144 for ; Wed, 27 May 2009 13:53:22 -0500 X-ASG-Debug-ID: 1243450415-2a9003160000-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 535922B394D for ; Wed, 27 May 2009 11:53:35 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id XSBsIYEFa8A8sQkE for ; Wed, 27 May 2009 11:53:35 -0700 (PDT) Received: by mail.sandeen.net (Postfix, from userid 500) id C731C102987E; Wed, 27 May 2009 13:53:33 -0500 (CDT) From: Eric Sandeen To: xfs@oss.sgi.com Cc: Eric Sandeen X-ASG-Orig-Subj: [PATCH 1/9] Use xfs.h rather than libxfs.h Subject: [PATCH 1/9] Use xfs.h rather than libxfs.h Date: Wed, 27 May 2009 13:53:25 -0500 Message-Id: <1243450413-12681-2-git-send-email-sandeen@sandeen.net> X-Mailer: git-send-email 1.5.5.6 In-Reply-To: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1243450416 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26897 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Use xfs/xfs.h when possible rather than xfs/libxfs.h, now that libxfs.h isn't part of a normal xfsprogs-devel install. Signed-off-by: Eric Sandeen --- aclocal.m4 | 15 +++++++++++++-- configure.in | 1 + m4/package_xfslibs.m4 | 10 ++++++++++ src/global.h | 12 ++++++++++++ src/godown.c | 2 +- src/iopat.c | 2 +- src/t_immutable.c | 6 +++++- src/unwritten_mmap.c | 2 +- src/xfsctl.c | 2 +- 9 files changed, 45 insertions(+), 7 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index 52f1c7d..6cc5dce 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -405,6 +405,17 @@ AC_DEFUN([AC_PACKAGE_NEED_UUIDCOMPARE], AC_SUBST(libuuid) ]) +AC_DEFUN([AC_PACKAGE_NEED_XFS_XFS_H], + [ AC_CHECK_HEADERS([xfs/xfs.h]) + if test "$ac_cv_header_xfs_xfs_h" != "yes"; then + echo + echo 'FATAL ERROR: cannot find a valid header file.' + echo 'Install or upgrade the XFS development package.' + echo 'Alternatively, run "make install-dev" from the xfsprogs source.' + exit 1 + fi + ]) + AC_DEFUN([AC_PACKAGE_NEED_XFS_LIBXFS_H], [ AC_CHECK_HEADERS([xfs/libxfs.h]) if test "$ac_cv_header_xfs_libxfs_h" != "yes"; then @@ -500,8 +511,8 @@ AC_DEFUN([AC_PACKAGE_NEED_IRIX_LIBHANDLE], ]) AC_DEFUN([AC_PACKAGE_NEED_XFSCTL_MACRO], - [ AC_MSG_CHECKING([xfsctl from xfs/libxfs.h]) - AC_TRY_LINK([#include ], [ int x = xfsctl(0, 0, 0, 0); ], + [ AC_MSG_CHECKING([xfsctl from xfs/xfs.h]) + AC_TRY_LINK([#include ], [ int x = xfsctl(0, 0, 0, 0); ], [ echo ok ], [ echo echo 'FATAL ERROR: cannot find required macros in the XFS headers.' diff --git a/configure.in b/configure.in index 32a2496..f087454 100644 --- a/configure.in +++ b/configure.in @@ -44,6 +44,7 @@ in ;; *) AC_MULTILIB($enable_lib64) + AC_PACKAGE_NEED_XFS_XFS_H AC_PACKAGE_NEED_XFS_LIBXFS_H AC_PACKAGE_NEED_XFS_XQM_H AC_PACKAGE_NEED_XFSCTL_MACRO diff --git a/m4/package_xfslibs.m4 b/m4/package_xfslibs.m4 index cafd959..2c8d694 100644 --- a/m4/package_xfslibs.m4 +++ b/m4/package_xfslibs.m4 @@ -1,3 +1,13 @@ +AC_DEFUN([AC_PACKAGE_NEED_XFS_XFS_H], + [ AC_CHECK_HEADERS([xfs/xfs.h]) + if test "$ac_cv_header_xfs_xfs_h" != "yes"; then + echo + echo 'FATAL ERROR: cannot find a valid header file.' + echo 'Run "make install-qa" from the xfsprogs source.' + exit 1 + fi + ]) + AC_DEFUN([AC_PACKAGE_NEED_XFS_LIBXFS_H], [ AC_CHECK_HEADERS([xfs/libxfs.h]) if test "$ac_cv_header_xfs_libxfs_h" != "yes"; then diff --git a/src/global.h b/src/global.h index 158c1fa..a766cfd 100644 --- a/src/global.h +++ b/src/global.h @@ -26,6 +26,10 @@ #include <../../xfsprogs/include/irix.h> #endif +#ifdef HAVE_XFS_XFS_H +#include +#endif + #ifdef HAVE_XFS_LIBXFS_H #include #endif @@ -150,4 +154,12 @@ #include #endif +/* + * MAXNAMELEN is the length (including the terminating null) of + * the longest permissible file (component) name. + */ +#ifndef MAXNAMELEN +#define MAXNAMELEN 256 +#endif + #endif diff --git a/src/godown.c b/src/godown.c index 4105aee..fa04f24 100644 --- a/src/godown.c +++ b/src/godown.c @@ -18,7 +18,7 @@ #include "global.h" -/* These should be in libxfs.h */ +/* These should be in xfs.h */ #ifndef XFS_IOC_GOINGDOWN #define XFS_IOC_GOINGDOWN _IOR ('X', 125, __uint32_t) #endif diff --git a/src/iopat.c b/src/iopat.c index 1e7d61b..c06071f 100644 --- a/src/iopat.c +++ b/src/iopat.c @@ -18,7 +18,7 @@ #include #include -#include +#include struct xfs_flock64 f; int main(int argc, char **argv) diff --git a/src/t_immutable.c b/src/t_immutable.c index 667355b..07a36cd 100644 --- a/src/t_immutable.c +++ b/src/t_immutable.c @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include #include @@ -47,6 +47,10 @@ #define EXT2_APPEND_FL 0x00000020 #define EXT2_IOC_SETFLAGS _IOW('f', 2, long) +#ifndef XFS_SUPER_MAGIC +#define XFS_SUPER_MAGIC 0x58465342 +#endif + extern const char *__progname; static int fsetflag(const char *path, int fd, int on, int immutable) diff --git a/src/unwritten_mmap.c b/src/unwritten_mmap.c index 5e63486..aec6a69 100644 --- a/src/unwritten_mmap.c +++ b/src/unwritten_mmap.c @@ -2,7 +2,7 @@ #include #include #include -#include +#include #include /* diff --git a/src/xfsctl.c b/src/xfsctl.c index f8afb16..8fa3348 100644 --- a/src/xfsctl.c +++ b/src/xfsctl.c @@ -16,7 +16,7 @@ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#include +#include #include /* simple test program to try out a bunch of xfsctls: -- 1.5.5.6 From sandeen@sandeen.net Wed May 27 13:53:23 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_55, 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RIrMW9204157 for ; Wed, 27 May 2009 13:53:23 -0500 X-ASG-Debug-ID: 1243450416-73c501430000-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 C68EB1A2DC41 for ; Wed, 27 May 2009 11:53:36 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 5ZWl3gvE4DGbFUCr for ; Wed, 27 May 2009 11:53:36 -0700 (PDT) Received: by mail.sandeen.net (Postfix, from userid 500) id 744AB1029930; Wed, 27 May 2009 13:53:34 -0500 (CDT) From: Eric Sandeen To: xfs@oss.sgi.com Cc: Eric Sandeen X-ASG-Orig-Subj: [PATCH 9/9] Report which tests did get run Subject: [PATCH 9/9] Report which tests did get run Date: Wed, 27 May 2009 13:53:33 -0500 Message-Id: <1243450413-12681-10-git-send-email-sandeen@sandeen.net> X-Mailer: git-send-email 1.5.5.6 In-Reply-To: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1243450416 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26897 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean fs type mismatches are now likely enough that it may be nice to report which tests -were- run at the end... Signed-off-by: Eric Sandeen --- check | 25 ++++++++++++++++++------- 1 files changed, 18 insertions(+), 7 deletions(-) diff --git a/check b/check index 7ca17ef..348b68e 100755 --- a/check +++ b/check @@ -8,7 +8,8 @@ tmp=/tmp/$$ status=0 needwrap=true -try=0 +n_try=0 +try="" n_bad=0 bad="" notrun="" @@ -86,7 +87,7 @@ END { if (NR > 0) { if [ -f $tmp.expunged ] then notrun=`wc -l <$tmp.expunged | sed -e 's/ *//g'` - try=`expr $try - $notrun` + n_try=`expr $n_try - $notrun` list=`echo "$list" | sed -f $tmp.expunged` fi @@ -95,20 +96,26 @@ END { if (NR > 0) { echo $list | fmt | sed -e 's/^/ /' >>check.log $interrupt && echo "Interrupted!" >>check.log + if [ ! -z "$n_try" -a $n_try != 0 ] + then + echo "Ran:$try" + fi + if [ ! -z "$notrun" ] then echo "Not run:$notrun" echo "Not run:$notrun" >>check.log fi + if [ ! -z "$n_bad" -a $n_bad != 0 ] then echo "Failures:$bad" - echo "Failed $n_bad of $try tests" + echo "Failed $n_bad of $n_try tests" echo "Failures:$bad" | fmt >>check.log - echo "Failed $n_bad of $try tests" >>check.log + echo "Failed $n_bad of $n_try tests" >>check.log else - echo "Passed all $try tests" - echo "Passed all $try tests" >>check.log + echo "Passed all $n_try tests" + echo "Passed all $n_try tests" >>check.log fi needwrap=false fi @@ -281,7 +288,11 @@ do n_bad=`expr $n_bad + 1` quick=false fi - [ -f $seq.notrun ] || try=`expr $try + 1` + if [ ! -f $seq.notrun ] + then + try="$try $seq" + n_try=`expr $n_try + 1` + fi seq="after_$seq" _check_test_fs -- 1.5.5.6 From sandeen@sandeen.net Wed May 27 13:53:22 2009 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,URIBL_BLACK autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RIrMT0204145 for ; Wed, 27 May 2009 13:53:22 -0500 X-ASG-Debug-ID: 1243450414-4dc801b90000-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 5B69E2B394E for ; Wed, 27 May 2009 11:53:34 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id FufpPXHu4FbZAJdM for ; Wed, 27 May 2009 11:53:34 -0700 (PDT) Received: by mail.sandeen.net (Postfix, from userid 500) id EBE531029892; Wed, 27 May 2009 13:53:33 -0500 (CDT) From: Eric Sandeen To: xfs@oss.sgi.com Cc: Eric Sandeen X-ASG-Orig-Subj: [PATCH 2/9] Make libxfs.h optional Subject: [PATCH 2/9] Make libxfs.h optional Date: Wed, 27 May 2009 13:53:26 -0500 Message-Id: <1243450413-12681-3-git-send-email-sandeen@sandeen.net> X-Mailer: git-send-email 1.5.5.6 In-Reply-To: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1243450416 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26897 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean libxfs.h is really only needed for the loggen test; make it config-time optional. Signed-off-by: Eric Sandeen --- 044 | 2 ++ aclocal.m4 | 12 +++--------- configure.in | 2 +- include/builddefs.in | 1 + m4/package_xfslibs.m4 | 11 +++-------- src/Makefile | 6 +++++- 6 files changed, 15 insertions(+), 19 deletions(-) diff --git a/044 b/044 index 7975db4..ba2d33b 100755 --- a/044 +++ b/044 @@ -108,6 +108,8 @@ _filter_mkfs <$tmp.mkfs0 2>$tmp.mkfs1 [ $lversion -ne 1 ] && \ _notrun "Cannot run this test yet using MKFS_OPTIONS specified" +[ $here/src/loggen ] || _notrun "loggen not built, skipping test" + _check_mount _check_require_logdev diff --git a/aclocal.m4 b/aclocal.m4 index 6cc5dce..ac616d1 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -416,15 +416,9 @@ AC_DEFUN([AC_PACKAGE_NEED_XFS_XFS_H], fi ]) -AC_DEFUN([AC_PACKAGE_NEED_XFS_LIBXFS_H], - [ AC_CHECK_HEADERS([xfs/libxfs.h]) - if test "$ac_cv_header_xfs_libxfs_h" != "yes"; then - echo - echo 'FATAL ERROR: cannot find a valid header file.' - echo 'Install or upgrade the XFS development package.' - echo 'Alternatively, run "make install-dev" from the xfsprogs source.' - exit 1 - fi +AC_DEFUN([AC_PACKAGE_WANT_XFS_LIBXFS_H], + [ AC_CHECK_HEADERS([xfs/libxfs.h], [ have_libxfs=true ], [ have_libxfs=false ]) + AC_SUBST(have_libxfs) ]) AC_DEFUN([AC_PACKAGE_NEED_XFS_XQM_H], diff --git a/configure.in b/configure.in index f087454..210a91e 100644 --- a/configure.in +++ b/configure.in @@ -45,7 +45,7 @@ in *) AC_MULTILIB($enable_lib64) AC_PACKAGE_NEED_XFS_XFS_H - AC_PACKAGE_NEED_XFS_LIBXFS_H + AC_PACKAGE_WANT_XFS_LIBXFS_H AC_PACKAGE_NEED_XFS_XQM_H AC_PACKAGE_NEED_XFSCTL_MACRO AC_PACKAGE_NEED_XFS_HANDLE_H diff --git a/include/builddefs.in b/include/builddefs.in index 636f632..e8f4b6b 100644 --- a/include/builddefs.in +++ b/include/builddefs.in @@ -14,6 +14,7 @@ LOADERFLAGS = @LDFLAGS@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ +HAVE_LIBXFS = @have_libxfs@ LIBXFS = @libxfs@ LIBACL = @libacl@ LIBATTR = @libattr@ diff --git a/m4/package_xfslibs.m4 b/m4/package_xfslibs.m4 index 2c8d694..903e4a7 100644 --- a/m4/package_xfslibs.m4 +++ b/m4/package_xfslibs.m4 @@ -8,14 +8,9 @@ AC_DEFUN([AC_PACKAGE_NEED_XFS_XFS_H], fi ]) -AC_DEFUN([AC_PACKAGE_NEED_XFS_LIBXFS_H], - [ AC_CHECK_HEADERS([xfs/libxfs.h]) - if test "$ac_cv_header_xfs_libxfs_h" != "yes"; then - echo - echo 'FATAL ERROR: cannot find a valid header file.' - echo 'Run "make install-qa" from the xfsprogs source.' - exit 1 - fi +AC_DEFUN([AC_PACKAGE_WANT_LIBXFS_H], + [ AC_CHECK_HEADERS([xfs/libxfs.h], [ have_libxfs=true ], [ have_libxfs=false ]) + AC_SUBST(have_libxfs) ]) AC_DEFUN([AC_PACKAGE_NEED_XFS_XQM_H], diff --git a/src/Makefile b/src/Makefile index 634e1b3..2a09488 100644 --- a/src/Makefile +++ b/src/Makefile @@ -12,11 +12,15 @@ TARGETS = dirstress fill fill2 getpagesize holes lstat64 \ godown resvtest writemod makeextents itrash rename \ multi_open_unlink dmiperf unwritten_sync genhashnames -LINUX_TARGETS = loggen xfsctl bstat t_mtab getdevicesize \ +LINUX_TARGETS = 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 t_dir_offset +ifeq ($(HAVE_LIBXFS), true) +LINUX_TARGETS += loggen +endif + IRIX_TARGETS = open_unlink ifeq ($(PKG_PLATFORM),linux) -- 1.5.5.6 From sandeen@sandeen.net Wed May 27 13:53:23 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RIrNls204163 for ; Wed, 27 May 2009 13:53:23 -0500 X-ASG-Debug-ID: 1243450772-347d026f0000-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 7F3D814865B8 for ; Wed, 27 May 2009 11:59:32 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id r9OBvSr14ABf4f8i for ; Wed, 27 May 2009 11:59:32 -0700 (PDT) Received: by mail.sandeen.net (Postfix, from userid 500) id C0333A9ABD3; Wed, 27 May 2009 13:53:33 -0500 (CDT) From: Eric Sandeen To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/9] xfstests: more generic fs work Subject: [PATCH 0/9] xfstests: more generic fs work Date: Wed, 27 May 2009 13:53:24 -0500 Message-Id: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> X-Mailer: git-send-email 1.5.5.6 X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1243450773 X-Barracuda-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=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26896 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Several patches to facilitate generic filesystem testing in xfstests. From sandeen@sandeen.net Wed May 27 13:53:23 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RIrNdX204177 for ; Wed, 27 May 2009 13:53:23 -0500 X-ASG-Debug-ID: 1243450416-73e901190000-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 09E821A2DC47 for ; Wed, 27 May 2009 11:53:36 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id MiDo01HGPjMsuj6D for ; Wed, 27 May 2009 11:53:36 -0700 (PDT) Received: by mail.sandeen.net (Postfix, from userid 500) id 5F145102992C; Wed, 27 May 2009 13:53:34 -0500 (CDT) From: Eric Sandeen To: xfs@oss.sgi.com Cc: Eric Sandeen X-ASG-Orig-Subj: [PATCH 8/9] Enable generic filesystems to be fsck'd Subject: [PATCH 8/9] Enable generic filesystems to be fsck'd Date: Wed, 27 May 2009 13:53:32 -0500 Message-Id: <1243450413-12681-9-git-send-email-sandeen@sandeen.net> X-Mailer: git-send-email 1.5.5.6 In-Reply-To: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1243450417 X-Barracuda-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=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26897 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This includes a fair bit of rearranging to avoid code duplication, but the goal is to allow 'fsck -n -t $FSTYP $device' to be run on any generic filesystem. Any FS for which this doesn't work will need it's own fsck routine. Signed-off-by: Eric Sandeen --- common.rc | 164 ++++++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 130 insertions(+), 34 deletions(-) diff --git a/common.rc b/common.rc index 54c36f3..c0e6582 100644 --- a/common.rc +++ b/common.rc @@ -693,29 +693,36 @@ _require_user() [ "$?" == "0" ] || _notrun "$qa_user user not defined." } -# check that a FS is mounted as XFS. if so, return mount point +# check that a FS on a device ($1) is mounted (optionally as fstype ($2)). +# if so, return mount point # -_xfs_mounted() +_is_mounted() { - if [ $# -ne 1 ] + if [ $# -le 0 -o $# -ge 3 ] then - echo "Usage: _xfs_mounted device" 1>&2 + echo "Usage: _is_mounted device [fstype]" 1>&2 exit 1 fi device=$1 - if _mount | grep "$device " | $AWK_PROG ' - /type xfs/ { print $3 ; exit 0 } - END { exit 1 } + if [ $# -eq 2 ] + then + fstype=$2 + else + fstype=$FSTYP + fi + + if _mount | grep "$device " | $AWK_PROG -v pattern="type $fstype" ' + pattern { print $3 ; exit 0 } + END { exit 1 } ' then - echo "_xfs_mounted: $device is not a mounted XFS FS" + echo "_is_mounted: $device is not a mounted $fstype FS" exit 1 fi } - # remount a FS to a new mode (ro or rw) # _remount() @@ -735,14 +742,105 @@ _remount() fi } -# run xfs_check and friends on a FS. +# Run the apropriate repair/check on a filesystem # # if the filesystem is mounted, it's either remounted ro before being # checked or it's unmounted and then remounted # +# If set, we remount ro instead of unmounting for fsck USE_REMOUNT=0 +_umount_or_remount_ro() +{ + if [ $# -ne 1 ] + then + echo "Usage: _umount_or_remount_ro device" 1>&2 + exit 1 + fi + device=$1 + + if [ $USE_REMOUNT -eq 0 ] + then + mountpoint=`_is_mounted $device` + $UMOUNT_PROG $device + else + _remount $device ro + fi + echo "$mountpoint" +} + +_mount_or_remount_rw() +{ + if [ $# -ne 3 ] + then + echo "Usage: _mount_or_remount_rw opts device mountpoint" 1>&2 + exit 1 + fi + mount_opts=$1 + device=$2 + mountpoint=$3 + + if [ $USE_REMOUNT -eq 0 ] + then + if ! _mount -t $FSTYP $mount_opts $device $mountpoint + then + echo "!!! failed to remount $device on $mountpoint" + return 0 # ok=0 + fi + else + _remount $device rw + fi + + return 1 # ok=1 +} + +_check_generic_filesystem() +{ + device=$1 + + # If type is set, we're mounted + type=`_fs_type $device` + ok=1 + + if [ "$type" = "$FSTYP" ] + then + # mounted ... + mountpoint=`_umount_or_remount_ro $device` + fi + + fsck -t $FSTYP -n $device >$tmp.fsck 2>&1 + if [ $? -ne 0 ] + then + echo "_check_generic_filesystem: filesystem on $device is inconsistent (see $seq.full)" + + echo "_check_generic filesystem: filesystem on $device is inconsistent" >>$here/$seq.full + echo "*** fsck.$FSTYP output ***" >>$here/$seq.full + cat $tmp.fsck >>$here/$seq.full + echo "*** end fsck.$FSTYP output" >>$here/$seq.full + + ok=0 + fi + rm -f $tmp.fsck + + if [ $ok -eq 0 ] + then + echo "*** mount output ***" >>$here/$seq.full + _mount >>$here/$seq.full + echo "*** end mount output" >>$here/$seq.full + elif [ "$type" = "$FSTYP" ] + then + # was mounted ... + _mount_or_remount_rw "$MOUNT_OPTIONS" $device $mountpoint + ok=$? + fi + + [ $ok -eq 0 ] && exit 1 + return 0 +} + +# run xfs_check and friends on a FS. + _check_xfs_filesystem() { if [ $# -ne 3 ] @@ -773,15 +871,8 @@ _check_xfs_filesystem() if [ "$type" = "xfs" ] then - # mounted... - - if [ $USE_REMOUNT -eq 0 ] - then - mountpoint=`_xfs_mounted $device` - $UMOUNT_PROG $device - else - _remount $device ro - fi + # mounted ... + mountpoint=`_umount_or_remount_ro $device` fi $XFS_LOGPRINT_PROG -t $extra_log_options $device 2>&1 \ @@ -834,17 +925,7 @@ _check_xfs_filesystem() echo "*** end mount output" >>$here/$seq.full elif [ "$type" = "xfs" ] then - # mounted... - if [ $USE_REMOUNT -eq 0 ] - then - if ! _mount -t xfs $extra_mount_options $device $mountpoint - then - echo "!!! failed to remount $device on $mountpoint" - ok=0 - fi - else - _remount $device rw - fi + _mount_or_remount_rw "$extra_mount_options" $device $mountpoint fi [ $ok -eq 0 ] && exit 1 @@ -894,12 +975,13 @@ _check_udf_filesystem() } -_check_test_fs() +_check_generic_test_fs() { - if [ "$FSTYP" != "xfs" ]; then - return - fi + _check_generic_filesystem $TEST_DEV +} +_check_xfs_test_fs() +{ TEST_LOG="none" TEST_RT="none" [ "$USE_EXTERNAL" = yes -a ! -z "$TEST_LOGDEV" ] && \ @@ -918,6 +1000,18 @@ _check_test_fs() fi } +_check_test_fs() +{ + case $FSTYP in + xfs) + _check_xfs_test_fs + ;; + *) + _check_generic_test_fs + ;; + esac +} + _check_scratch_fs() { case $FSTYP in @@ -939,6 +1033,7 @@ _check_scratch_fs() # Don't know how to check an NFS filesystem, yet. ;; *) + _check_generic_filesystem $SCRATCH_DEV ;; esac } @@ -988,6 +1083,7 @@ _check_testdir() # Don't know how to check an NFS filesystem, yet. ;; *) + _check_generic_test_fs ;; esac } -- 1.5.5.6 From sandeen@sandeen.net Wed May 27 13:53:23 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_62 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RIrNwi204168 for ; Wed, 27 May 2009 13:53:23 -0500 X-ASG-Debug-ID: 1243450772-3bc0026e0000-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 A6D2414865BA for ; Wed, 27 May 2009 11:59:32 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id HwlWJlD5Vh6IJVbK for ; Wed, 27 May 2009 11:59:32 -0700 (PDT) Received: by mail.sandeen.net (Postfix, from userid 500) id 2E45210298E9; Wed, 27 May 2009 13:53:34 -0500 (CDT) From: Eric Sandeen To: xfs@oss.sgi.com Cc: Eric Sandeen X-ASG-Orig-Subj: [PATCH 5/9] Set up testdir for generic filesystems Subject: [PATCH 5/9] Set up testdir for generic filesystems Date: Wed, 27 May 2009 13:53:29 -0500 Message-Id: <1243450413-12681-6-git-send-email-sandeen@sandeen.net> X-Mailer: git-send-email 1.5.5.6 In-Reply-To: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1243450773 X-Barracuda-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=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26896 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Make the default filesystem testdir setup the same as what xfs did; simply set up the testdir variable. Update the comment for UDF & NFS, as to why they are currently doing something different. Signed-off-by: Eric Sandeen --- common.rc | 31 ++++++++++--------------------- 1 files changed, 10 insertions(+), 21 deletions(-) diff --git a/common.rc b/common.rc index f649bc2..78514f4 100644 --- a/common.rc +++ b/common.rc @@ -988,15 +988,6 @@ _check_testdir() esac } - -_setup_xfs_testdir() -{ - [ "$FSTYP" != "xfs" ] \ - && _fail "setup_xfs_testdir: \$FSTYP ($FSTYP) is not xfs" - - testdir=$TEST_DIR -} - _setup_udf_scratchdir() { [ "$FSTYP" != "udf" ] \ @@ -1050,16 +1041,17 @@ _setup_nfs_scratchdir() } # -# Warning for UDF and NFS this function calls _setup_udf_scratchdir and -# _setup_udf_scratchdir. This is done because testdir is a persistent -# XFS only partition. +# Warning for UDF and NFS: +# this function calls _setup_udf_scratchdir and _setup_udf_scratchdir +# which actually uses the scratch dir for the test dir. +# +# This was done because testdir was intended to be a persistent +# XFS only partition. This should eventually change, and treat +# at least local filesystems all the same. # _setup_testdir() { case $FSTYP in - xfs) - _setup_xfs_testdir - ;; udf) _setup_udf_scratchdir ;; @@ -1067,7 +1059,7 @@ _setup_testdir() _setup_nfs_scratchdir ;; *) - _fail "\$FSTYP is not xfs, udf or nfs" + testdir=$TEST_DIR ;; esac } @@ -1075,10 +1067,6 @@ _setup_testdir() _cleanup_testdir() { case $FSTYP in - xfs) - # do nothing, testdir is $TEST_DIR - : - ;; udf) # umount testdir as it is $SCRATCH_MNT which could be used by xfs next [ -n "$testdir" ] && $UMOUNT_PROG $testdir @@ -1088,7 +1076,8 @@ _cleanup_testdir() [ -n "$testdir" ] && $UMOUNT_PROG $testdir ;; *) - _fail "\$FSTYP is not xfs, udf or nfs" + # do nothing, testdir is $TEST_DIR + : ;; esac } -- 1.5.5.6 From sandeen@sandeen.net Wed May 27 13:53:23 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_53 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RIrMAO204149 for ; Wed, 27 May 2009 13:53:23 -0500 X-ASG-Debug-ID: 1243450415-73cf012c0000-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 C9E721A2DC46 for ; Wed, 27 May 2009 11:53:35 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id TFuOwMbv3dOLhtQb for ; Wed, 27 May 2009 11:53:35 -0700 (PDT) Received: by mail.sandeen.net (Postfix, from userid 500) id 4542B1029907; Wed, 27 May 2009 13:53:34 -0500 (CDT) From: Eric Sandeen To: xfs@oss.sgi.com Cc: Eric Sandeen X-ASG-Orig-Subj: [PATCH 6/9] Detect FS type to test based on TEST_DEV Subject: [PATCH 6/9] Detect FS type to test based on TEST_DEV Date: Wed, 27 May 2009 13:53:30 -0500 Message-Id: <1243450413-12681-7-git-send-email-sandeen@sandeen.net> X-Mailer: git-send-email 1.5.5.6 In-Reply-To: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1243450416 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26897 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This helps support generic / non-xfs fileystems. Rather than defaulting to xfs or expecting a fs type passed in, just look at what is on TEST_DEV and use that for FSTYP by default. We may wish to add a generic way to override this later. Signed-off-by: Eric Sandeen --- common | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/common b/common index 92ec9e2..b5ca5d0 100644 --- a/common +++ b/common @@ -30,7 +30,13 @@ have_test_arg=false randomize=false rm -f $tmp.list $tmp.tmp $tmp.sed -export FSTYP=xfs +# Autodetect fs type based on what's on $TEST_DEV +if [ "$HOSTOS" == "Linux" ] +then + export FSTYP=`blkid -s TYPE -o value $TEST_DEV` +else + export FSTYP=xfs +fi for r do -- 1.5.5.6 From sandeen@sandeen.net Wed May 27 13:53:23 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_62, 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RIrLTp204139 for ; Wed, 27 May 2009 13:53:22 -0500 X-ASG-Debug-ID: 1243450414-73d7012b0000-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 402761A2DC41 for ; Wed, 27 May 2009 11:53:34 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id hveYnRtqbnRlfAFC for ; Wed, 27 May 2009 11:53:34 -0700 (PDT) Received: by mail.sandeen.net (Postfix, from userid 500) id 1581810298A1; Wed, 27 May 2009 13:53:34 -0500 (CDT) From: Eric Sandeen To: xfs@oss.sgi.com Cc: Eric Sandeen X-ASG-Orig-Subj: [PATCH 3/9] Support "generic" filesystem type Subject: [PATCH 3/9] Support "generic" filesystem type Date: Wed, 27 May 2009 13:53:27 -0500 Message-Id: <1243450413-12681-4-git-send-email-sandeen@sandeen.net> X-Mailer: git-send-email 1.5.5.6 In-Reply-To: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1243450415 X-Barracuda-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.92 X-Barracuda-Spam-Status: No, SCORE=-0.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26897 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Create a new "generic" _supported_fs type for tests which are not really filesystem-specific. "generic" tests do expect that acl & attr are supported though. Signed-off-by: Eric Sandeen --- 001 | 2 +- 002 | 2 +- 005 | 2 +- 006 | 2 +- 007 | 2 +- 010 | 2 +- 011 | 2 +- 013 | 2 +- 014 | 2 +- 069 | 2 +- 070 | 2 +- 074 | 2 +- 076 | 2 +- 093 | 2 +- 097 | 2 +- 099 | 2 +- 100 | 2 +- 105 | 2 +- 123 | 2 +- 124 | 2 +- 125 | 2 +- 128 | 2 +- 131 | 2 +- 184 | 2 +- 193 | 2 +- common.rc | 2 +- new | 2 +- 27 files changed, 27 insertions(+), 27 deletions(-) diff --git a/001 b/001 index 2ff2c05..2dddffb 100755 --- a/001 +++ b/001 @@ -33,7 +33,7 @@ done_cleanup=false trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15 # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux verbose=true diff --git a/002 b/002 index 13c6be3..c2d2b5a 100755 --- a/002 +++ b/002 @@ -30,7 +30,7 @@ _cleanup() } # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/005 b/005 index d21dcb5..644f63d 100755 --- a/005 +++ b/005 @@ -53,7 +53,7 @@ _touch() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic # IRIX UDF does not support symlinks if [ $FSTYP == 'udf' ]; then diff --git a/006 b/006 index 4da277f..49b5949 100755 --- a/006 +++ b/006 @@ -40,7 +40,7 @@ _count() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/007 b/007 index 290f716..7a97d71 100755 --- a/007 +++ b/007 @@ -34,7 +34,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/010 b/010 index c51ecb2..f1bc885 100755 --- a/010 +++ b/010 @@ -42,7 +42,7 @@ _filter_dbtest() [ -x $here/src/dbtest ] || _notrun "dbtest was not built for this platform" # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/011 b/011 index 655229b..e1a3d7d 100755 --- a/011 +++ b/011 @@ -32,7 +32,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/013 b/013 index 1c99e8f..e417d5a 100755 --- a/013 +++ b/013 @@ -78,7 +78,7 @@ _do_test() # real QA test starts here -_supported_fs xfs udf +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/014 b/014 index acc3696..f5b64d0 100755 --- a/014 +++ b/014 @@ -30,7 +30,7 @@ _cleanup() . ./common.rc . ./common.filter -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/069 b/069 index 11efd98..4950901 100755 --- a/069 +++ b/069 @@ -23,7 +23,7 @@ trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15 . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _require_scratch diff --git a/070 b/070 index 65e158a..9302500 100755 --- a/070 +++ b/070 @@ -30,7 +30,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/074 b/074 index d5e0364..0bd0807 100755 --- a/074 +++ b/074 @@ -97,7 +97,7 @@ _process_args() # real QA test starts here rm -f $here/$seq.full -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux # diff --git a/076 b/076 index 975de2e..c0f6675 100755 --- a/076 +++ b/076 @@ -39,7 +39,7 @@ trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15 . ./common.filter # real QA test starts here -_supported_fs xfs udf +_supported_fs generic _supported_os IRIX Linux _require_scratch diff --git a/093 b/093 index c1243e2..1139788 100755 --- a/093 +++ b/093 @@ -43,7 +43,7 @@ _filefilter() } # real QA test starts here -_supported_fs xfs udf +_supported_fs generic _supported_os IRIX [ -x $runas ] || _notrun "$runas executable not found" diff --git a/097 b/097 index b7fe1f2..9c38d18 100755 --- a/097 +++ b/097 @@ -58,7 +58,7 @@ else fi # real QA test starts here -_supported_fs udf xfs +_supported_fs generic _supported_os IRIX _require_scratch diff --git a/099 b/099 index 1c5daeb..6b824dd 100755 --- a/099 +++ b/099 @@ -62,7 +62,7 @@ rm -f $seq.full #------------------------------------------------------- # real QA test starts here -_supported_fs xfs udf +_supported_fs generic _supported_os IRIX _acl_setup_ids diff --git a/100 b/100 index aa6c4ca..57e9bb6 100755 --- a/100 +++ b/100 @@ -29,7 +29,7 @@ _cleanup() } # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux # Use _populate_fs() in common.rc to create a directory structure. diff --git a/105 b/105 index cd201dd..f154422 100755 --- a/105 +++ b/105 @@ -32,7 +32,7 @@ _cleanup() . ./common.attr # Modify as appropriate. -_supported_fs xfs udf +_supported_fs generic _supported_os IRIX Linux # real QA test starts here diff --git a/123 b/123 index 63cd48f..ba7c454 100755 --- a/123 +++ b/123 @@ -57,7 +57,7 @@ _user_do() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os Linux IRIX _require_user diff --git a/124 b/124 index 29af340..5adef48 100755 --- a/124 +++ b/124 @@ -33,7 +33,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os Linux _setup_testdir diff --git a/125 b/125 index ff538ef..f432034 100755 --- a/125 +++ b/125 @@ -28,7 +28,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os Linux _require_user diff --git a/128 b/128 index 24bdac7..227d05c 100755 --- a/128 +++ b/128 @@ -30,7 +30,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os Linux _setup_testdir diff --git a/131 b/131 index 78627f5..67adb81 100755 --- a/131 +++ b/131 @@ -28,7 +28,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os Linux _setup_testdir diff --git a/184 b/184 index 30839cb..408e645 100755 --- a/184 +++ b/184 @@ -30,7 +30,7 @@ _cleanup() . ./common.filter # real QA test starts here -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux _setup_testdir diff --git a/193 b/193 index 54c51a2..743c70f 100755 --- a/193 +++ b/193 @@ -50,7 +50,7 @@ _cleanup_files() . ./common.filter # real QA test starts here -_supported_fs xfs nfs udf +_supported_fs generic _supported_os Linux _require_user diff --git a/common.rc b/common.rc index 317e009..f649bc2 100644 --- a/common.rc +++ b/common.rc @@ -546,7 +546,7 @@ _supported_fs() { for f do - if [ "$f" = "$FSTYP" ] + if [ "$f" = "$FSTYP" -o "$f" = "generic" ] then return fi diff --git a/new b/new index c924ffe..ac61221 100755 --- a/new +++ b/new @@ -99,7 +99,7 @@ _cleanup() # real QA test starts here # Modify as appropriate. -_supported_fs xfs udf nfs +_supported_fs generic _supported_os IRIX Linux # if error -- 1.5.5.6 From sandeen@sandeen.net Wed May 27 13:53:23 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_62 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RIrM5E204148 for ; Wed, 27 May 2009 13:53:22 -0500 X-ASG-Debug-ID: 1243450416-2aa302f80000-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 B86492B394B for ; Wed, 27 May 2009 11:53:36 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id QXp0brse7VNSeriJ for ; Wed, 27 May 2009 11:53:36 -0700 (PDT) Received: by mail.sandeen.net (Postfix, from userid 500) id 57A751029918; Wed, 27 May 2009 13:53:34 -0500 (CDT) From: Eric Sandeen To: xfs@oss.sgi.com Cc: Eric Sandeen X-ASG-Orig-Subj: [PATCH 7/9] Set default extN mount options Subject: [PATCH 7/9] Set default extN mount options Date: Wed, 27 May 2009 13:53:31 -0500 Message-Id: <1243450413-12681-8-git-send-email-sandeen@sandeen.net> X-Mailer: git-send-email 1.5.5.6 In-Reply-To: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1243450416 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26897 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean ext2/3/4 don't support acls & attrs w/o specific mount options, so make those the default whenever we mount these filesystems. Signed-off-by: Eric Sandeen --- common.rc | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/common.rc b/common.rc index 78514f4..54c36f3 100644 --- a/common.rc +++ b/common.rc @@ -49,6 +49,10 @@ _mount_opts() nfs) export MOUNT_OPTIONS=$NFS_MOUNT_OPTIONS ;; + ext2|ext3|ext4) + # acls & xattrs aren't turned on by default on ext$FOO + export MOUNT_OPTIONS="-o acl,user_xattr $EXT_MOUNT_OPTIONS" + ;; *) ;; esac @@ -585,7 +589,7 @@ _require_scratch() _notrun "this test requires a valid \$SCRATCH_DEV" fi ;; - nfs*|ext2|ext3|reiserfs) + nfs*|ext2|ext3|ext4|reiserfs) echo $SCRATCH_DEV | grep -q ":" > /dev/null 2>&1 if [ ! -z "$SCRATCH_DEV" -a ! -b "$SCRATCH_DEV" -a "$?" != "0" ] then -- 1.5.5.6 From sandeen@sandeen.net Wed May 27 14:06:56 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RJ6tdG204913 for ; Wed, 27 May 2009 14:06:55 -0500 X-ASG-Debug-ID: 1243451226-73da01600000-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 884C61A2DE2B for ; Wed, 27 May 2009 12:07:06 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id 9QhmhBFz1lQEGuMz for ; Wed, 27 May 2009 12:07:06 -0700 (PDT) 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 n4RJ6tlq020111; Wed, 27 May 2009 15:06:55 -0400 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 n4RJ6sCO019441; Wed, 27 May 2009 15:06:55 -0400 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 n4RJ6rBD024013; Wed, 27 May 2009 15:06:54 -0400 Message-ID: <4A1D8F4D.1040902@sandeen.net> Date: Wed, 27 May 2009 14:06:53 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: validate quota log items during log recovery Subject: Re: [PATCH] xfs: validate quota log items during log recovery References: <20090303175427.GA20582@infradead.org> <4A1C13DC.5000605@sandeen.net> <20090527091734.GA21958@infradead.org> In-Reply-To: <20090527091734.GA21958@infradead.org> Content-Type: text/plain; charset=us-ascii 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: 1243451227 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26897 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Updated patch below: > > > Subject: xfs: validate quota log items during log recovery > From: Christoph Hellwig > > Arkadiusz has seen really strange crashes in xfs_qm_dqcheck that > I can only explain by a log item being too smal to actually fit the ^^small ;) > xfs_dqblk_t we're dereferencing all over xfs_qm_dqcheck. So add > graceful checks for NULL or too small quota items to the log recovery > code. > > > Signed-off-by: Christoph Hellwig A bit more verbose now isn't it, but oh well :) Reviewed-by: Eric Sandeen > Index: xfs/fs/xfs/xfs_log_recover.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_log_recover.c 2009-05-27 10:40:03.752821404 +0200 > +++ xfs/fs/xfs/xfs_log_recover.c 2009-05-27 10:43:23.740939498 +0200 > @@ -1975,16 +1975,30 @@ xlog_recover_do_reg_buffer( > error = 0; > if (buf_f->blf_flags & > (XFS_BLI_UDQUOT_BUF|XFS_BLI_PDQUOT_BUF|XFS_BLI_GDQUOT_BUF)) { > + if (item->ri_buf[i].i_addr == NULL) { > + cmn_err(CE_ALERT, > + "XFS: NULL dquot in %s.", __func__); > + goto next; > + } > + if (item->ri_buf[i].i_len < sizeof(xfs_dqblk_t)) { > + cmn_err(CE_ALERT, > + "XFS: dquot too small (%d) in %s.", > + item->ri_buf[i].i_len, __func__); > + goto next; > + } > error = xfs_qm_dqcheck((xfs_disk_dquot_t *) > item->ri_buf[i].i_addr, > -1, 0, XFS_QMOPT_DOWARN, > "dquot_buf_recover"); > + if (error) > + goto next; > } > - if (!error) > - memcpy(xfs_buf_offset(bp, > - (uint)bit << XFS_BLI_SHIFT), /* dest */ > - item->ri_buf[i].i_addr, /* source */ > - nbits< + > + memcpy(xfs_buf_offset(bp, > + (uint)bit << XFS_BLI_SHIFT), /* dest */ > + item->ri_buf[i].i_addr, /* source */ > + nbits< + next: > i++; > bit += nbits; > } > @@ -2615,7 +2629,19 @@ xlog_recover_do_dquot_trans( > return (0); > > recddq = (xfs_disk_dquot_t *)item->ri_buf[1].i_addr; > - ASSERT(recddq); > + > + if (item->ri_buf[1].i_addr == NULL) { > + cmn_err(CE_ALERT, > + "XFS: NULL dquot in %s.", __func__); > + return XFS_ERROR(EIO); > + } > + if (item->ri_buf[1].i_len < sizeof(xfs_dqblk_t)) { > + cmn_err(CE_ALERT, > + "XFS: dquot too small (%d) in %s.", > + item->ri_buf[1].i_len, __func__); > + return XFS_ERROR(EIO); > + } > + > /* > * This type of quotas was turned off, so ignore this record. > */ > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Wed May 27 15:06:23 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RK6NvK208460 for ; Wed, 27 May 2009 15:06:23 -0500 X-ASG-Debug-ID: 1243455153-624c02000000-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 0786C14868E1 for ; Wed, 27 May 2009 13:12:33 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id PxBtNK67neKwGEyg for ; Wed, 27 May 2009 13:12:33 -0700 (PDT) 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 n4RK6RUI003420; Wed, 27 May 2009 16:06:27 -0400 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 n4RK6QdI008769; Wed, 27 May 2009 16:06:27 -0400 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 n4RK6PdJ008713; Wed, 27 May 2009 16:06:26 -0400 Message-ID: <4A1D9D41.7040107@sandeen.net> Date: Wed, 27 May 2009 15:06:25 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: kill xfs_qmops Subject: Re: [PATCH] xfs: kill xfs_qmops References: <20090224143736.GA16616@infradead.org> <4A1C2839.3010005@sandeen.net> <20090527095616.GA19069@infradead.org> In-Reply-To: <20090527095616.GA19069@infradead.org> Content-Type: text/plain; charset=us-ascii 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: 1243455154 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26900 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: ... > never, but that's a bug because the loop should now start at 0. Looks > like out quota testing in xfsqa still isn't that good or the first > inode is always already attached in normal operation (probably the latter). > > Updated patch below: > > > Subject: xfs: kill xfs_qmops > From: Christoph Hellwig > > Kill the quota ops function vector and replace it with direct calls or > stubs in the CONFIG_XFS_QUOTA=n case. > > Make sure we check XFS_IS_QUOTA_RUNNING in the right spots. We can remove > the number of those checks because the XFS_TRANS_DQ_DIRTY flag can't be set > otherwise. > > This brings us back closer to the way this code worked in IRIX and earlier > Linux versions, but we keep a lot of the more useful factoring of common > code. > > Eventually we should also kill xfs_qm_bhv.c, but that's left for a later > patch. > > Reduces the size of the source code by about 250 lines and the size of > XFS module by about 1.5 kilobytes with quotas enabled: > > text data bss dec hex filename > 615957 2960 3848 622765 980ad fs/xfs/xfs.o > 617231 3152 3848 624231 98667 fs/xfs/xfs.o.old > > > Fallout: > > - xfs_qm_dqattach is split into xfs_qm_dqattach_locked which expects > the inode locked and xfs_qm_dqattach which does the locking around it, > thus removing XFS_QMOPT_ILOCKED. > > Signed-off-by: Christoph Hellwig > Looks better to me now, thanks. Though worrisome that quota doesn't seem well-tested in xfsqa, as you said... but as far as I can tell seems ok now. Have arekm test it a bit too ;) Reviewed-by: Eric Sandeen From sandeen@sandeen.net Wed May 27 15:11:41 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RKBeWt208876 for ; Wed, 27 May 2009 15:11:41 -0500 X-ASG-Debug-ID: 1243455114-2ac5008b0000-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 321332B4063 for ; Wed, 27 May 2009 13:11:54 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id WlHhA7PaV0t1PGzn for ; Wed, 27 May 2009 13:11:54 -0700 (PDT) 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 n4RKBj7O004672; Wed, 27 May 2009 16:11:46 -0400 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 n4RKBjmN010650; Wed, 27 May 2009 16:11:45 -0400 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 n4RKBi4C009668; Wed, 27 May 2009 16:11:44 -0400 Message-ID: <4A1D9E80.4030606@sandeen.net> Date: Wed, 27 May 2009 15:11:44 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/7] xfs: split inode flushing from xfs_sync_inodes_ag Subject: Re: [PATCH 2/7] xfs: split inode flushing from xfs_sync_inodes_ag References: <20090514171233.942489000@bombadil.infradead.org> <20090514171558.298098000@bombadil.infradead.org> <4A1C54FB.2080705@sandeen.net> <20090527105841.GA10545@infradead.org> In-Reply-To: <20090527105841.GA10545@infradead.org> Content-Type: text/plain; charset=us-ascii 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: 1243455115 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26900 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Tue, May 26, 2009 at 03:45:47PM -0500, Eric Sandeen wrote: >> What happened to the XFS_IFLUSH_DELWRI case? >> >> You mentioned "keep the current behavior exactly" but this seems like a >> change, no? > > Yeah, this got lost when playing with variations of the patch. Correct > version below: > > Subject: xfs: split inode flushing from xfs_sync_inodes_ag > From: Christoph Hellwig > > > In many cases we only want to sync inode metadata. Split out the inode > flushing into a separate helper to prepare factoring the inode sync code. > > Based on a patch from Dave Chinner, but redone to keep the current behaviour > exactly and leave changes to the flushing logic to another patch. > > > Signed-off-by: Christoph Hellwig > Reviewed-by: Eric Sandeen From sandeen@sandeen.net Wed May 27 15:38:47 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RKckv7209935 for ; Wed, 27 May 2009 15:38:46 -0500 X-ASG-Debug-ID: 1243457096-61d6007a0000-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 2EBA51486CEB for ; Wed, 27 May 2009 13:44:56 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id 2Jd7xNnyFkLinY0B for ; Wed, 27 May 2009 13:44:56 -0700 (PDT) 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 n4RKcpWS010799; Wed, 27 May 2009 16:38:51 -0400 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 n4RKcopA020927; Wed, 27 May 2009 16:38:50 -0400 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 n4RKcnU4017444; Wed, 27 May 2009 16:38:49 -0400 Message-ID: <4A1DA4D9.4000403@sandeen.net> Date: Wed, 27 May 2009 15:38:49 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/7] xfs: factor out inode validation for sync Subject: Re: [PATCH 3/7] xfs: factor out inode validation for sync References: <20090514171233.942489000@bombadil.infradead.org> <20090514171558.494200000@bombadil.infradead.org> In-Reply-To: <20090514171558.494200000@bombadil.infradead.org> Content-Type: text/plain; charset=us-ascii 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: 1243457097 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26900 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > From: Dave Chinner > > Separate the validation of inodes found by the radix > tree walk from the radix tree lookup. > > Signed-off-by: Dave Chinner > Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen > Index: xfs/fs/xfs/linux-2.6/xfs_sync.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-05-14 16:19:52.080661336 +0200 > +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-05-14 16:20:34.251688779 +0200 > @@ -49,6 +49,39 @@ > #include > > > +/* must be called with pag_ici_lock held and releases it */ > +STATIC int > +xfs_sync_inode_valid( > + struct xfs_inode *ip, > + struct xfs_perag *pag) > +{ > + struct inode *inode = VFS_I(ip); > + > + /* nothing to sync during shutdown */ > + if (XFS_FORCED_SHUTDOWN(ip->i_mount)) { > + read_unlock(&pag->pag_ici_lock); > + return EFSCORRUPTED; > + } > + > + /* > + * If we can't get a reference on the inode, it must be in reclaim. > + * Leave it for the reclaim code to flush. Also avoid inodes that > + * haven't been fully initialised. > + */ > + if (!igrab(inode)) { > + read_unlock(&pag->pag_ici_lock); > + return ENOENT; > + } > + read_unlock(&pag->pag_ici_lock); > + > + if (is_bad_inode(inode) || xfs_iflags_test(ip, XFS_INEW)) { > + IRELE(ip); > + return ENOENT; > + } > + > + return 0; > +} > + > STATIC int > xfs_sync_inode_data( > struct xfs_inode *ip, > @@ -121,7 +154,6 @@ xfs_sync_inodes_ag( > int last_error = 0; > > do { > - struct inode *inode; > xfs_inode_t *ip = NULL; > > /* > @@ -150,27 +182,10 @@ xfs_sync_inodes_ag( > break; > } > > - /* nothing to sync during shutdown */ > - if (XFS_FORCED_SHUTDOWN(mp)) { > - read_unlock(&pag->pag_ici_lock); > - return 0; > - } > - > - /* > - * If we can't get a reference on the inode, it must be > - * in reclaim. Leave it for the reclaim code to flush. > - */ > - inode = VFS_I(ip); > - if (!igrab(inode)) { > - read_unlock(&pag->pag_ici_lock); > - continue; > - } > - read_unlock(&pag->pag_ici_lock); > - > - /* avoid new or bad inodes */ > - if (is_bad_inode(inode) || > - xfs_iflags_test(ip, XFS_INEW)) { > - IRELE(ip); > + error = xfs_sync_inode_valid(ip, pag); > + if (error) { > + if (error == EFSCORRUPTED) > + return 0; > continue; > } From sandeen@sandeen.net Wed May 27 15:44:15 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4RKiFn3210148 for ; Wed, 27 May 2009 15:44:15 -0500 X-ASG-Debug-ID: 1243457068-73c8038f0000-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 28E8C1D37631 for ; Wed, 27 May 2009 13:44:28 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id IaRN28XJZADBtilM for ; Wed, 27 May 2009 13:44:28 -0700 (PDT) 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 n4RKiJKl011913; Wed, 27 May 2009 16:44:19 -0400 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 n4RKiJ46022193; Wed, 27 May 2009 16:44:19 -0400 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 n4RKiIe5018310; Wed, 27 May 2009 16:44:18 -0400 Message-ID: <4A1DA622.3050900@sandeen.net> Date: Wed, 27 May 2009 15:44:18 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/7] xfs: remove unused parameter from xfs_reclaim_inodes Subject: Re: [PATCH 4/7] xfs: remove unused parameter from xfs_reclaim_inodes References: <20090514171233.942489000@bombadil.infradead.org> <20090514171558.649403000@bombadil.infradead.org> In-Reply-To: <20090514171558.649403000@bombadil.infradead.org> Content-Type: text/plain; charset=us-ascii 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: 1243457069 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26900 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > From: Dave Chinner > > The noblock parameter of xfs_reclaim_inodes is only ever set to zero. Remove > it and all the conditional code that is never executed. > > Signed-off-by: Dave Chinner > Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen > Index: xfs/fs/xfs/linux-2.6/xfs_sync.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-05-14 16:20:34.251688779 +0200 > +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-05-14 16:20:37.012658983 +0200 > @@ -383,7 +383,7 @@ xfs_quiesce_fs( > int count = 0, pincount; > > xfs_flush_buftarg(mp->m_ddev_targp, 0); > - xfs_reclaim_inodes(mp, 0, XFS_IFLUSH_DELWRI_ELSE_ASYNC); > + xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC); > > /* > * This loop must run at least twice. The first instance of the loop > @@ -507,7 +507,7 @@ xfs_sync_worker( > > if (!(mp->m_flags & XFS_MOUNT_RDONLY)) { > xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); > - xfs_reclaim_inodes(mp, 0, XFS_IFLUSH_DELWRI_ELSE_ASYNC); > + xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC); > /* dgc: errors ignored here */ > error = xfs_qm_sync(mp, SYNC_BDFLUSH); > error = xfs_sync_fsdata(mp, SYNC_BDFLUSH); > @@ -701,7 +701,6 @@ STATIC void > xfs_reclaim_inodes_ag( > xfs_mount_t *mp, > int ag, > - int noblock, > int mode) > { > xfs_inode_t *ip = NULL; > @@ -747,25 +746,13 @@ restart: > continue; > } > > - if (noblock) { > - if (!xfs_ilock_nowait(ip, XFS_ILOCK_EXCL)) { > - read_unlock(&pag->pag_ici_lock); > - continue; > - } > - if (xfs_ipincount(ip) || > - !xfs_iflock_nowait(ip)) { > - xfs_iunlock(ip, XFS_ILOCK_EXCL); > - read_unlock(&pag->pag_ici_lock); > - continue; > - } > - } > read_unlock(&pag->pag_ici_lock); > > /* > * hmmm - this is an inode already in reclaim. Do > * we even bother catching it here? > */ > - if (xfs_reclaim_inode(ip, noblock, mode)) > + if (xfs_reclaim_inode(ip, 0, mode)) > skipped++; > } while (nr_found); > > @@ -780,7 +767,6 @@ restart: > int > xfs_reclaim_inodes( > xfs_mount_t *mp, > - int noblock, > int mode) > { > int i; > @@ -788,7 +774,7 @@ xfs_reclaim_inodes( > for (i = 0; i < mp->m_sb.sb_agcount; i++) { > if (!mp->m_perag[i].pag_ici_init) > continue; > - xfs_reclaim_inodes_ag(mp, i, noblock, mode); > + xfs_reclaim_inodes_ag(mp, i, mode); > } > return 0; > } > Index: xfs/fs/xfs/linux-2.6/xfs_sync.h > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.h 2009-05-14 16:19:44.268809697 +0200 > +++ xfs/fs/xfs/linux-2.6/xfs_sync.h 2009-05-14 16:20:37.012658983 +0200 > @@ -50,7 +50,7 @@ void xfs_quiesce_attr(struct xfs_mount * > void xfs_flush_inodes(struct xfs_inode *ip); > > int xfs_reclaim_inode(struct xfs_inode *ip, int locked, int sync_mode); > -int xfs_reclaim_inodes(struct xfs_mount *mp, int noblock, int mode); > +int xfs_reclaim_inodes(struct xfs_mount *mp, int mode); > > void xfs_inode_set_reclaim_tag(struct xfs_inode *ip); > void xfs_inode_clear_reclaim_tag(struct xfs_inode *ip); > Index: xfs/fs/xfs/xfs_mount.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_mount.c 2009-05-14 16:19:44.318659340 +0200 > +++ xfs/fs/xfs/xfs_mount.c 2009-05-14 16:20:37.013659110 +0200 > @@ -1371,7 +1371,7 @@ xfs_unmountfs( > * need to force the log first. > */ > xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); > - xfs_reclaim_inodes(mp, 0, XFS_IFLUSH_ASYNC); > + xfs_reclaim_inodes(mp, XFS_IFLUSH_ASYNC); > > xfs_qm_unmount(mp); From michael.monnerie@is.it-management.at Thu May 28 04:10:16 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_33, 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4S9AExA245226 for ; Thu, 28 May 2009 04:10:15 -0500 X-ASG-Debug-ID: 1243501825-34c401180000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv1.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 476861A34774 for ; Thu, 28 May 2009 02:10:25 -0700 (PDT) Received: from mailsrv1.zmi.at (mailsrv1.zmi.at [212.69.162.198]) by cuda.sgi.com with ESMTP id IDfbAQ3dFFZwnQXU for ; Thu, 28 May 2009 02:10:25 -0700 (PDT) Received: from mailsrv2.i.zmi.at (h081217106033.dyn.cm.kabsi.at [81.217.106.33]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mailsrv2.i.zmi.at", Issuer "power4u.zmi.at" (not verified)) by mailsrv1.zmi.at (Postfix) with ESMTP id 7ABB353AF for ; Thu, 28 May 2009 11:10:23 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.0.0.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv2.i.zmi.at (Postfix) with ESMTPSA id 1F73240DC06 for ; Thu, 28 May 2009 11:10:23 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Incorrect Free Space / xfs_growfs on RAID5 Volume ? Subject: Re: Incorrect Free Space / xfs_growfs on RAID5 Volume ? Date: Thu, 28 May 2009 11:10:14 +0200 User-Agent: KMail/1.10.3 (Linux/2.6.29.2-ZMI; KDE/4.1.3; x86_64; ; ) References: <4A1BE48F.9020107@dermichi.com> <59D949A6-71F6-4C4C-B5F9-B5B22B189771@fiton.is> In-Reply-To: <59D949A6-71F6-4C4C-B5F9-B5B22B189771@fiton.is> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart2312739.B8rEvcBCie"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200905281110.22697@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.162.198] X-Barracuda-Start-Time: 1243501826 X-Barracuda-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=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26929 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --nextPart2312739.B8rEvcBCie Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On Mittwoch 27 Mai 2009 Svavar =D6rn Eysteinsson wrote: > Is there a simple way for me to check if my kernel has this option =A0 > compiled in ? gzip -cd /proc/config.gz | grep CONFIG_LBD if your kernel provides /proc/config.gz > And the FINAL question.... Is there any way for me to alter the raid > =A0 volume, partitions to GPT or just format the /dev/sdb without > loosing any data ? > Maby it's just not possible without backup up data, and restore'ing ? I googled this once, and found the anser "no". If you find a solution,=20 please post it, I'd be very interested in it. mfg zmi =2D-=20 // Michael Monnerie, Ing.BSc ----- http://it-management.at // Tel: 0660 / 415 65 31 .network.your.ideas. // PGP Key: "curl -s http://zmi.at/zmi.asc | gpg --import" // Fingerprint: AC19 F9D5 36ED CD8A EF38 500E CE14 91F7 1C12 09B4 // Keyserver: wwwkeys.eu.pgp.net Key-ID: 1C1209B4 --nextPart2312739.B8rEvcBCie 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) iEYEABECAAYFAkoeVP4ACgkQzhSR9xwSCbRFQQCeMHgfvVSsb8gcVreyIcY6R49c YRUAoKJQfVsgypKdtQLW8RuSVYk72b6A =dvKK -----END PGP SIGNATURE----- --nextPart2312739.B8rEvcBCie-- From michael.monnerie@is.it-management.at Thu May 28 04:11:22 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4S9BLVh245283 for ; Thu, 28 May 2009 04:11:22 -0500 X-ASG-Debug-ID: 1243501893-34c300f50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv1.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D6A631A34785 for ; Thu, 28 May 2009 02:11:33 -0700 (PDT) Received: from mailsrv1.zmi.at (mailsrv1.zmi.at [212.69.162.198]) by cuda.sgi.com with ESMTP id CIclS4VzUa1tIJPn for ; Thu, 28 May 2009 02:11:33 -0700 (PDT) Received: from mailsrv2.i.zmi.at (h081217106033.dyn.cm.kabsi.at [81.217.106.33]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mailsrv2.i.zmi.at", Issuer "power4u.zmi.at" (not verified)) by mailsrv1.zmi.at (Postfix) with ESMTP id 9102E53DC for ; Thu, 28 May 2009 11:11:32 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.0.0.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv2.i.zmi.at (Postfix) with ESMTPSA id 4D04940DC06 for ; Thu, 28 May 2009 11:11:32 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/9] Set default extN mount options Subject: Re: [PATCH 7/9] Set default extN mount options Date: Thu, 28 May 2009 11:11:31 +0200 User-Agent: KMail/1.10.3 (Linux/2.6.29.2-ZMI; KDE/4.1.3; x86_64; ; ) References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-8-git-send-email-sandeen@sandeen.net> In-Reply-To: <1243450413-12681-8-git-send-email-sandeen@sandeen.net> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart9966471.OB3AKUy6Pd"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200905281111.32011@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.162.198] X-Barracuda-Start-Time: 1243501893 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26929 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --nextPart9966471.OB3AKUy6Pd Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On Mittwoch 27 Mai 2009 Eric Sandeen wrote: > ext2/3/4 don't support acls & attrs w/o specific mount > options, so make those the default whenever we mount > these filesystems. The same for reiserfs, but I don't know if that is wanted/needed. mfg zmi =2D-=20 // Michael Monnerie, Ing.BSc ----- http://it-management.at // Tel: 0660 / 415 65 31 .network.your.ideas. // PGP Key: "curl -s http://zmi.at/zmi.asc | gpg --import" // Fingerprint: AC19 F9D5 36ED CD8A EF38 500E CE14 91F7 1C12 09B4 // Keyserver: wwwkeys.eu.pgp.net Key-ID: 1C1209B4 --nextPart9966471.OB3AKUy6Pd 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) iEYEABECAAYFAkoeVUQACgkQzhSR9xwSCbQifwCgzIMLdRqSVuOvPW0aPaSbnZtw OlgAn3VFhAw/7WmTS6SaHum2vpi3kfNb =LT19 -----END PGP SIGNATURE----- --nextPart9966471.OB3AKUy6Pd-- From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 04:56:45 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4S9uhMI246901 for ; Thu, 28 May 2009 04:56:45 -0500 X-ASG-Debug-ID: 1243504977-039203920000-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 26506125FC49 for ; Thu, 28 May 2009 03:02:57 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 1o3eELmTjB6RDttn for ; Thu, 28 May 2009 03:02:57 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9cM5-0001Ax-7H; Thu, 28 May 2009 09:56:57 +0000 Date: Thu, 28 May 2009 05:56:57 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/9] Use xfs.h rather than libxfs.h Subject: Re: [PATCH 1/9] Use xfs.h rather than libxfs.h Message-ID: <20090528095657.GA651@infradead.org> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-2-git-send-email-sandeen@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1243450413-12681-2-git-send-email-sandeen@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: 1243504978 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, May 27, 2009 at 01:53:25PM -0500, Eric Sandeen wrote: > Use xfs/xfs.h when possible rather than xfs/libxfs.h, > now that libxfs.h isn't part of a normal xfsprogs-devel > install. > +/* > + * MAXNAMELEN is the length (including the terminating null) of > + * the longest permissible file (component) name. > + */ > +#ifndef MAXNAMELEN > +#define MAXNAMELEN 256 > +#endif Just switch all users to the posix NAME_MAX instead. Note that NAME_MAX does not include the NULL termination, so it's one-off vs MAXNAMELEN. > diff --git a/src/godown.c b/src/godown.c > index 4105aee..fa04f24 100644 > --- a/src/godown.c > +++ b/src/godown.c > @@ -18,7 +18,7 @@ > > #include "global.h" > > -/* These should be in libxfs.h */ > +/* These should be in xfs.h */ > #ifndef XFS_IOC_GOINGDOWN > #define XFS_IOC_GOINGDOWN _IOR ('X', 125, __uint32_t) > #endif Might be worth to remove now as we had it in xfs_fs.h forever. From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 04:57:35 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4S9vZn8246932 for ; Thu, 28 May 2009 04:57:35 -0500 X-ASG-Debug-ID: 1243505029-43d100fb0000-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 A5746125FDA6 for ; Thu, 28 May 2009 03:03:49 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id DRFfLmVZmIe4R6Be for ; Thu, 28 May 2009 03:03:49 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9cMv-0001GS-4V; Thu, 28 May 2009 09:57:49 +0000 Date: Thu, 28 May 2009 05:57:49 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/9] Make libxfs.h optional Subject: Re: [PATCH 2/9] Make libxfs.h optional Message-ID: <20090528095749.GB651@infradead.org> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-3-git-send-email-sandeen@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1243450413-12681-3-git-send-email-sandeen@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: 1243505029 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, May 27, 2009 at 01:53:26PM -0500, Eric Sandeen wrote: > libxfs.h is really only needed for the loggen test; > make it config-time optional. Maybe we should just move loggen into xfsprogs? From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 04:57:48 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4S9vmVV246951 for ; Thu, 28 May 2009 04:57:48 -0500 X-ASG-Debug-ID: 1243504682-1abd01c80000-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 DD64E2B64C9 for ; Thu, 28 May 2009 02:58:02 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id NF5quFezPWITXvLP for ; Thu, 28 May 2009 02:58:02 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9cN8-0001IF-EW; Thu, 28 May 2009 09:58:02 +0000 Date: Thu, 28 May 2009 05:58:02 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/9] Support "generic" filesystem type Subject: Re: [PATCH 3/9] Support "generic" filesystem type Message-ID: <20090528095802.GC651@infradead.org> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-4-git-send-email-sandeen@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1243450413-12681-4-git-send-email-sandeen@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: 1243504682 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, May 27, 2009 at 01:53:27PM -0500, Eric Sandeen wrote: > Create a new "generic" _supported_fs type for tests > which are not really filesystem-specific. "generic" > tests do expect that acl & attr are supported though. Looks good, Reviewed-by: Christoph Hellwig From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 04:58:27 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4S9wRKj246978 for ; Thu, 28 May 2009 04:58:27 -0500 X-ASG-Debug-ID: 1243504721-1abf01e70000-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 193042B64DA for ; Thu, 28 May 2009 02:58:41 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id vNcy8KftUlJTw3Qi for ; Thu, 28 May 2009 02:58:41 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9cNl-0001NY-P7; Thu, 28 May 2009 09:58:41 +0000 Date: Thu, 28 May 2009 05:58:41 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/9] 069: make scratch mkfs quiet Subject: Re: [PATCH 4/9] 069: make scratch mkfs quiet Message-ID: <20090528095841.GD651@infradead.org> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-5-git-send-email-sandeen@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1243450413-12681-5-git-send-email-sandeen@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: 1243504722 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, May 27, 2009 at 01:53:28PM -0500, Eric Sandeen wrote: > The _scratch_mkfs call in test 069 was not redirecting > stderr to /dev/null; other mkfs's may be more noisy > on stderr. Looks good, Reviewed-by: Christoph Hellwig From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 04:59:13 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4S9xCaY247018 for ; Thu, 28 May 2009 04:59:12 -0500 X-ASG-Debug-ID: 1243504767-1abd01e00000-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 5C0F12B64E8 for ; Thu, 28 May 2009 02:59:27 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id gBOoPMVjoYeXnDFk for ; Thu, 28 May 2009 02:59:27 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9cOV-0001Tw-0j; Thu, 28 May 2009 09:59:27 +0000 Date: Thu, 28 May 2009 05:59:27 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 5/9] Set up testdir for generic filesystems Subject: Re: [PATCH 5/9] Set up testdir for generic filesystems Message-ID: <20090528095926.GE651@infradead.org> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-6-git-send-email-sandeen@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1243450413-12681-6-git-send-email-sandeen@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: 1243504767 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 04:59:43 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4S9xgwM247056 for ; Thu, 28 May 2009 04:59:43 -0500 X-ASG-Debug-ID: 1243504797-6c1600310000-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 781161A313CD for ; Thu, 28 May 2009 02:59:57 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id aQivlBbsUA6usBL9 for ; Thu, 28 May 2009 02:59:57 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9cOz-0001Y8-0L; Thu, 28 May 2009 09:59:57 +0000 Date: Thu, 28 May 2009 05:59:56 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 6/9] Detect FS type to test based on TEST_DEV Subject: Re: [PATCH 6/9] Detect FS type to test based on TEST_DEV Message-ID: <20090528095956.GF651@infradead.org> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-7-git-send-email-sandeen@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1243450413-12681-7-git-send-email-sandeen@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: 1243504797 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, May 27, 2009 at 01:53:30PM -0500, Eric Sandeen wrote: > This helps support generic / non-xfs fileystems. > > Rather than defaulting to xfs or expecting a fs > type passed in, just look at what is on TEST_DEV > and use that for FSTYP by default. > > We may wish to add a generic way to override this later. Looks good, Reviewed-by: Christoph Hellwig From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 05:01:08 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_62 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SA18An247142 for ; Thu, 28 May 2009 05:01:08 -0500 X-ASG-Debug-ID: 1243504882-284900bd0000-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 F3FED2B5651 for ; Thu, 28 May 2009 03:01:22 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Iucp87zNrAlSQFmk for ; Thu, 28 May 2009 03:01:22 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9cQM-0002sg-ME; Thu, 28 May 2009 10:01:22 +0000 Date: Thu, 28 May 2009 06:01:22 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/9] Set default extN mount options Subject: Re: [PATCH 7/9] Set default extN mount options Message-ID: <20090528100122.GG651@infradead.org> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-8-git-send-email-sandeen@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1243450413-12681-8-git-send-email-sandeen@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: 1243504882 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, May 27, 2009 at 01:53:31PM -0500, Eric Sandeen wrote: > ext2/3/4 don't support acls & attrs w/o specific mount > options, so make those the default whenever we mount > these filesystems. > > Signed-off-by: Eric Sandeen > --- > common.rc | 6 +++++- > 1 files changed, 5 insertions(+), 1 deletions(-) > > diff --git a/common.rc b/common.rc > index 78514f4..54c36f3 100644 > --- a/common.rc > +++ b/common.rc > @@ -49,6 +49,10 @@ _mount_opts() > nfs) > export MOUNT_OPTIONS=$NFS_MOUNT_OPTIONS > ;; > + ext2|ext3|ext4) > + # acls & xattrs aren't turned on by default on ext$FOO > + export MOUNT_OPTIONS="-o acl,user_xattr $EXT_MOUNT_OPTIONS" > + ;; This part looks good. > @@ -585,7 +589,7 @@ _require_scratch() > _notrun "this test requires a valid \$SCRATCH_DEV" > fi > ;; > - nfs*|ext2|ext3|reiserfs) > + nfs*|ext2|ext3|ext4|reiserfs) > echo $SCRATCH_DEV | grep -q ":" > /dev/null 2>&1 > if [ ! -z "$SCRATCH_DEV" -a ! -b "$SCRATCH_DEV" -a "$?" != "0" ] This whole function looks fishy to me, but just treating ext4 the same as ext2/ext3 makes sense at least. Reviewed-by: Christoph Hellwig From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 05:02:38 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SA2WTe247218 for ; Thu, 28 May 2009 05:02:38 -0500 X-ASG-Debug-ID: 1243504967-3e5701e40000-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 822C81A313EF for ; Thu, 28 May 2009 03:02:47 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id gFFTAEjTtLv7fwTw for ; Thu, 28 May 2009 03:02:47 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9cRi-0006AP-T2; Thu, 28 May 2009 10:02:46 +0000 Date: Thu, 28 May 2009 06:02:46 -0400 From: Christoph Hellwig To: Michael Monnerie Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/9] Set default extN mount options Subject: Re: [PATCH 7/9] Set default extN mount options Message-ID: <20090528100246.GH651@infradead.org> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-8-git-send-email-sandeen@sandeen.net> <200905281111.32011@zmi.at> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200905281111.32011@zmi.at> 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: 1243504967 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, May 28, 2009 at 11:11:31AM +0200, Michael Monnerie wrote: > On Mittwoch 27 Mai 2009 Eric Sandeen wrote: > > ext2/3/4 don't support acls & attrs w/o specific mount > > options, so make those the default whenever we mount > > these filesystems. > > The same for reiserfs, but I don't know if that is wanted/needed. >From a look at the point option parser it would need the same options. From michael.monnerie@is.it-management.at Thu May 28 05:35:12 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SAZBL1249010 for ; Thu, 28 May 2009 05:35:12 -0500 X-ASG-Debug-ID: 1243506923-3e5102990000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv1.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 845061A34BB5 for ; Thu, 28 May 2009 03:35:23 -0700 (PDT) Received: from mailsrv1.zmi.at (mailsrv1.zmi.at [212.69.162.198]) by cuda.sgi.com with ESMTP id g8HLruO8o9OLRJIU for ; Thu, 28 May 2009 03:35:23 -0700 (PDT) Received: from mailsrv2.i.zmi.at (h081217106033.dyn.cm.kabsi.at [81.217.106.33]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mailsrv2.i.zmi.at", Issuer "power4u.zmi.at" (not verified)) by mailsrv1.zmi.at (Postfix) with ESMTP id DCF0B53F1; Thu, 28 May 2009 12:35:22 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.0.0.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv2.i.zmi.at (Postfix) with ESMTPSA id AFC1840DC06; Thu, 28 May 2009 12:35:22 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: Christoph Hellwig X-ASG-Orig-Subj: Re: [PATCH 7/9] Set default extN mount options Subject: Re: [PATCH 7/9] Set default extN mount options Date: Thu, 28 May 2009 12:35:12 +0200 User-Agent: KMail/1.10.3 (Linux/2.6.29.2-ZMI; KDE/4.1.3; x86_64; ; ) Cc: xfs@oss.sgi.com References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <200905281111.32011@zmi.at> <20090528100246.GH651@infradead.org> In-Reply-To: <20090528100246.GH651@infradead.org> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart1284756.k9QK0TVIHt"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200905281235.21485@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.162.198] X-Barracuda-Start-Time: 1243506924 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26935 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --nextPart1284756.k9QK0TVIHt Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On Donnerstag 28 Mai 2009 Christoph Hellwig wrote: > > The same for reiserfs, but I don't know if that is wanted/needed. > > From a look at the point option parser it would need the same > options. Sorry, didn't express it well. Try to clear up: I know the options are=20 needed for ACLs, as I use reiserfs a lot, but I don't know if it's in=20 the list of FSs that are to be directly supported. mfg zmi =2D-=20 // Michael Monnerie, Ing.BSc ----- http://it-management.at // Tel: 0660 / 415 65 31 .network.your.ideas. // PGP Key: "curl -s http://zmi.at/zmi.asc | gpg --import" // Fingerprint: AC19 F9D5 36ED CD8A EF38 500E CE14 91F7 1C12 09B4 // Keyserver: wwwkeys.eu.pgp.net Key-ID: 1C1209B4 --nextPart1284756.k9QK0TVIHt 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) iEYEABECAAYFAkoeaOkACgkQzhSR9xwSCbS1JACfby41CpvGw92qEm9b3iUb+nHL +LoAmwQTI6AyNoCz/Yc/8bAcsRDlmKxJ =MxBR -----END PGP SIGNATURE----- --nextPart1284756.k9QK0TVIHt-- From priyashri186@gmail.com Thu May 28 05:52:42 2009 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SAqfm5249765 for ; Thu, 28 May 2009 05:52:41 -0500 X-ASG-Debug-ID: 1243507974-316a023e0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-qy0-f113.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9E8AB2B650A for ; Thu, 28 May 2009 03:52:54 -0700 (PDT) Received: from mail-qy0-f113.google.com (mail-qy0-f113.google.com [209.85.221.113]) by cuda.sgi.com with ESMTP id 6xInAWXqczclQgGa for ; Thu, 28 May 2009 03:52:54 -0700 (PDT) Received: by qyk11 with SMTP id 11so677535qyk.20 for ; Thu, 28 May 2009 03:52:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:content-type; bh=DZ2gyTeWfzsudKwpunnDFbz0F5TVdwAE07A8H3FJVrQ=; b=UXzoO50d7+T7Fa0LaObp6yaUzOoD5Xrb7SuPlPLdEoq85YdEbzGblIjRulNu2gN+HF r/EIZ4KwdyIdxgPtUncqyjrP5Dgt6xpiCG676v7AF/xxE45ebORHCkRq+DaH/BmHNOdO wxSRimA3B180Q0epvpwHxo2B7oNiDIbbFZWtI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:content-type; b=lIEtf2JdruM65uULMExfgvQaDwMh/YJRluGGxC0l7egagHUXFq6bXDEYkTJhkE3CWJ NFkPvQPmHlahfdfdYM+P3pHI8ML9slGu8IT25qH8G5W9NND5bayxuCixxRcK/Ryld2rz v1/cRxMphKFoo7gY6jHgL17N4xeb/4F3/1NFs= MIME-Version: 1.0 Received: by 10.220.93.65 with SMTP id u1mt1740743vcm.59.1243507969411; Thu, 28 May 2009 03:52:49 -0700 (PDT) Date: Thu, 28 May 2009 16:22:49 +0530 Message-ID: <277176450905280352g1d361b11p2e9e629447eabca2@mail.gmail.com> X-ASG-Orig-Subj: Sindhi Bandhan Subject: Sindhi Bandhan From: priya shrivastava Content-Type: multipart/alternative; boundary=0016364ed38616eae7046af6c30d X-Barracuda-Connect: mail-qy0-f113.google.com[209.85.221.113] X-Barracuda-Start-Time: 1243507975 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0254 1.0000 -1.8563 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.27 X-Barracuda-Spam-Status: No, SCORE=-0.27 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_MESSAGE, MISSING_HEADERS, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26937 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.58 MISSING_HEADERS Missing To: header 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --0016364ed38616eae7046af6c30d Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sindhi Bandhan *Here Is A Website Dedicated to Sindhi Community from * *A* *ll over the World This Website Provides Information About Various Sindhi * *People* ********** *Sindhi: ( Bhaibhand, Bhanusali, Bhatia, * *Sahiti, Sakkhar, Shikarpuri, etc.)* ********** * If You Or Your Relative Is One Of Those, Then It Is Worth Looking At The Website for A Match The Website Is http://sindhibandhan.com * ********************** You have receive this mail because either you bought a product from one of our affiliates or enquired about the services or have been referred by a friend. If you don't wish to receive any mails regarding this, you can remove your e-mail by clicking the link below *http://sindhibandhan.com/block.html* --0016364ed38616eae7046af6c30d Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Sindhi Bandhan

Here Is A Website Dedicated to= Sindhi Commu= nity from=A0

All ove= r the World

This Website Provides Information About Various=A0
Sindhi
People

********

Sindhi: ( Bhaibhand, Bhanus= ali, Bhatia, Sahiti, = Sakkhar,=A0 Shikarpuri, etc.)

********


If You Or Your Relative Is One O= f Those, Then It Is Worth Looking At The Website for A Match

The Web= site Is http://sindhibandhan.com

**********************
You have rec= eive this mail because either you bought a product from one of our affiliat= es or=A0 enquired about the services or have been referred by a friend. If = you don't wish to receive any mails regarding this, you can remove your= e-mail by clicking the link below

http://sindhibandhan.com/block.h= tml

--0016364ed38616eae7046af6c30d-- From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 07:19:04 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SCJ2VY253000 for ; Thu, 28 May 2009 07:19:04 -0500 X-ASG-Debug-ID: 1243513156-7263003f0000-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 7B69F1D377A4 for ; Thu, 28 May 2009 05:19:16 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 0fbE5ic5kp39QTBB for ; Thu, 28 May 2009 05:19:16 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9eZo-0000HQ-33 for xfs@oss.sgi.com; Thu, 28 May 2009 12:19:16 +0000 Date: Thu, 28 May 2009 08:19:16 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 8/7] xfs: remove SYNC_IOWAIT Subject: [PATCH 8/7] xfs: remove SYNC_IOWAIT Message-ID: <20090528121915.GA30037@infradead.org> References: <20090514171233.942489000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090514171233.942489000@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: 1243513157 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We want to wait for all I/O to finish when we do data integrity syncs. So there is no reason to keep SYNC_WAIT separate from SYNC_IOWAIT. This causes a little change in behaviour for the ENOSPC flushing code which no does a second submission and wait of buffered I/O, but that should finish ASAP as we already did an asynchronous writeout earlier. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-05-27 12:59:57.115813662 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-05-27 13:01:14.634816358 +0200 @@ -226,7 +226,7 @@ xfs_sync_inode_data( xfs_iunlock(ip, XFS_IOLOCK_SHARED); out_wait: - if (flags & SYNC_IOWAIT) + if (flags & SYNC_WAIT) xfs_ioend_wait(ip); IRELE(ip); return error; @@ -277,7 +277,7 @@ xfs_sync_data( { int error; - ASSERT((flags & ~(SYNC_TRYLOCK|SYNC_WAIT|SYNC_IOWAIT)) == 0); + ASSERT((flags & ~(SYNC_TRYLOCK|SYNC_WAIT)) == 0); error = xfs_inode_ag_iterator(mp, xfs_sync_inode_data, flags, -1); if (error) @@ -419,7 +419,7 @@ xfs_quiesce_data( xfs_filestream_flush(mp); /* push and block */ - xfs_sync_data(mp, SYNC_WAIT|SYNC_IOWAIT); + xfs_sync_data(mp, SYNC_WAIT); xfs_qm_sync(mp, SYNC_WAIT); /* write superblock and hoover up shutdown errors */ @@ -532,7 +532,7 @@ xfs_flush_inodes_work( { struct inode *inode = arg; xfs_sync_data(mp, SYNC_TRYLOCK); - xfs_sync_data(mp, SYNC_TRYLOCK | SYNC_IOWAIT); + xfs_sync_data(mp, SYNC_TRYLOCK | SYNC_WAIT); iput(inode); } Index: xfs/fs/xfs/linux-2.6/xfs_sync.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.h 2009-05-27 13:00:29.045814647 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.h 2009-05-27 13:01:39.162941539 +0200 @@ -31,7 +31,6 @@ typedef struct xfs_sync_work { #define SYNC_WAIT 0x0004 /* wait for i/o to complete */ #define SYNC_BDFLUSH 0x0008 /* BDFLUSH is calling -- don't block */ -#define SYNC_IOWAIT 0x0010 /* wait for all I/O to complete */ #define SYNC_TRYLOCK 0x0020 /* only try to lock inodes */ int xfs_syncd_init(struct xfs_mount *mp); From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 07:19:46 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SCJjaV253038 for ; Thu, 28 May 2009 07:19:45 -0500 X-ASG-Debug-ID: 1243513188-71fa02a50000-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 4ED102B6899 for ; Thu, 28 May 2009 05:19:48 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id iD4paDxlhIzIhWr8 for ; Thu, 28 May 2009 05:19:48 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9eaJ-0000Jm-Kq for xfs@oss.sgi.com; Thu, 28 May 2009 12:19:47 +0000 Date: Thu, 28 May 2009 08:19:47 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 9/7] xfs: remove SYNC_BDFLUSH Subject: [PATCH 9/7] xfs: remove SYNC_BDFLUSH Message-ID: <20090528121947.GB30037@infradead.org> References: <20090514171233.942489000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090514171233.942489000@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: 1243513188 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean SYNC_BDFLUSH is a leftover from IRIX and rather misnamed for todays code. Make xfs_sync_fsdata and xfs_dq_sync use the SYNC_TRYLOCK flag for not blocking on logs just as the inode sync code already does. For xfs_sync_fsdata it's a trivial 1:1 replacement, but for xfs_qm_sync I use the opportunity to decouple the non-blocking lock case from the different flushing modes, similar to the inode sync code. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2009-05-27 13:02:57.426938830 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2009-05-27 13:07:53.227939055 +0200 @@ -350,7 +350,7 @@ xfs_sync_fsdata( * If this is xfssyncd() then only sync the superblock if we can * lock it without sleeping and it is not pinned. */ - if (flags & SYNC_BDFLUSH) { + if (flags & SYNC_TRYLOCK) { ASSERT(!(flags & SYNC_WAIT)); bp = xfs_getsb(mp, XFS_BUF_TRYLOCK); @@ -415,7 +415,7 @@ xfs_quiesce_data( /* push non-blocking */ xfs_sync_data(mp, 0); - xfs_qm_sync(mp, SYNC_BDFLUSH); + xfs_qm_sync(mp, SYNC_TRYLOCK); xfs_filestream_flush(mp); /* push and block */ @@ -565,8 +565,8 @@ xfs_sync_worker( xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC); /* dgc: errors ignored here */ - error = xfs_qm_sync(mp, SYNC_BDFLUSH); - error = xfs_sync_fsdata(mp, SYNC_BDFLUSH); + error = xfs_qm_sync(mp, SYNC_TRYLOCK); + error = xfs_sync_fsdata(mp, SYNC_TRYLOCK); if (xfs_log_need_covered(mp)) error = xfs_commit_dummy_trans(mp, XFS_LOG_FORCE); } Index: xfs/fs/xfs/quota/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_qm.c 2009-05-27 13:04:00.607842293 +0200 +++ xfs/fs/xfs/quota/xfs_qm.c 2009-05-27 13:10:21.688940102 +0200 @@ -905,11 +905,6 @@ xfs_qm_dqdetach( } } -/* - * This is called to sync quotas. We can be told to use non-blocking - * semantics by either the SYNC_BDFLUSH flag or the absence of the - * SYNC_WAIT flag. - */ int xfs_qm_sync( xfs_mount_t *mp, @@ -918,17 +913,13 @@ xfs_qm_sync( int recl, restarts; xfs_dquot_t *dqp; uint flush_flags; - boolean_t nowait; int error; if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) return 0; + flush_flags = (flags & SYNC_WAIT) ? XFS_QMOPT_SYNC : XFS_QMOPT_DELWRI; restarts = 0; - /* - * We won't block unless we are asked to. - */ - nowait = (boolean_t)(flags & SYNC_BDFLUSH || (flags & SYNC_WAIT) == 0); again: xfs_qm_mplist_lock(mp); @@ -948,18 +939,10 @@ xfs_qm_sync( * don't 'seem' to be dirty. ie. don't acquire dqlock. * This is very similar to what xfs_sync does with inodes. */ - if (flags & SYNC_BDFLUSH) { - if (! XFS_DQ_IS_DIRTY(dqp)) + if (flags & SYNC_TRYLOCK) { + if (!XFS_DQ_IS_DIRTY(dqp)) continue; - } - - if (nowait) { - /* - * Try to acquire the dquot lock. We are NOT out of - * lock order, but we just don't want to wait for this - * lock, unless somebody wanted us to. - */ - if (! xfs_qm_dqlock_nowait(dqp)) + if (!xfs_qm_dqlock_nowait(dqp)) continue; } else { xfs_dqlock(dqp); @@ -976,7 +959,7 @@ xfs_qm_sync( /* XXX a sentinel would be better */ recl = XFS_QI_MPLRECLAIMS(mp); if (!xfs_dqflock_nowait(dqp)) { - if (nowait) { + if (flags & SYNC_TRYLOCK) { xfs_dqunlock(dqp); continue; } @@ -994,7 +977,6 @@ xfs_qm_sync( * Let go of the mplist lock. We don't want to hold it * across a disk write */ - flush_flags = (nowait) ? XFS_QMOPT_DELWRI : XFS_QMOPT_SYNC; xfs_qm_mplist_unlock(mp); xfs_dqtrace_entry(dqp, "XQM_SYNC: DQFLUSH"); error = xfs_qm_dqflush(dqp, flush_flags); Index: xfs/fs/xfs/linux-2.6/xfs_sync.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.h 2009-05-27 13:07:58.997814418 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_sync.h 2009-05-27 13:08:19.922972203 +0200 @@ -29,9 +29,8 @@ typedef struct xfs_sync_work { struct completion *w_completion; } xfs_sync_work_t; -#define SYNC_WAIT 0x0004 /* wait for i/o to complete */ -#define SYNC_BDFLUSH 0x0008 /* BDFLUSH is calling -- don't block */ -#define SYNC_TRYLOCK 0x0020 /* only try to lock inodes */ +#define SYNC_WAIT 0x0001 /* wait for i/o to complete */ +#define SYNC_TRYLOCK 0x0002 /* only try to lock inodes */ int xfs_syncd_init(struct xfs_mount *mp); void xfs_syncd_stop(struct xfs_mount *mp); From mw@dermichi.com Thu May 28 07:21:35 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SCLYIJ253095 for ; Thu, 28 May 2009 07:21:35 -0500 X-ASG-Debug-ID: 1243513307-7248003e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from firestarter.dermichi.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B54001D377BC for ; Thu, 28 May 2009 05:21:48 -0700 (PDT) Received: from firestarter.dermichi.com (firestarter.dermichi.com [83.64.48.195]) by cuda.sgi.com with ESMTP id to7BaKMchsqtrNJF for ; Thu, 28 May 2009 05:21:48 -0700 (PDT) Received: from cerberus.net4you.net ([194.177.153.130] helo=[192.168.200.110]) by firestarter.dermichi.com with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.69) (envelope-from ) id 1M9ecF-0004Wv-92 for xfs@oss.sgi.com; Thu, 28 May 2009 14:21:47 +0200 Message-ID: <4A1E81D8.7010706@dermichi.com> Date: Thu, 28 May 2009 14:21:44 +0200 From: Michael Weissenbacher User-Agent: Thunderbird 2.0.0.21 (X11/20090409) MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: regarding the inode64 mount option Subject: regarding the inode64 mount option Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: firestarter.dermichi.com[83.64.48.195] X-Barracuda-Start-Time: 1243513308 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0074 1.0000 -1.9726 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.97 X-Barracuda-Spam-Status: No, SCORE=-1.97 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26943 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi XFS-List! I understand that the inode64 mount option allows inodes to be created beyond 1TB. There are also certain performance problems that can be cured by using this option when handling LOTS of inodes. During my tests i noticed that enabling it is like a one-way street. Inodes created with inode64 enabled aren't accessible when the option is left out. Now i got a few questions: - Does the inode64 option work only on 64bit architectures or is it also possible to use it with i686 - Is there a way to convert the inodes back - Why doesn't the filesystem remember that inode64 was used in the past and enable it automatically - Do i have to pass inode64 via grub / lilo if i want to use it on my root filesystem I haven't found any definitive clear documentation abount the pro's and con's, so maybe you can give me some hints :-) tia, Michael From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 07:51:15 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SCpE8Y254488 for ; Thu, 28 May 2009 07:51:15 -0500 X-ASG-Debug-ID: 1243515089-7a44036b0000-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 96BA62B6EEF for ; Thu, 28 May 2009 05:51:29 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 4q9sTrp6bU3C6FF3 for ; Thu, 28 May 2009 05:51:29 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9f4y-0005oH-QR; Thu, 28 May 2009 12:51:28 +0000 Date: Thu, 28 May 2009 08:51:28 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 8/9] Enable generic filesystems to be fsck'd Subject: Re: [PATCH 8/9] Enable generic filesystems to be fsck'd Message-ID: <20090528125128.GA13425@infradead.org> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-9-git-send-email-sandeen@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1243450413-12681-9-git-send-email-sandeen@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: 1243515089 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, May 27, 2009 at 01:53:32PM -0500, Eric Sandeen wrote: > This includes a fair bit of rearranging to avoid code duplication, > but the goal is to allow 'fsck -n -t $FSTYP $device' to be run on > any generic filesystem. > > Any FS for which this doesn't work will need it's own fsck routine. Looks generally good, some comments: - I would get rid of _check_generic_test_fs and just opencode the _check_generic_filesystem $TEST_DEV in the two callers. - why the odd calling convention of _is_mounted which allows to optionally pass the fstype? Currently we only have one caller that doesn't pass it, and if we grow one that needs it I would rather always pass it explicitly.. Btw, I seems like _check_testdir is never actually called, and I can't really see a reason why it would be different from _check_test_fs. From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 07:51:35 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SCpYE9254511 for ; Thu, 28 May 2009 07:51:35 -0500 X-ASG-Debug-ID: 1243515109-2f7901680000-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 9F87E2B6F08 for ; Thu, 28 May 2009 05:51:49 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id OjmP63fD0i0TPhDc for ; Thu, 28 May 2009 05:51:49 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9f5J-0005px-5R; Thu, 28 May 2009 12:51:49 +0000 Date: Thu, 28 May 2009 08:51:49 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 9/9] Report which tests did get run Subject: Re: [PATCH 9/9] Report which tests did get run Message-ID: <20090528125149.GB13425@infradead.org> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-10-git-send-email-sandeen@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1243450413-12681-10-git-send-email-sandeen@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: 1243515109 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, May 27, 2009 at 01:53:33PM -0500, Eric Sandeen wrote: > fs type mismatches are now likely enough that it may be > nice to report which tests -were- run at the end... Good idea. Reviewed-by: Christoph Hellwig From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 09:56:03 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SEu2eU259652 for ; Thu, 28 May 2009 09:56:03 -0500 X-ASG-Debug-ID: 1243522575-62bd038b0000-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 40D8B1A3535F for ; Thu, 28 May 2009 07:56:15 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 1qQgncru7xcK5Bg2 for ; Thu, 28 May 2009 07:56:15 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9h1j-0005Ms-2K; Thu, 28 May 2009 14:56:15 +0000 Date: Thu, 28 May 2009 10:56:15 -0400 From: Christoph Hellwig To: Michael Weissenbacher Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: regarding the inode64 mount option Subject: Re: regarding the inode64 mount option Message-ID: <20090528145612.GA14684@infradead.org> References: <4A1E81D8.7010706@dermichi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A1E81D8.7010706@dermichi.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: 1243522577 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, May 28, 2009 at 02:21:44PM +0200, Michael Weissenbacher wrote: > Hi XFS-List! > I understand that the inode64 mount option allows inodes to be created beyond 1TB. There are also certain performance problems that can be cured by using this option when handling LOTS of inodes. During my tests i noticed that enabling it is like a one-way street. Inodes created with inode64 enabled aren't accessible when the option is left out. Actually they should still be accessible, we just won't create new inodes not addressable by 32bit inode numbers. > Now i got a few questions: > - Does the inode64 option work only on 64bit architectures or is it also possible to use it with i686 It is available for 32bit kernels starting with kernel 2.6.29. > - Is there a way to convert the inodes back There's an xfs_reno tool ported from IRIX to renumber the inodes. I'll see if I can finally get it packaged. > - Why doesn't the filesystem remember that inode64 was used in the past and enable it automatically Good question. We could introduce a flag in the superblock for this. > - Do i have to pass inode64 via grub / lilo if i want to use it on my root filesystem Yes. > I haven't found any definitive clear documentation abount the pro's and con's, so maybe you can give me some hints :-) The only reason speaking against inode64 are old buggy programs that can't cope with a 64bit ino_t, Eric had a quite scary list of those in Fedora somewhere.. From sandeen@sandeen.net Thu May 28 09:57:43 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SEvgmC259707 for ; Thu, 28 May 2009 09:57:43 -0500 X-ASG-Debug-ID: 1243522676-724b03300000-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 1477C1A35950 for ; Thu, 28 May 2009 07:57:56 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id vufnScg7EICY5H09 for ; Thu, 28 May 2009 07:57:56 -0700 (PDT) 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 n4SEvmAY021917; Thu, 28 May 2009 10:57:48 -0400 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 n4SEvlmM021404; Thu, 28 May 2009 10:57:48 -0400 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 n4SEvjgr010094; Thu, 28 May 2009 10:57:46 -0400 Message-ID: <4A1EA669.2070908@sandeen.net> Date: Thu, 28 May 2009 09:57:45 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/9] Set default extN mount options Subject: Re: [PATCH 7/9] Set default extN mount options References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-8-git-send-email-sandeen@sandeen.net> <20090528100122.GG651@infradead.org> In-Reply-To: <20090528100122.GG651@infradead.org> 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: 1243522677 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26953 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: >> @@ -585,7 +589,7 @@ _require_scratch() >> _notrun "this test requires a valid \$SCRATCH_DEV" >> fi >> ;; >> - nfs*|ext2|ext3|reiserfs) >> + nfs*|ext2|ext3|ext4|reiserfs) >> echo $SCRATCH_DEV | grep -q ":" > /dev/null 2>&1 >> if [ ! -z "$SCRATCH_DEV" -a ! -b "$SCRATCH_DEV" -a "$?" != "0" ] > > This whole function looks fishy to me, but just treating ext4 the same > as ext2/ext3 makes sense at least. I agree, I Need to sort out what's going on here but this was a "make it work" patch :) Thanks, -Eric > > Reviewed-by: Christoph Hellwig > From sandeen@sandeen.net Thu May 28 09:58:25 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SEwPc1259729 for ; Thu, 28 May 2009 09:58:25 -0500 X-ASG-Debug-ID: 1243523079-7ec903c10000-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 D4E3D1260DF8 for ; Thu, 28 May 2009 08:04:40 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id KyEgvrLDByilLfIp for ; Thu, 28 May 2009 08:04:40 -0700 (PDT) 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 n4SEultr021632; Thu, 28 May 2009 10:56:47 -0400 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 n4SEukd4020934; Thu, 28 May 2009 10:56:46 -0400 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 n4SEuixe009982; Thu, 28 May 2009 10:56:45 -0400 Message-ID: <4A1EA62C.8060008@sandeen.net> Date: Thu, 28 May 2009 09:56:44 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Michael Monnerie CC: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/9] Set default extN mount options Subject: Re: [PATCH 7/9] Set default extN mount options References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <200905281111.32011@zmi.at> <20090528100246.GH651@infradead.org> <200905281235.21485@zmi.at> In-Reply-To: <200905281235.21485@zmi.at> 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: 1243523080 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26952 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Michael Monnerie wrote: > On Donnerstag 28 Mai 2009 Christoph Hellwig wrote: >>> The same for reiserfs, but I don't know if that is wanted/needed. >> From a look at the point option parser it would need the same >> options. > > Sorry, didn't express it well. Try to clear up: I know the options are > needed for ACLs, as I use reiserfs a lot, but I don't know if it's in > the list of FSs that are to be directly supported. > > mfg zmi I'd be happy to include support for reiserfs as well. I'd be even happier if you tested this yourself and sent patches to make it work :) -Eric From sandeen@sandeen.net Thu May 28 09:59:46 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SExkwU259790 for ; Thu, 28 May 2009 09:59:46 -0500 X-ASG-Debug-ID: 1243522799-17f400c30000-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 7BD702B6208 for ; Thu, 28 May 2009 07:59:59 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id 9yAIifuP1aWvtJc4 for ; Thu, 28 May 2009 07:59:59 -0700 (PDT) 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 n4SExo0U022533; Thu, 28 May 2009 10:59:50 -0400 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 n4SExodL022131; Thu, 28 May 2009 10:59:50 -0400 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 n4SExnQ0010415; Thu, 28 May 2009 10:59:49 -0400 Message-ID: <4A1EA6E5.50805@sandeen.net> Date: Thu, 28 May 2009 09:59:49 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/9] Make libxfs.h optional Subject: Re: [PATCH 2/9] Make libxfs.h optional References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-3-git-send-email-sandeen@sandeen.net> <20090528095749.GB651@infradead.org> In-Reply-To: <20090528095749.GB651@infradead.org> 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: 1243522800 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26953 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Wed, May 27, 2009 at 01:53:26PM -0500, Eric Sandeen wrote: >> libxfs.h is really only needed for the loggen test; >> make it config-time optional. > > Maybe we should just move loggen into xfsprogs? Perhaps, though it has no use outside of qa ... even if we do that it'll take a while to trickle into people's xfsprogs, so any problem with putting this patch in for now, even if we move loggen? Thanks, -Eric From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 10:17:52 2009 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_31, J_CHICKENPOX_42,J_CHICKENPOX_44,J_CHICKENPOX_45,J_CHICKENPOX_46, J_CHICKENPOX_47,J_CHICKENPOX_52,J_CHICKENPOX_63,J_CHICKENPOX_64, J_CHICKENPOX_66,J_CHICKENPOX_73,J_CHICKENPOX_74,J_CHICKENPOX_83, J_CHICKENPOX_93 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SFHpea260415 for ; Thu, 28 May 2009 10:17:51 -0500 X-ASG-Debug-ID: 1243524246-714400860000-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 EEDCCFAED92 for ; Thu, 28 May 2009 08:24:06 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Eyjow5DMslHF2Gl8 for ; Thu, 28 May 2009 08:24:06 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9hMq-0000oO-Lj for xfs@oss.sgi.com; Thu, 28 May 2009 15:18:04 +0000 Date: Thu, 28 May 2009 11:18:04 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH, RFC] xfsprogs: add xfs_reno(8) Subject: [PATCH, RFC] xfsprogs: add xfs_reno(8) Message-ID: <20090528151804.GA31976@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: 1243524246 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The Linux port of xfs_reno has been lingering around for a while, and I think we'd be better off just merging it into xfsprogs. The only issue is that it requires libtattr and thuse we would add a libattr dependency to xfsprogs. But given that libattr is part of even the most minimal Linux installations these days and used by thinks as basic as cp or ls from coreutils I don't think that's an issue. Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/Makefile =================================================================== --- xfsprogs-dev.orig/Makefile 2009-05-10 16:42:02.000000000 +0000 +++ xfsprogs-dev/Makefile 2009-05-28 13:56:43.000000000 +0000 @@ -20,7 +20,7 @@ LIB_SUBDIRS = libxfs libxlog libxcmd libhandle libdisk TOOL_SUBDIRS = copy db estimate fsck fsr growfs io logprint mkfs quota \ - mdrestore repair rtcp m4 man doc po debian build + mdrestore repair rtcp reno m4 man doc po debian build SUBDIRS = include $(LIB_SUBDIRS) $(TOOL_SUBDIRS) Index: xfsprogs-dev/man/man8/xfs_reno.8 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfsprogs-dev/man/man8/xfs_reno.8 2009-05-28 13:56:08.000000000 +0000 @@ -0,0 +1,117 @@ +.TH xfs_reno 8 +.SH NAME +xfs_reno \- renumber XFS inodes +.SH SYNOPSIS +.B xfs_reno +[ +.B \-fnpqv +] [ +.B \-P +.I interval +] +.I path +.br +.B xfs_reno \-r +.I recover_file +.SH DESCRIPTION +.B xfs_reno +is applicable only to XFS filesystems. +.PP +.B xfs_reno +renumbers inodes. XFS supports 64-bit inode numbers, although by +default it will avoid creating inodes with numbers greater than +what can be contained within a 32-bit number. If a filesystem does +contain inode numbers greater than 32-bits, then this can conflict with +applications that do not support them. +To recover from this situation previously, affected files would need +to be copied (and so get a new inode number) and the old version +removed. This can be time consuming and impractical for very large +files and filesystems. +.B xfs_reno +can be used to renumber such inodes quickly. +.B xfs_reno +will copy the inodes of affected files and move the data from the old +inode to the new without having to copy the data. +.B xfs_reno +relies on XFS in the kernel to allocate a new inode number, so if the +filesystem has been mounted with the +.I inode64 +mount option, the new inodes will quite possibly have inode numbers +greater than 32-bits. +.PP +.B xfs_reno +should only be used on a filesystem where it is necessary to +renumber inodes. Use of +.B xfs_reno +on a regular basis is +.IR "not recommended" . +Apart from application compatibility, there is no particular advantage +to be had from renumbering inodes. +.PP +.B xfs_reno +works by traversing a directory tree, scanning all the directories +and noting which files require renumbering. Once the scanning phase +is done, it will process the appropriate files and directories. The +directory's absolute pathname must be given to +.BR xfs_reno . +The following options are accepted by +.BR xfs_reno . +.TP +.B \-f +Force conversion on all inodes, rather than just those with a 64-bit +inode number. This is not particularly useful except for debugging +purposes. +.TP +.B \-n +Do nothing, perform a trial run. +.TP +.B \-v +Increases the verbosity of progress and error messages. Additional +.BR \-v 's +can be used to further increase verbosity. +.TP +.B \-q +Do not report progress, only errors. +.TP +.B \-p +Show progress status. +.TP +.BI \-P " seconds" +Set the interval for the progress status in seconds. The default is 1 +second. +.TP +.B \-r +Recover from an interrupted run. If +.B xfs_reno +is interrupted, it will leave a file called +.I xfs_reno.recover +in the directory specified on the command line. This file will +contain enough information so that +.B xfs_reno +can either finish processing the file it was working on when +interrupted or back out the last change it made, depending on how far +through the process it had progressed. +.B xfs_reno +will only recover the single file it was working on so it will need +to be run again on the directory to be sure that all the appropriate +inodes have been converted. +.SH EXAMPLES +To renumber inodes with 64-bit inode numbers: +.IP +.B # xfs_reno -p /path/to/directory +.PP +To recover from an interrupted run: +.IP +.B # xfs_reno -r /path/to/directory/xfs_reno.recover +.PP +.SH FILES +.PD +.TP +.I /path/xfs_reno.recover +records the state where renumbering was interrupted. +.PD +.SH SEE ALSO +.BR xfs_fsr (8), +.BR xfs_ncheck (8), +.BR fstab (5), +.BR xfs (5). Index: xfsprogs-dev/reno/Makefile =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfsprogs-dev/reno/Makefile 2009-05-28 13:56:08.000000000 +0000 @@ -0,0 +1,19 @@ +# +# Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved. +# + +TOPDIR = .. +include $(TOPDIR)/include/builddefs + +LTCOMMAND = xfs_reno +CFILES = xfs_reno.c +LLDLIBS = $(LIBATTR) + +default: $(LTCOMMAND) + +include $(BUILDRULES) + +install: default + $(INSTALL) -m 755 -d $(PKG_BIN_DIR) + $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) +install-dev: Index: xfsprogs-dev/reno/xfs_reno.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfsprogs-dev/reno/xfs_reno.c 2009-05-28 15:11:42.000000000 +0000 @@ -0,0 +1,2040 @@ +/* + * Copyright (c) 2007 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 + */ + +/* + * xfs_reno - renumber 64-bit inodes + * + * xfs_reno [-f] [-n] [-p] [-q] [-v] [-P seconds] path ... + * xfs_reno [-r] path ... + * + * Renumbers all inodes > 32 bits into 32 bit space. Requires the filesytem + * to be mounted with inode32. + * + * -f force conversion on all inodes rather than just + * those with a 64bit inode number. + * -n nothing, do not renumber inodes + * -p show progress status. + * -q quiet, do not report progress, only errors. + * -v verbose, more -v's more verbose. + * -P seconds set the interval for the progress status in seconds. + * -r recover from an interrupted run. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define ATTRBUFSIZE 1024 + +#define SCAN_PHASE 0x00 +#define DIR_PHASE 0x10 /* nothing done or all done */ +#define DIR_PHASE_1 0x11 /* target dir created */ +#define DIR_PHASE_2 0x12 /* temp dir created */ +#define DIR_PHASE_3 0x13 /* attributes backed up to temp */ +#define DIR_PHASE_4 0x14 /* dirents moved to target dir */ +#define DIR_PHASE_5 0x15 /* attributes applied to target dir */ +#define DIR_PHASE_6 0x16 /* src dir removed */ +#define DIR_PHASE_7 0x17 /* temp dir removed */ +#define DIR_PHASE_MAX 0x17 +#define FILE_PHASE 0x20 /* nothing done or all done */ +#define FILE_PHASE_1 0x21 /* temp file created */ +#define FILE_PHASE_2 0x22 /* swapped extents */ +#define FILE_PHASE_3 0x23 /* unlinked source */ +#define FILE_PHASE_4 0x24 /* renamed temp to source name */ +#define FILE_PHASE_MAX 0x24 +#define SLINK_PHASE 0x30 /* nothing done or all done */ +#define SLINK_PHASE_1 0x31 /* temp symlink created */ +#define SLINK_PHASE_2 0x32 /* symlink attrs copied */ +#define SLINK_PHASE_3 0x33 /* unlinked source */ +#define SLINK_PHASE_4 0x34 /* renamed temp to source name */ +#define SLINK_PHASE_MAX 0x34 + +static void update_recoverfile(void); +#define SET_PHASE(x) (cur_phase = x, update_recoverfile()) + +#define LOG_ERR 0 +#define LOG_NORMAL 1 +#define LOG_INFO 2 +#define LOG_DEBUG 3 +#define LOG_NITTY 4 + +#define NH_BUCKETS 65536 +#define NH_HASH(ino) (nodehash + ((ino) % NH_BUCKETS)) + +typedef struct { + xfs_ino_t ino; + int ftw_flags; + nlink_t numpaths; + char **paths; +} bignode_t; + +typedef struct { + bignode_t *nodes; + uint64_t listlen; + uint64_t lastnode; +} nodelist_t; + +static const char *cmd_prefix = "xfs_reno_"; + +static char *progname; +static int log_level = LOG_NORMAL; +static int force_all; +static nodelist_t *nodehash; +static int realuid; +static uint64_t numdirnodes; +static uint64_t numfilenodes; +static uint64_t numslinknodes; +static uint64_t numdirsdone; +static uint64_t numfilesdone; +static uint64_t numslinksdone; +static int poll_interval; +static time_t starttime; +static bignode_t *cur_node; +static char *cur_target; +static char *cur_temp; +static int cur_phase; +static int highest_numpaths; +static char *recover_file; +static int recover_fd; +static volatile int poll_output; +static int global_rval; + +/* + * message handling + */ +static void +log_message( + int level, + char *fmt, ...) +{ + char buf[1024]; + va_list ap; + + if (log_level < level) + return; + + va_start(ap, fmt); + vsnprintf(buf, 1024, fmt, ap); + va_end(ap); + + printf("%c%s: %s\n", poll_output ? '\n' : '\r', progname, buf); + poll_output = 0; +} + +static void +err_message( + char *fmt, ...) +{ + char buf[1024]; + va_list ap; + + va_start(ap, fmt); + vsnprintf(buf, 1024, fmt, ap); + va_end(ap); + + fprintf(stderr, "%c%s: %s\n", poll_output ? '\n' : '\r', progname, buf); + poll_output = 0; +} + +static void +err_nomem(void) +{ + err_message(_("Out of memory")); +} + +static void +err_open( + const char *s) +{ + err_message(_("Cannot open %s: %s"), s, strerror(errno)); +} + +static void +err_not_xfs( + const char *s) +{ + err_message(_("%s is not on an XFS filesystem"), s); +} + +static void +err_stat( + const char *s) +{ + err_message(_("Cannot stat %s: %s\n"), s, strerror(errno)); +} + +/* + * usage message + */ +static void +usage(void) +{ + fprintf(stderr, _("%s [-fnpqv] [-P ] [-r] \n"), + progname); + exit(1); +} + + +/* + * XFS interface functions + */ + +static int +xfs_bulkstat_single(int fd, xfs_ino_t *lastip, xfs_bstat_t *ubuffer) +{ + xfs_fsop_bulkreq_t bulkreq; + + bulkreq.lastip = (__u64 *)lastip; + bulkreq.icount = 1; + bulkreq.ubuffer = ubuffer; + bulkreq.ocount = NULL; + return ioctl(fd, XFS_IOC_FSBULKSTAT_SINGLE, &bulkreq); +} + +static int +xfs_swapext(int fd, xfs_swapext_t *sx) +{ + return ioctl(fd, XFS_IOC_SWAPEXT, sx); +} + +static int +xfs_getxattr(int fd, struct fsxattr *attr) +{ + return ioctl(fd, XFS_IOC_FSGETXATTR, attr); +} + +static int +xfs_setxattr(int fd, struct fsxattr *attr) +{ + return ioctl(fd, XFS_IOC_FSSETXATTR, attr); +} + +/* + * A hash table of inode numbers and associated paths. + */ +static nodelist_t * +init_nodehash(void) +{ + int i; + + nodehash = calloc(NH_BUCKETS, sizeof(nodelist_t)); + if (nodehash == NULL) { + err_nomem(); + return NULL; + } + + for (i = 0; i < NH_BUCKETS; i++) { + nodehash[i].nodes = NULL; + nodehash[i].lastnode = 0; + nodehash[i].listlen = 0; + } + + return nodehash; +} + +static void +free_nodehash(void) +{ + int i, j, k; + + for (i = 0; i < NH_BUCKETS; i++) { + bignode_t *nodes = nodehash[i].nodes; + + for (j = 0; j < nodehash[i].lastnode; j++) { + for (k = 0; k < nodes[j].numpaths; k++) { + free(nodes[j].paths[k]); + } + free(nodes[j].paths); + } + + free(nodes); + } + free(nodehash); +} + +static nlink_t +add_path( + bignode_t *node, + const char *path) +{ + node->paths = realloc(node->paths, + sizeof(char *) * (node->numpaths + 1)); + if (node->paths == NULL) { + err_nomem(); + exit(1); + } + + node->paths[node->numpaths] = strdup(path); + if (node->paths[node->numpaths] == NULL) { + err_nomem(); + exit(1); + } + + node->numpaths++; + if (node->numpaths > highest_numpaths) + highest_numpaths = node->numpaths; + + return node->numpaths; +} + +static bignode_t * +add_node( + nodelist_t *list, + xfs_ino_t ino, + int ftw_flags, + const char *path) +{ + bignode_t *node; + + if (list->lastnode >= list->listlen) { + list->listlen += 500; + list->nodes = realloc(list->nodes, + sizeof(bignode_t) * list->listlen); + if (list->nodes == NULL) { + err_nomem(); + return NULL; + } + } + + node = list->nodes + list->lastnode; + + node->ino = ino; + node->ftw_flags = ftw_flags; + node->paths = NULL; + node->numpaths = 0; + add_path(node, path); + + list->lastnode++; + + return node; +} + +static bignode_t * +find_node( + xfs_ino_t ino) +{ + int i; + nodelist_t *nodelist; + bignode_t *nodes; + + nodelist = NH_HASH(ino); + nodes = nodelist->nodes; + + for(i = 0; i < nodelist->lastnode; i++) { + if (nodes[i].ino == ino) { + return &nodes[i]; + } + } + + return NULL; +} + +static bignode_t * +add_node_path( + xfs_ino_t ino, + int ftw_flags, + const char *path) +{ + nodelist_t *nodelist; + bignode_t *node; + + log_message(LOG_NITTY, "add_node_path: ino %llu, path %s", ino, path); + + node = find_node(ino); + if (node == NULL) { + nodelist = NH_HASH(ino); + return add_node(nodelist, ino, ftw_flags, path); + } + + add_path(node, path); + return node; +} + +static void +dump_node( + char *msg, + bignode_t *node) +{ + int k; + + if (log_level < LOG_DEBUG) + return; + + log_message(LOG_DEBUG, "%s: %llu %llu %s", msg, node->ino, + node->numpaths, node->paths[0]); + + for (k = 1; k < node->numpaths; k++) + log_message(LOG_DEBUG, "\t%s", node->paths[k]); +} + +static void +dump_nodehash(void) +{ + int i, j; + + if (log_level < LOG_NITTY) + return; + + for (i = 0; i < NH_BUCKETS; i++) { + bignode_t *nodes = nodehash[i].nodes; + for (j = 0; j < nodehash[i].lastnode; j++, nodes++) + dump_node("nodehash", nodes); + } +} + +static int +for_all_nodes( + int (*fn)(bignode_t *node), + int ftw_flags, + int quit_on_error) +{ + int i; + int j; + int rval = 0; + + for (i = 0; i < NH_BUCKETS; i++) { + bignode_t *nodes = nodehash[i].nodes; + + for (j = 0; j < nodehash[i].lastnode; j++, nodes++) { + if (nodes->ftw_flags == ftw_flags) { + rval = fn(nodes); + if (rval && quit_on_error) + goto quit; + } + } + } + +quit: + return rval; +} + +/* + * Adds appropriate files to the inode hash table + */ +static int +nftw_addnodes( + const char *path, + const struct stat64 *st, + int flags, + struct FTW *sntfw) +{ + if (st->st_ino <= XFS_MAXINUMBER_32 && !force_all) + return 0; + + if (flags == FTW_F) + numfilenodes++; + else if (flags == FTW_D) + numdirnodes++; + else if (flags == FTW_SL) + numslinknodes++; + else + return 0; + + add_node_path(st->st_ino, flags, path); + + return 0; +} + +/* + * Attribute cloning code - most of this is here because attr_copy does not + * let us pick and choose which attributes we want to copy. + */ + +attr_multiop_t attr_ops[ATTR_MAX_MULTIOPS]; + +/* + * Grab attributes specified in attr_ops from source file and write them + * out on the destination file. + */ + +static int +attr_replicate( + char *source, + char *target, + int count) +{ + int j, k; + + if (attr_multi(source, attr_ops, count, ATTR_DONTFOLLOW) < 0) + return -1; + + for (k = 0; k < count; k++) { + if (attr_ops[k].am_error) { + err_message(_("Error %d getting attribute"), + attr_ops[k].am_error); + break; + } + attr_ops[k].am_opcode = ATTR_OP_SET; + } + if (attr_multi(target, attr_ops, k, ATTR_DONTFOLLOW) < 0) + err_message("on attr_multif set"); + for (j = 0; j < k; j++) { + if (attr_ops[j].am_error) { + err_message(_("Error %d setting attribute"), + attr_ops[j].am_error); + return -1; + } + } + + return 0; +} + +/* + * Copy all the attributes specified from src to dst. + */ + +static int +attr_clone_copy( + char *source, + char *target, + char *list_buf, + char *attr_buf, + int buf_len, + int flags) +{ + attrlist_t *alist; + attrlist_ent_t *attr; + attrlist_cursor_t cursor; + int space, i, j; + char *ptr; + + bzero((char *)&cursor, sizeof(cursor)); + do { + if (attr_list(source, list_buf, ATTRBUFSIZE, + flags | ATTR_DONTFOLLOW, &cursor) < 0) { + err_message("on attr_listf"); + return -1; + } + + alist = (attrlist_t *)list_buf; + + space = buf_len; + ptr = attr_buf; + for (j = 0, i = 0; i < alist->al_count; i++) { + attr = ATTR_ENTRY(list_buf, i); + if (space < attr->a_valuelen) { + if (attr_replicate(source, target, j) < 0) + return -1; + j = 0; + space = buf_len; + ptr = attr_buf; + } + attr_ops[j].am_opcode = ATTR_OP_GET; + attr_ops[j].am_attrname = attr->a_name; + attr_ops[j].am_attrvalue = ptr; + attr_ops[j].am_length = (int) attr->a_valuelen; + attr_ops[j].am_flags = flags; + attr_ops[j].am_error = 0; + j++; + ptr += attr->a_valuelen; + space -= attr->a_valuelen; + } + + log_message(LOG_NITTY, "copying attribute %d", i); + + if (j) { + if (attr_replicate(source, target, j) < 0) + return -1; + } + + } while (alist->al_more); + + return 0; +} + +static int +clone_attribs( + char *source, + char *target) +{ + char list_buf[ATTRBUFSIZE]; + char *attr_buf; + int rval; + + attr_buf = malloc(ATTR_MAX_VALUELEN * 2); + if (attr_buf == NULL) { + err_nomem(); + return -1; + } + rval = attr_clone_copy(source, target, list_buf, attr_buf, + ATTR_MAX_VALUELEN * 2, 0); + if (rval == 0) + rval = attr_clone_copy(source, target, list_buf, attr_buf, + ATTR_MAX_VALUELEN * 2, ATTR_ROOT); + if (rval == 0) + rval = attr_clone_copy(source, target, list_buf, attr_buf, + ATTR_MAX_VALUELEN * 2, ATTR_SECURE); + free(attr_buf); + return rval; +} + +static int +dup_attributes( + char *source, + int sfd, + char *target, + int tfd) +{ + struct stat64 st; + struct timeval tv[2]; + struct fsxattr fsx; + + if (fstat64(sfd, &st) < 0) { + err_stat(source); + return -1; + } + + if (xfs_getxattr(sfd, &fsx) < 0) { + err_stat(source); + return -1; + } + + tv[0].tv_sec = st.st_atim.tv_sec; + tv[0].tv_usec = st.st_atim.tv_nsec / 1000; + tv[1].tv_sec = st.st_mtim.tv_sec; + tv[1].tv_usec = st.st_mtim.tv_nsec / 1000; + + if (futimes(tfd, tv) < 0) + err_message(_("%s: Cannot update target times"), target); + + if (fchown(tfd, st.st_uid, st.st_gid) < 0) { + err_message(_("%s: Cannot change target ownership to " + "uid(%d) gid(%d)"), target, + st.st_uid, st.st_gid); + + if (fchmod(tfd, st.st_mode & ~(S_ISUID | S_ISGID)) < 0) + err_message(_("%s: Cannot change target mode " + "to (%o)"), target, st.st_mode); + } else if (fchmod(tfd, st.st_mode) < 0) + err_message(_("%s: Cannot change target mode to (%o)"), + target, st.st_mode); + + if (xfs_setxattr(tfd, &fsx) < 0) + err_message(_("%s: Cannet set target extended " + "attributes"), target); + + return clone_attribs(source, target); +} + +static int +move_dirents( + char *srcpath, + char *targetpath, + int *move_count) +{ + int rval = 0; + DIR *srcd; + struct dirent64 *dp; + char srcname[PATH_MAX]; + char targetname[PATH_MAX]; + + *move_count = 0; + + srcd = opendir(srcpath); + if (srcd == NULL) { + err_open(srcpath); + return 1; + } + + while ((dp = readdir64(srcd)) != NULL) { + if (dp->d_ino == 0 || !strcmp(dp->d_name, ".") || + !strcmp(dp->d_name, "..")) + continue; + + if (strlen(srcpath) + 1 + strlen(dp->d_name) >= + sizeof(srcname) - 1) { + + err_message(_("%s/%s: Name too long"), srcpath, + dp->d_name); + rval = 1; + goto quit; + } + + sprintf(srcname, "%s/%s", srcpath, dp->d_name); + sprintf(targetname, "%s/%s", targetpath, dp->d_name); + + rval = rename(srcname, targetname); + if (rval != 0) { + err_message(_("failed to rename: \'%s\' to \'%s\'"), + srcname, targetname); + goto quit; + } + + log_message(LOG_DEBUG, "rename %s -> %s", srcname, targetname); + + (*move_count)++; + } + +quit: + closedir(srcd); + return rval; +} + +static int +process_dir( + bignode_t *node) +{ + int sfd = -1; + int tfd = -1; + int targetfd = -1; + int rval = 0; + int move_count = 0; + char *srcname = NULL; + char *pname = NULL; + struct stat64 s1; + struct fsxattr fsx; + char target[PATH_MAX] = ""; + + SET_PHASE(DIR_PHASE); + + dump_node("directory", node); + + cur_node = node; + srcname = node->paths[0]; + + if (stat64(srcname, &s1) < 0) { + if (errno != ENOENT) { + err_stat(srcname); + global_rval |= 2; + } + goto quit; + } + if (s1.st_ino <= XFS_MAXINUMBER_32 && !force_all) { + /* + * This directory has already changed ino's, probably due + * to being moved during processing of a parent directory. + */ + log_message(LOG_DEBUG, "process_dir: skipping %s", srcname); + goto quit; + } + + rval = 1; + + sfd = open(srcname, O_RDONLY); + if (sfd < 0) { + err_open(srcname); + goto quit; + } + + if (!platform_test_xfs_fd(sfd)) { + err_not_xfs(srcname); + goto quit; + } + + if (xfs_getxattr(sfd, &fsx) < 0) { + err_message(_("failed to get inode attrs: %s"), srcname); + goto quit; + } + if (fsx.fsx_xflags & (XFS_XFLAG_IMMUTABLE | XFS_XFLAG_APPEND)) { + err_message(_("%s: immutable/append, ignoring"), srcname); + global_rval |= 2; + rval = 0; + goto quit; + } + + /* mkdir parent/target */ + pname = strdup(srcname); + if (pname == NULL) { + err_nomem(); + goto quit; + } + dirname(pname); + sprintf(target, "%s/%sXXXXXX", pname, cmd_prefix); + if (mkdtemp(target) == NULL) { + err_message(_("Unable to create directory copy: %s"), srcname); + goto quit; + } + SET_PHASE(DIR_PHASE_1); + + cur_target = strdup(target); + if (!cur_target) { + err_nomem(); + goto quit; + } + + sprintf(target, "%s/%sXXXXXX", pname, cmd_prefix); + if (mkdtemp(target) == NULL) { + err_message(_("unable to create tmp directory copy")); + goto quit; + } + SET_PHASE(DIR_PHASE_2); + + cur_temp = strdup(target); + if (!cur_temp) { + err_nomem(); + goto quit; + } + + tfd = open(cur_temp, O_RDONLY); + if (tfd < 0) { + err_open(cur_temp); + goto quit; + } + + targetfd = open(cur_target, O_RDONLY); + if (tfd < 0) { + err_open(cur_target); + goto quit; + } + + + /* copy timestamps, attribs and EAs, to cur_temp */ + rval = dup_attributes(srcname, sfd, cur_temp, tfd); + if (rval != 0) { + err_message(_("unable to duplicate directory attributes: %s"), + srcname); + goto quit_unlink; + } + + SET_PHASE(DIR_PHASE_3); + + /* move src dirents to cur_target (this changes timestamps on src) */ + rval = move_dirents(srcname, cur_target, &move_count); + if (rval != 0) { + err_message(_("unable to move directory contents: %s to %s"), + srcname, cur_target); + /* uh oh, move everything back... */ + if (move_count > 0) + goto quit_undo; + } + + SET_PHASE(DIR_PHASE_4); + + /* copy timestamps, attribs and EAs from cur_temp to cur_target */ + rval = dup_attributes(cur_temp, tfd, cur_target, targetfd); + if (rval != 0) { + err_message(_("unable to duplicate directory attributes: %s"), + cur_temp); + goto quit_unlink; + } + + SET_PHASE(DIR_PHASE_5); + + /* rmdir src */ + rval = rmdir(srcname); + if (rval != 0) { + err_message(_("unable to remove directory: %s"), srcname); + goto quit_undo; + } + + SET_PHASE(DIR_PHASE_6); + + rval = rmdir(cur_temp); + if (rval != 0) + err_message(_("unable to remove tmp directory: %s"), cur_temp); + + SET_PHASE(DIR_PHASE_7); + + /* rename cur_target src */ + rval = rename(cur_target, srcname); + if (rval != 0) { + /* + * we can't abort since the src dir is now gone. + * let the admin clean this one up + */ + err_message(_("unable to rename directory: %s to %s"), + cur_target, srcname); + } + goto quit; + + quit_undo: + if (move_dirents(cur_target, srcname, &move_count) != 0) { + /* oh, dear lord... let the admin clean this one up */ + err_message(_("unable to move directory contents back: %s to %s"), + cur_target, srcname); + goto quit; + } + SET_PHASE(DIR_PHASE_3); + + quit_unlink: + rmdir(cur_target); + rmdir(cur_temp); + + quit: + + SET_PHASE(DIR_PHASE); + + if (sfd >= 0) + close(sfd); + if (tfd >= 0) + close(tfd); + if (targetfd >= 0) + close(targetfd); + + free(pname); + free(cur_target); + free(cur_temp); + + cur_target = NULL; + cur_temp = NULL; + cur_node = NULL; + numdirsdone++; + return rval; +} + +static int +process_file( + bignode_t *node) +{ + int sfd = -1; + int tfd = -1; + int i = 0; + int rval = 0; + struct stat64 s1; + char *srcname = NULL; + char *pname = NULL; + xfs_swapext_t sx; + xfs_bstat_t bstatbuf; + struct fsxattr fsx; + char target[PATH_MAX] = ""; + + SET_PHASE(FILE_PHASE); + + dump_node("file", node); + + cur_node = node; + srcname = node->paths[0]; + + bzero(&s1, sizeof(s1)); + bzero(&bstatbuf, sizeof(bstatbuf)); + bzero(&sx, sizeof(sx)); + + if (stat64(srcname, &s1) < 0) { + if (errno != ENOENT) { + err_stat(srcname); + global_rval |= 2; + } + goto quit; + } + if (s1.st_ino <= XFS_MAXINUMBER_32 && !force_all) + /* this file has changed, and no longer needs processing */ + goto quit; + + /* open and sync source */ + sfd = open(srcname, O_RDWR | O_DIRECT); + if (sfd < 0) { + err_open(srcname); + rval = 1; + goto quit; + } + if (!platform_test_xfs_fd(sfd)) { + err_not_xfs(srcname); + rval = 1; + goto quit; + } + if (fsync(sfd) < 0) { + err_message(_("sync failed: %s: %s"), + srcname, strerror(errno)); + rval = 1; + goto quit; + } + + + /* + * Check if a mandatory lock is set on the file to try and + * avoid blocking indefinitely on the reads later. Note that + * someone could still set a mandatory lock after this check + * but before all reads have completed to block xfs_reno reads. + * This change just closes the window a bit. + */ + if ((s1.st_mode & S_ISGID) && !(s1.st_mode & S_IXGRP)) { + struct flock fl; + + fl.l_type = F_RDLCK; + fl.l_whence = SEEK_SET; + fl.l_start = (off_t)0; + fl.l_len = 0; + if (fcntl(sfd, F_GETLK, &fl) < 0 ) { + if (log_level >= LOG_DEBUG) + err_message("locking check failed: %s", + srcname); + global_rval |= 2; + goto quit; + } + if (fl.l_type != F_UNLCK) { + if (log_level >= LOG_DEBUG) + err_message("mandatory lock: %s: ignoring", + srcname); + global_rval |= 2; + goto quit; + } + } + + if (xfs_getxattr(sfd, &fsx) < 0) { + err_message(_("failed to get inode attrs: %s"), srcname); + rval = 1; + goto quit; + } + if (fsx.fsx_xflags & (XFS_XFLAG_IMMUTABLE | XFS_XFLAG_APPEND)) { + err_message(_("%s: immutable/append, ignoring"), srcname); + global_rval |= 2; + goto quit; + } + + rval = 1; + + if (realuid != 0 && realuid != s1.st_uid) { + errno = EACCES; + err_open(srcname); + goto quit; + } + + /* creat target */ + pname = strdup(srcname); + if (pname == NULL) { + err_nomem(); + goto quit; + } + dirname(pname); + sprintf(target, "%s/%sXXXXXX", pname, cmd_prefix); + tfd = mkstemp(target); + if (tfd < 0) { + err_message("unable to create file copy"); + goto quit; + } + cur_target = strdup(target); + if (cur_target == NULL) { + err_nomem(); + goto quit; + } + + SET_PHASE(FILE_PHASE_1); + + /* Setup direct I/O */ + if (fcntl(tfd, F_SETFL, O_DIRECT) < 0 ) { + err_message(_("could not set O_DIRECT for %s on tmp: %s"), + srcname, target); + unlink(target); + goto quit; + } + + /* copy attribs & EAs to target */ + if (dup_attributes(srcname, sfd, target, tfd) != 0) { + err_message(_("unable to duplicate file attributes: %s"), + srcname); + unlink(target); + goto quit; + } + + if (xfs_bulkstat_single(sfd, &s1.st_ino, &bstatbuf) < 0) { + err_message(_("unable to bulkstat source file: %s"), + srcname); + unlink(target); + goto quit; + } + + if (bstatbuf.bs_ino != s1.st_ino) { + err_message(_("bulkstat of source file returned wrong inode: %s"), + srcname); + unlink(target); + goto quit; + } + + ftruncate64(tfd, bstatbuf.bs_size); + + /* swapextents src target */ + sx.sx_stat = bstatbuf; /* struct copy */ + sx.sx_version = XFS_SX_VERSION; + sx.sx_fdtarget = sfd; + sx.sx_fdtmp = tfd; + sx.sx_offset = 0; + sx.sx_length = bstatbuf.bs_size; + + /* Swap the extents */ + rval = xfs_swapext(sfd, &sx); + if (rval < 0) { + if (log_level >= LOG_DEBUG) { + switch (errno) { + case ENOTSUP: + err_message("%s: file type not supported", + srcname); + break; + case EFAULT: + /* The file has changed since we started the copy */ + err_message("%s: file modified, " + "inode renumber aborted: %ld", + srcname, bstatbuf.bs_size); + break; + case EBUSY: + /* Timestamp has changed or mmap'ed file */ + err_message("%s: file busy", srcname); + break; + default: + err_message(_("Swap extents failed: %s: %s"), + srcname, strerror(errno)); + break; + } + } else + err_message(_("Swap extents failed: %s: %s"), + srcname, strerror(errno)); + goto quit; + } + + if (bstatbuf.bs_dmevmask | bstatbuf.bs_dmstate) { + struct fsdmidata fssetdm; + + /* Set the DMAPI Fields. */ + fssetdm.fsd_dmevmask = bstatbuf.bs_dmevmask; + fssetdm.fsd_padding = 0; + fssetdm.fsd_dmstate = bstatbuf.bs_dmstate; + + if (ioctl(tfd, XFS_IOC_FSSETDM, (void *)&fssetdm ) < 0) + err_message(_("attempt to set DMI attributes " + "of %s failed"), target); + } + + SET_PHASE(FILE_PHASE_2); + + /* unlink src */ + rval = unlink(srcname); + if (rval != 0) { + err_message(_("unable to remove file: %s"), srcname); + goto quit; + } + + SET_PHASE(FILE_PHASE_3); + + /* rename target src */ + rval = rename(target, srcname); + if (rval != 0) { + /* + * we can't abort since the src file is now gone. + * let the admin clean this one up + */ + err_message(_("unable to rename file: %s to %s"), + target, srcname); + goto quit; + } + + SET_PHASE(FILE_PHASE_4); + + /* for each hardlink, unlink and creat pointing to target */ + for (i = 1; i < node->numpaths; i++) { + /* unlink src */ + rval = unlink(node->paths[i]); + if (rval != 0) { + err_message(_("unable to remove file: %s"), + node->paths[i]); + goto quit; + } + + rval = link(srcname, node->paths[i]); + if (rval != 0) { + err_message("unable to link to file: %s", srcname); + goto quit; + } + numfilesdone++; + } + + quit: + cur_node = NULL; + + SET_PHASE(FILE_PHASE); + + if (sfd >= 0) + close(sfd); + if (tfd >= 0) + close(tfd); + + free(pname); + free(cur_target); + + cur_target = NULL; + + numfilesdone++; + return rval; +} + + +static int +process_slink( + bignode_t *node) +{ + int i = 0; + int rval = 0; + struct stat64 st; + char *srcname = NULL; + char *pname = NULL; + char target[PATH_MAX] = ""; + char linkbuf[PATH_MAX]; + + SET_PHASE(SLINK_PHASE); + + dump_node("symlink", node); + + cur_node = node; + srcname = node->paths[0]; + + if (lstat64(srcname, &st) < 0) { + if (errno != ENOENT) { + err_stat(srcname); + global_rval |= 2; + } + goto quit; + } + if (st.st_ino <= XFS_MAXINUMBER_32 && !force_all) + /* this file has changed, and no longer needs processing */ + goto quit; + + rval = 1; + + i = readlink(srcname, linkbuf, sizeof(linkbuf) - 1); + if (i < 0) { + err_message(_("unable to read symlink: %s"), srcname); + goto quit; + } + linkbuf[i] = '\0'; + + if (realuid != 0 && realuid != st.st_uid) { + errno = EACCES; + err_open(srcname); + goto quit; + } + + /* create target */ + pname = strdup(srcname); + if (pname == NULL) { + err_nomem(); + goto quit; + } + dirname(pname); + + sprintf(target, "%s/%sXXXXXX", pname, cmd_prefix); + if (mktemp(target) == NULL) { + err_message(_("unable to create temp symlink name")); + goto quit; + } + cur_target = strdup(target); + if (cur_target == NULL) { + err_nomem(); + goto quit; + } + + if (symlink(linkbuf, target) != 0) { + err_message(_("unable to create symlink: %s"), target); + goto quit; + } + + SET_PHASE(SLINK_PHASE_1); + + /* copy ownership & EAs to target */ + if (lchown(target, st.st_uid, st.st_gid) < 0) { + err_message(_("%s: Cannot change target ownership to " + "uid(%d) gid(%d)"), target, + st.st_uid, st.st_gid); + unlink(target); + goto quit; + } + + if (clone_attribs(srcname, target) != 0) { + err_message(_("unable to duplicate symlink attributes: %s"), + srcname); + unlink(target); + goto quit; + } + + SET_PHASE(SLINK_PHASE_2); + + /* unlink src */ + rval = unlink(srcname); + if (rval != 0) { + err_message(_("unable to remove symlink: %s"), srcname); + goto quit; + } + + SET_PHASE(SLINK_PHASE_3); + + /* rename target src */ + rval = rename(target, srcname); + if (rval != 0) { + /* + * we can't abort since the src file is now gone. + * let the admin clean this one up + */ + err_message(_("unable to rename symlink: %s to %s"), + target, srcname); + goto quit; + } + + SET_PHASE(SLINK_PHASE_4); + + /* for each hardlink, unlink and creat pointing to target */ + for (i = 1; i < node->numpaths; i++) { + /* unlink src */ + rval = unlink(node->paths[i]); + if (rval != 0) { + err_message(_("unable to remove symlink: %s"), + node->paths[i]); + goto quit; + } + + rval = link(srcname, node->paths[i]); + if (rval != 0) { + err_message("unable to link to symlink: %s", srcname); + goto quit; + } + numslinksdone++; + } + + quit: + cur_node = NULL; + + SET_PHASE(SLINK_PHASE); + + free(pname); + free(cur_target); + + cur_target = NULL; + + numslinksdone++; + return rval; +} + +static int +open_recoverfile(void) +{ + recover_fd = open(recover_file, O_RDWR | O_SYNC | O_CREAT | O_EXCL, + 0600); + if (recover_fd < 0) { + if (errno == EEXIST) + err_message(_("Recovery file already exists, either " + "run '%s -r %s' or remove the file."), + progname, recover_file); + else + err_open(recover_file); + return 1; + } + + if (!platform_test_xfs_fd(recover_fd)) { + err_not_xfs(recover_file); + close(recover_fd); + return 1; + } + + return 0; +} + +static void +update_recoverfile(void) +{ + static const char null_file[] = "0\n0\n0\n\ntarget: \ntemp: \nend\n"; + static size_t buf_size = 0; + static char *buf = NULL; + int i, len; + + if (recover_fd <= 0) + return; + + if (cur_node == NULL || cur_phase == 0) { + /* inbetween processing or still scanning */ + lseek(recover_fd, 0, SEEK_SET); + write(recover_fd, null_file, sizeof(null_file)); + return; + } + + ASSERT(highest_numpaths > 0); + if (buf == NULL) { + buf_size = (highest_numpaths + 3) * PATH_MAX; + buf = malloc(buf_size); + if (buf == NULL) { + err_nomem(); + exit(1); + } + } + + len = sprintf(buf, "%d\n%llu\n%d\n", cur_phase, + (long long)cur_node->ino, cur_node->ftw_flags); + + for (i = 0; i < cur_node->numpaths; i++) + len += sprintf(buf + len, "%s\n", cur_node->paths[i]); + + len += sprintf(buf + len, "target: %s\ntemp: %s\nend\n", + cur_target, cur_temp); + + ASSERT(len < buf_size); + + lseek(recover_fd, 0, SEEK_SET); + ftruncate(recover_fd, 0); + write(recover_fd, buf, len); +} + +static void +cleanup(void) +{ + log_message(LOG_NORMAL, _("Interrupted -- cleaning up...")); + + free_nodehash(); + + log_message(LOG_NORMAL, _("Done.")); +} + +static void +sighandler(int sig) +{ + static char cycle[4] = "-\\|/"; + static uint64_t cur_cycle = 0; + double percent; + char *typename; + uint64_t nodes, done; + + alarm(0); + + if (sig != SIGALRM) { + cleanup(); + exit(1); + } + + if (cur_phase == SCAN_PHASE) { + if (log_level >= LOG_INFO) + fprintf(stderr, _("\r%llu files, %llu dirs and %llu " + "symlinks to renumber found... %c"), + (long long)numfilenodes, + (long long)numdirnodes, + (long long)numslinknodes, + cycle[cur_cycle % 4]); + else + fprintf(stderr, "\r%c", + cycle[cur_cycle % 4]); + cur_cycle++; + } else { + if (cur_phase >= DIR_PHASE && cur_phase <= DIR_PHASE_MAX) { + nodes = numdirnodes; + done = numdirsdone; + typename = _("dirs"); + } else + if (cur_phase >= FILE_PHASE && cur_phase <= FILE_PHASE_MAX) { + nodes = numfilenodes; + done = numfilesdone; + typename = _("files"); + } else { + nodes = numslinknodes; + done = numslinksdone; + typename = _("symlinks"); + } + percent = 100.0 * (double)done / (double)nodes; + if (percent > 100.0) + percent = 100.0; + if (log_level >= LOG_INFO) + fprintf(stderr, _("\r%.1f%%, %llu of %llu %s, " + "%u seconds elapsed"), percent, + (long long)done, (long long)nodes, + typename, (int)(time(0) - starttime)); + else + fprintf(stderr, "\r%.1f%%", percent); + } + poll_output = 1; + signal(SIGALRM, sighandler); + + if (poll_interval) + alarm(poll_interval); +} + +static int +read_recover_file( + char *recover_file, + bignode_t **node, + char **target, + char **temp, + int *phase) +{ + FILE *file; + int rval = 1; + ino_t ino; + int ftw_flags; + char buf[PATH_MAX + 10]; /* path + "target: " */ + struct stat64 s; + int first_path; + + /* + + A recovery file should look like: + + + + + + + target: + temp: + end + */ + + file = fopen(recover_file, "r"); + if (file == NULL) { + err_open(recover_file); + return 1; + } + + /* read phase */ + *phase = 0; + if (fgets(buf, PATH_MAX + 10, file) == NULL) { + err_message("Recovery failed: unable to read phase"); + goto quit; + } + buf[strlen(buf) - 1] = '\0'; + *phase = atoi(buf); + if (*phase == SCAN_PHASE) { + fclose(file); + return 0; + } + if ((*phase < DIR_PHASE || *phase > DIR_PHASE_MAX) && + (*phase < FILE_PHASE || *phase > FILE_PHASE_MAX)) { + err_message("Recovery failed: failed to read valid recovery phase"); + goto quit; + } + + /* read inode number */ + if (fgets(buf, PATH_MAX + 10, file) == NULL) { + err_message("Recovery failed: unable to read inode number"); + goto quit; + } + buf[strlen(buf) - 1] = '\0'; + ino = strtoull(buf, NULL, 10); + if (ino == 0) { + err_message("Recovery failed: unable to read inode number"); + goto quit; + } + + /* read ftw_flags */ + if (fgets(buf, PATH_MAX + 10, file) == NULL) { + err_message("Recovery failed: unable to read flags"); + goto quit; + } + buf[strlen(buf) - 1] = '\0'; + if (buf[1] != '\0' || (buf[0] != '0' && buf[0] != '1')) { + err_message("Recovery failed: unable to read flags: '%s'", buf); + goto quit; + } + ftw_flags = atoi(buf); + + /* read paths and target path */ + *node = NULL; + *target = NULL; + first_path = 1; + while (fgets(buf, PATH_MAX + 10, file) != NULL) { + buf[strlen(buf) - 1] = '\0'; + + log_message(LOG_DEBUG, "path: '%s'", buf); + + if (buf[0] == '/') { + if (stat64(buf, &s) < 0) { + err_message(_("Recovery failed: cannot " + "stat '%s'"), buf); + goto quit; + } + if (s.st_ino != ino) { + err_message(_("Recovery failed: inode " + "number for '%s' does not " + "match recorded number"), buf); + goto quit; + } + + if (first_path) { + first_path = 0; + *node = add_node_path(ino, ftw_flags, buf); + } + else { + add_path(*node, buf); + } + } + else if (strncmp(buf, "target: ", 8) == 0) { + *target = strdup(buf + 8); + if (*target == NULL) { + err_nomem(); + goto quit; + } + if (stat64(*target, &s) < 0) { + err_message(_("Recovery failed: cannot " + "stat '%s'"), *target); + goto quit; + } + } + else if (strncmp(buf, "temp: ", 6) == 0) { + *temp = strdup(buf + 6); + if (*temp == NULL) { + err_nomem(); + goto quit; + } + } + else if (strcmp(buf, "end") == 0) { + rval = 0; + goto quit; + } + else { + err_message(_("Recovery failed: unrecognised " + "string: '%s'"), buf); + goto quit; + } + } + + err_message(_("Recovery failed: end of recovery file not found")); + + quit: + if (*node == NULL) { + err_message(_("Recovery failed: no valid inode or paths " + "specified")); + rval = 1; + } + + if (*target == NULL) { + err_message(_("Recovery failed: no inode target specified")); + rval = 1; + } + + fclose(file); + + return rval; +} + +int +recover( + bignode_t *node, + char *target, + char *tname, + int phase) +{ + int tfd = -1; + int targetfd = -1; + char *srcname = NULL; + int rval = 0; + int i; + int move_count = 0; + + dump_node("recover", node); + log_message(LOG_DEBUG, "target: %s, phase: %x", target, phase); + + if (node) + srcname = node->paths[0]; + + switch (phase) { + + case DIR_PHASE_2: +rmtemps: + log_message(LOG_NORMAL, _("Removing temporary directory: '%s'"), + tname); + if (rmdir(tname) < 0 && errno != ENOENT) { + err_message(_("unable to remove directory: %s"), tname); + rval = 1; + } + /* FALL THRU */ + case DIR_PHASE_1: + log_message(LOG_NORMAL, _("Removing target directory: '%s'"), + target); + if (rmdir(target) < 0 && errno != ENOENT) { + err_message(_("unable to remove directory: %s"), + target); + rval = 1; + } + break; + + case DIR_PHASE_3: + log_message(LOG_NORMAL, _("Completing moving directory " + "contents: '%s' to '%s'"), srcname, target); + if (move_dirents(srcname, target, &move_count) != 0) { + err_message(_("unable to move directory contents: " + "%s to %s"), srcname, target); + /* uh oh, move everything back... */ + if (move_count > 0) { + if (move_dirents(target, srcname, + &move_count) != 0) { + /* oh, dear lord... let the admin + * clean this one up */ + err_message(_("unable to move directory " + "contents back: %s to %s"), + target, srcname); + exit(1); + } + } + goto rmtemps; + } + /* FALL THRU */ + case DIR_PHASE_4: + log_message(LOG_NORMAL, _("Setting attributes for target " + "directory: \'%s\'"), target); + tfd = open(tname, O_RDONLY); + if (tfd < 0) { + err_open(tname); + rval = 1; + break; + } + targetfd = open(target, O_RDONLY); + if (targetfd < 0) { + err_open(target); + rval = 1; + break; + } + rval = dup_attributes(tname, tfd, target, targetfd); + if (rval != 0) { + err_message(_("unable to duplicate directory " + "attributes: %s"), tname); + break; + } + close(tfd); + close(targetfd); + /* FALL THRU */ + case DIR_PHASE_6: + log_message(LOG_NORMAL, _("Removing temporary directory: \'%s\'"), + tname); + if (rmdir(tname) < 0 && errno != ENOENT) { + err_message(_("unable to remove directory: %s"), + tname); + rval = 1; + break; + } + /* FALL THRU */ + case DIR_PHASE_5: + log_message(LOG_NORMAL, _("Removing old directory: \'%s\'"), + srcname); + if (rmdir(srcname) < 0 && errno != ENOENT) { + err_message(_("unable to remove directory: %s"), + srcname); + rval = 1; + break; + } + /* FALL THRU */ + case DIR_PHASE_7: + log_message(LOG_NORMAL, _("Renaming new directory to old " + "directory: \'%s\' -> \'%s\'"), target, srcname); + rval = rename(target, srcname); + if (rval != 0) { + /* we can't abort since the src dir is now gone. + * let the admin clean this one up + */ + err_message(_("unable to rename directory: %s to %s"), + target, srcname); + break; + } + break; + + + case FILE_PHASE_1: + case SLINK_PHASE_1: + log_message(LOG_NORMAL, _("Unlinking temporary file: \'%s\'"), + target); + unlink(target); + break; + + case FILE_PHASE_2: + case SLINK_PHASE_2: + log_message(LOG_NORMAL, _("Unlinking old file: \'%s\'"), + srcname); + rval = unlink(srcname); + if (rval != 0) { + err_message(_("unable to remove file: %s"), srcname); + break; + } + /* FALL THRU */ + case FILE_PHASE_3: + case SLINK_PHASE_3: + log_message(LOG_NORMAL, _("Renaming new file to old file: " + "\'%s\' -> \'%s\'"), target, srcname); + rval = rename(target, srcname); + if (rval != 0) { + /* we can't abort since the src file is now gone. + * let the admin clean this one up + */ + err_message(_("unable to rename file: %s to %s"), + target, srcname); + break; + } + /* FALL THRU */ + case FILE_PHASE_4: + case SLINK_PHASE_4: + /* for each hardlink, unlink and creat pointing to target */ + for (i = 1; i < node->numpaths; i++) { + if (i == 1) + log_message(LOG_NORMAL, _("Resetting hardlinks " + "to new file")); + + rval = unlink(node->paths[i]); + if (rval != 0) { + err_message(_("unable to remove file: %s"), + node->paths[i]); + break; + } + rval = link(srcname, node->paths[i]); + if (rval != 0) { + err_message(_("unable to link to file: %s"), + srcname); + break; + } + } + break; + } + + if (rval == 0) { + log_message(LOG_NORMAL, _("Removing recover file: \'%s\'"), + recover_file); + unlink(recover_file); + log_message(LOG_NORMAL, _("Recovery done.")); + } + else { + log_message(LOG_NORMAL, _("Leaving recover file: \'%s\'"), + recover_file); + log_message(LOG_NORMAL, _("Recovery failed.")); + } + + return rval; +} + +int +main( + int argc, + char *argv[]) +{ + int c = 0; + int rval = 0; + int q_opt = 0; + int v_opt = 0; + int p_opt = 0; + int n_opt = 0; + char pathname[PATH_MAX]; + struct stat64 st; + + progname = basename(argv[0]); + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + while ((c = getopt(argc, argv, "fnpqvP:r:")) != -1) { + switch (c) { + case 'f': + force_all = 1; + break; + case 'n': + n_opt++; + break; + case 'p': + p_opt++; + break; + case 'q': + if (v_opt) + err_message(_("'q' option incompatible " + "with 'v' option")); + q_opt++; + log_level=0; + break; + case 'v': + if (q_opt) + err_message(_("'v' option incompatible " + "with 'q' option")); + v_opt++; + log_level++; + break; + case 'P': + poll_interval = atoi(optarg); + break; + case 'r': + recover_file = optarg; + break; + default: + err_message(_("%s: illegal option -- %c\n"), c); + usage(); + /* NOTREACHED */ + break; + } + } + + if (optind != argc - 1 && recover_file == NULL) { + usage(); + exit(1); + } + + realuid = getuid(); + starttime = time(0); + + init_nodehash(); + + signal(SIGALRM, sighandler); + signal(SIGABRT, sighandler); + signal(SIGHUP, sighandler); + signal(SIGINT, sighandler); + signal(SIGQUIT, sighandler); + signal(SIGTERM, sighandler); + + if (p_opt && poll_interval == 0) { + poll_interval = 1; + } + if (poll_interval) + alarm(poll_interval); + + if (recover_file) { + bignode_t *node = NULL; + char *target = NULL; + char *tname = NULL; + int phase = 0; + + if (n_opt) + goto quit; + + /* read node info from recovery file */ + if (read_recover_file(recover_file, &node, &target, + &tname, &phase) != 0) + exit(1); + + rval = recover(node, target, tname, phase); + + free(target); + free(tname); + + return rval; + } + + recover_file = malloc(PATH_MAX); + if (recover_file == NULL) { + err_nomem(); + exit(1); + } + recover_file[0] = '\0'; + + strcpy(pathname, argv[optind]); + if (pathname[0] != '/') { + err_message(_("pathname must begin with a slash ('/')")); + exit(1); + } + + if (stat64(pathname, &st) < 0) { + err_stat(pathname); + exit(1); + } + if (S_ISREG(st.st_mode)) { + /* single file specified */ + if (st.st_nlink > 1) { + err_message(_("cannot process single file with a " + "link count greater than 1")); + exit(1); + } + + strcpy(recover_file, pathname); + dirname(recover_file); + + strcpy(recover_file + strlen(recover_file), "/xfs_reno.recover"); + if (!n_opt) { + if (open_recoverfile() != 0) + exit(1); + } + add_node_path(st.st_ino, FTW_F, pathname); + } + else if (S_ISDIR(st.st_mode)) { + /* directory tree specified */ + strcpy(recover_file, pathname); + + strcpy(recover_file + strlen(recover_file), "/xfs_reno.recover"); + if (!n_opt) { + if (open_recoverfile() != 0) + exit(1); + } + + /* directory scan */ + log_message(LOG_INFO, _("\rScanning directory tree...")); + SET_PHASE(SCAN_PHASE); + nftw64(pathname, nftw_addnodes, 100, FTW_PHYS | FTW_MOUNT); + } + else { + err_message(_("pathname must be either a regular file " + "or directory")); + exit(1); + } + + dump_nodehash(); + + if (n_opt) { + /* n flag set, don't do anything */ + if (numdirnodes) + log_message(LOG_NORMAL, "\rWould process %d %s", + numdirnodes, numdirnodes == 1 ? + "directory" : "directories"); + else + log_message(LOG_NORMAL, "\rNo directories to process"); + + if (numfilenodes) + /* process files */ + log_message(LOG_NORMAL, "\rWould process %d %s", + numfilenodes, numfilenodes == 1 ? + "file" : "files"); + else + log_message(LOG_NORMAL, "\rNo files to process"); + if (numslinknodes) + /* process files */ + log_message(LOG_NORMAL, "\rWould process %d %s", + numslinknodes, numslinknodes == 1 ? + "symlinx" : "symlinks"); + else + log_message(LOG_NORMAL, "\rNo symlinks to process"); + } else { + /* process directories */ + if (numdirnodes) { + log_message(LOG_INFO, _("\rProcessing %d %s..."), + numdirnodes, numdirnodes == 1 ? + _("directory") : _("directories")); + cur_phase = DIR_PHASE; + rval = for_all_nodes(process_dir, FTW_D, 1); + if (rval != 0) + goto quit; + } + else + log_message(LOG_INFO, _("\rNo directories to process...")); + + if (numfilenodes) { + /* process files */ + log_message(LOG_INFO, _("\rProcessing %d %s..."), + numfilenodes, numfilenodes == 1 ? + _("file") : _("files")); + cur_phase = FILE_PHASE; + for_all_nodes(process_file, FTW_F, 0); + } + else + log_message(LOG_INFO, _("\rNo files to process...")); + + if (numslinknodes) { + /* process symlinks */ + log_message(LOG_INFO, _("\rProcessing %d %s..."), + numslinknodes, numslinknodes == 1 ? + _("symlink") : _("symlinks")); + cur_phase = SLINK_PHASE; + for_all_nodes(process_slink, FTW_SL, 0); + } + else + log_message(LOG_INFO, _("\rNo symlinks to process...")); + + } +quit: + free_nodehash(); + + close(recover_fd); + + if (rval == 0) + unlink(recover_file); + + log_message(LOG_DEBUG, "\r%u seconds elapsed", time(0) - starttime); + log_message(LOG_INFO, _("\rDone. ")); + + return rval | global_rval; +} Index: xfsprogs-dev/configure.in =================================================================== --- xfsprogs-dev.orig/configure.in 2009-05-28 15:07:16.000000000 +0000 +++ xfsprogs-dev/configure.in 2009-05-28 15:07:25.000000000 +0000 @@ -60,6 +60,10 @@ AC_PACKAGE_NEED_PTHREAD_H AC_PACKAGE_NEED_PTHREADMUTEXINIT +AC_PACKAGE_NEED_ATTRIBUTES_H +AC_PACKAGE_NEED_ATTRIBUTES_MACROS +AC_PACKAGE_NEED_ATTRGET_LIBATTR + AC_HAVE_FADVISE AC_HAVE_MADVISE AC_HAVE_MINCORE Index: xfsprogs-dev/include/builddefs.in =================================================================== --- xfsprogs-dev.orig/include/builddefs.in 2009-05-28 14:58:15.000000000 +0000 +++ xfsprogs-dev/include/builddefs.in 2009-05-28 14:58:38.000000000 +0000 @@ -25,6 +25,7 @@ MALLOCLIB = @malloc_lib@ LOADERFLAGS = @LDFLAGS@ +LIBATTR = @libattr@ LIBRT = @librt@ LIBUUID = @libuuid@ LIBPTHREAD = @libpthread@ Index: xfsprogs-dev/m4/Makefile =================================================================== --- xfsprogs-dev.orig/m4/Makefile 2009-05-28 14:57:04.000000000 +0000 +++ xfsprogs-dev/m4/Makefile 2009-05-28 14:57:10.000000000 +0000 @@ -8,6 +8,7 @@ LSRCFILES = \ manual_format.m4 \ package_aiodev.m4 \ + package_attrdev.m4 \ package_globals.m4 \ package_libcdev.m4 \ package_pthread.m4 \ Index: xfsprogs-dev/m4/package_attrdev.m4 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfsprogs-dev/m4/package_attrdev.m4 2009-05-28 14:56:47.000000000 +0000 @@ -0,0 +1,83 @@ +AC_DEFUN([AC_PACKAGE_NEED_ATTR_XATTR_H], + [ AC_CHECK_HEADERS([attr/xattr.h]) + if test "$ac_cv_header_attr_xattr_h" != "yes"; then + echo + echo 'FATAL ERROR: attr/xattr.h does not exist.' + echo 'Install the extended attributes (attr) development package.' + echo 'Alternatively, run "make install-dev" from the attr source.' + exit 1 + fi + ]) + +AC_DEFUN([AC_PACKAGE_NEED_ATTR_ERROR_H], + [ AC_CHECK_HEADERS([attr/error_context.h]) + if test "$ac_cv_header_attr_error_context_h" != "yes"; then + echo + echo 'FATAL ERROR: attr/error_context.h does not exist.' + echo 'Install the extended attributes (attr) development package.' + echo 'Alternatively, run "make install-dev" from the attr source.' + exit 1 + fi + ]) + +AC_DEFUN([AC_PACKAGE_NEED_ATTRIBUTES_H], + [ have_attributes_h=false + AC_CHECK_HEADERS([attr/attributes.h sys/attributes.h], [have_attributes_h=true], ) + if test "$have_attributes_h" = "false"; then + echo + echo 'FATAL ERROR: attributes.h does not exist.' + echo 'Install the extended attributes (attr) development package.' + echo 'Alternatively, run "make install-dev" from the attr source.' + exit 1 + fi + ]) + +AC_DEFUN([AC_PACKAGE_WANT_ATTRLIST_LIBATTR], + [ AC_CHECK_LIB(attr, attr_list, [have_attr_list=true], [have_attr_list=false]) + AC_SUBST(have_attr_list) + ]) + +AC_DEFUN([AC_PACKAGE_NEED_GETXATTR_LIBATTR], + [ AC_CHECK_LIB(attr, getxattr,, [ + echo + echo 'FATAL ERROR: could not find a valid Extended Attributes library.' + echo 'Install the extended attributes (attr) development package.' + echo 'Alternatively, run "make install-lib" from the attr source.' + exit 1 + ]) + libattr="-lattr" + test -f `pwd`/../attr/libattr/libattr.la && \ + libattr="`pwd`/../attr/libattr/libattr.la" + test -f ${libexecdir}${libdirsuffix}/libattr.la && \ + libattr="${libexecdir}${libdirsuffix}/libattr.la" + AC_SUBST(libattr) + ]) + +AC_DEFUN([AC_PACKAGE_NEED_ATTRGET_LIBATTR], + [ AC_CHECK_LIB(attr, attr_get,, [ + echo + echo 'FATAL ERROR: could not find a valid Extended Attributes library.' + echo 'Install the extended attributes (attr) development package.' + echo 'Alternatively, run "make install-lib" from the attr source.' + exit 1 + ]) + libattr="-lattr" + test -f `pwd`/../attr/libattr/libattr.la && \ + libattr="`pwd`/../attr/libattr/libattr.la" + test -f ${libexecdir}${libdirsuffix}/libattr.la && \ + libattr="${libexecdir}${libdirsuffix}/libattr.la" + AC_SUBST(libattr) + ]) + +AC_DEFUN([AC_PACKAGE_NEED_ATTRIBUTES_MACROS], + [ AC_MSG_CHECKING([macros in attr/attributes.h]) + AC_TRY_LINK([ +#include +#include ], + [ int x = ATTR_SECURE; ], [ echo ok ], [ + echo + echo 'FATAL ERROR: could not find a current attributes header.' + echo 'Upgrade the extended attributes (attr) development package.' + echo 'Alternatively, run "make install-dev" from the attr source.' + exit 1 ]) + ]) From sandeen@sandeen.net Thu May 28 10:18:07 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SFI7PG260429 for ; Thu, 28 May 2009 10:18:07 -0500 X-ASG-Debug-ID: 1243524262-715300750000-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 CF1A4FAED96 for ; Thu, 28 May 2009 08:24:22 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id HCghAb3XqD56FehL for ; Thu, 28 May 2009 08:24:22 -0700 (PDT) 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 n4SFIBvZ029146; Thu, 28 May 2009 11:18:11 -0400 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 n4SFIAaU000340; Thu, 28 May 2009 11:18:10 -0400 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 n4SFI98U017839; Thu, 28 May 2009 11:18:09 -0400 Message-ID: <4A1EAB31.7090604@sandeen.net> Date: Thu, 28 May 2009 10:18:09 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: Michael Weissenbacher , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: regarding the inode64 mount option Subject: Re: regarding the inode64 mount option References: <4A1E81D8.7010706@dermichi.com> <20090528145612.GA14684@infradead.org> In-Reply-To: <20090528145612.GA14684@infradead.org> 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: 1243524262 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26954 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Thu, May 28, 2009 at 02:21:44PM +0200, Michael Weissenbacher ... >> I haven't found any definitive clear documentation abount the pro's >> and con's, so maybe you can give me some hints :-) > > The only reason speaking against inode64 are old buggy programs that > can't cope with a 64bit ino_t, Eric had a quite scary list of those > in Fedora somewhere.. http://sandeen.net/wordpress/?p=9 -Eric From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 10:35:04 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SFZ240260824 for ; Thu, 28 May 2009 10:35:04 -0500 X-ASG-Debug-ID: 1243524917-64bb035f0000-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 BB7872B7AAC for ; Thu, 28 May 2009 08:35:17 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id DOTFZhjeHwN3J0cd for ; Thu, 28 May 2009 08:35:17 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9hdV-0004VN-DM; Thu, 28 May 2009 15:35:17 +0000 Date: Thu, 28 May 2009 11:35:17 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/9] Make libxfs.h optional Subject: Re: [PATCH 2/9] Make libxfs.h optional Message-ID: <20090528153517.GA15293@infradead.org> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-3-git-send-email-sandeen@sandeen.net> <20090528095749.GB651@infradead.org> <4A1EA6E5.50805@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A1EA6E5.50805@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: 1243524917 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, May 28, 2009 at 09:59:49AM -0500, Eric Sandeen wrote: > Christoph Hellwig wrote: > > On Wed, May 27, 2009 at 01:53:26PM -0500, Eric Sandeen wrote: > >> libxfs.h is really only needed for the loggen test; > >> make it config-time optional. > > > > Maybe we should just move loggen into xfsprogs? > > Perhaps, though it has no use outside of qa ... even if we do that it'll > take a while to trickle into people's xfsprogs, so any problem with > putting this patch in for now, even if we move loggen? I will send a patch to add loggen to xfsprogs ASAP. After that we can remove loggen and thus the requirement for libxfs.h from xfstests completely. The tests that use loggen would ismply check for a xfs_loggen binary in their PATH and not run, so far less drama then the current situation. > > Thanks, > -Eric > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs ---end quoted text--- From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 10:43:25 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_62,J_CHICKENPOX_63,J_CHICKENPOX_64,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SFhOSh261229 for ; Thu, 28 May 2009 10:43:25 -0500 X-ASG-Debug-ID: 1243525418-3b75010b0000-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 BE01C1D37B3C for ; Thu, 28 May 2009 08:43:38 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id jMrJjU8GF85YoVB9 for ; Thu, 28 May 2009 08:43:38 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9hla-0005hK-Ci for xfs@oss.sgi.com; Thu, 28 May 2009 15:43:38 +0000 Date: Thu, 28 May 2009 11:43:38 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH, RFC] xfsprogs: add xfs_loggen Subject: [PATCH, RFC] xfsprogs: add xfs_loggen Message-ID: <20090528154338.GA20712@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: 1243525418 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The loggen utility in xfstests is the only remaining reason why something outside libxfs would need libxfs, libxlog and their headers. So just move it to xfsprogs but only install it with a special make install-qa-tools so that it does not get installed by default. Still easier to provide an xfsprogs-qa subpackage for those that want to run xfsqa. Maybe we should also drop the current install-qa rule at the same time and just make install-qa-tools install-qa? Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/Makefile =================================================================== --- xfsprogs-dev.orig/Makefile 2009-05-28 15:22:48.000000000 +0000 +++ xfsprogs-dev/Makefile 2009-05-28 15:37:39.000000000 +0000 @@ -20,7 +20,7 @@ LIB_SUBDIRS = libxfs libxlog libxcmd libhandle libdisk TOOL_SUBDIRS = copy db estimate fsck fsr growfs io logprint mkfs quota \ - mdrestore repair rtcp reno m4 man doc po debian build + mdrestore repair rtcp reno loggen m4 man doc po debian build SUBDIRS = include $(LIB_SUBDIRS) $(TOOL_SUBDIRS) @@ -89,6 +89,8 @@ install-qa: install $(addsuffix -install-qa,$(SUBDIRS)) +install-qa-tools: default $(addsuffix -install-qa-tools,$(SUBDIRS)) + %-install: $(MAKE) -C $* install @@ -98,6 +100,9 @@ %-install-qa: $(MAKE) -C $* install-qa +%-install-qa-tools: + $(MAKE) -C $* install-qa-tools + distclean: clean rm -f $(LDIRT) Index: xfsprogs-dev/loggen/Makefile =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfsprogs-dev/loggen/Makefile 2009-05-28 15:33:06.000000000 +0000 @@ -0,0 +1,22 @@ + +TOPDIR = .. +include $(TOPDIR)/include/builddefs + +LTCOMMAND = xfs_loggen +CFILES = loggen.c + +LLDLIBS = $(LIBXLOG) +LTDEPENDENCIES = $(LIBXFS) $(LIBXLOG) +LLDFLAGS = -static + +default: $(LTCOMMAND) + +include $(BUILDRULES) + +install: + +install-qa-tools: default + $(INSTALL) -m 755 -d $(PKG_BIN_DIR) + $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) + +install-dev: Index: xfsprogs-dev/loggen/loggen.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfsprogs-dev/loggen/loggen.c 2009-05-28 15:29:44.000000000 +0000 @@ -0,0 +1,320 @@ +/* + * Copyright (c) 2000-2003 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 + */ + +/* + * + * loggen: Generate log entries. Very much incomplete. The empty log + * record is a bit of a misnomer since we need to jump through + * hoops to get a log record that parses ok yet does nothing. + * + * - dxm 29/09/00 + */ + +#include +#include +#include + + +char *progname; + +static void usage(void) +{ + fprintf(stderr, "Usage: %s\n" +" set up parameters before writing record(s):\n" +" -f f - set format\n" +" -u u - set uuid\n" +" -c c - set cycle\n" +" -b b - set block\n" +" -C c - set tail cycle\n" +" -B b - set tail block\n" +" write log record(s):\n" +" -z n - write n zero block(s) (1BB)\n" +" -e n - write n empty record(s) (2BB)\n" +" -m n - write n unmount record(s) (2BB)\n" +"\n" +" redirect stdout to external log partition, or pipe to\n" +" dd with appropriate parameters to stuff into internal log.\n", + progname); + exit(1); +} + +int bufblocks = 0; +void *buf = NULL; +int param_cycle = 1; +int param_block = 0; +int param_tail_cycle = 1; +int param_tail_block = 0; +int param_fmt = XLOG_FMT; +uuid_t param_uuid = { 0 }; + +void loggen_alloc(int blocks) +{ + if (!(buf = realloc(buf, blocks * BBSIZE))) { + fprintf(stderr, "failed to allocate %d block(s)\n", blocks); + exit(1); + } + memset(buf, 0, blocks * BBSIZE); + bufblocks = blocks; +} + +void loggen_write(void) +{ + if (!buf) { + fprintf(stderr, "no buffer allocated\n"); + exit(1); + } + + if (fwrite(buf, BBSIZE, bufblocks, stdout) != bufblocks) { + perror("fwrite"); + exit(1); + } + +} + +void loggen_zero(int count) +{ + if (!count) + count = 1; + + fprintf(stderr, " *** zero block (1BB) x %d\n", count); + loggen_alloc(1); + while (count--) + loggen_write(); +} + +void loggen_unmount(int count) +{ + xlog_rec_header_t *head; + xlog_op_header_t *op; + /* the data section must be 32 bit size aligned */ + struct { + __uint16_t magic; + __uint16_t pad1; + __uint32_t pad2; /* may as well make it 64 bits */ + } magic = { + XLOG_UNMOUNT_TYPE, 0, 0}; + + if (!count) + count = 1; + + fprintf(stderr, " *** unmount record (2BB) x %d\n", count); + loggen_alloc(2); + + head = (xlog_rec_header_t *) buf; + op = (xlog_op_header_t *) (((char *)buf) + BBSIZE); + + /* note that oh_tid actually contains the cycle number + * and the tid is stored in h_cycle_data[0] - that's the + * way things end up on disk. + */ + + head->h_magicno = cpu_to_be32(XLOG_HEADER_MAGIC_NUM); + head->h_cycle = cpu_to_be32(param_cycle); + head->h_version = cpu_to_be32(1); + head->h_len = cpu_to_be32(20); + head->h_chksum = cpu_to_be32(0); + head->h_prev_block = cpu_to_be32(-1); + head->h_num_logops = cpu_to_be32(1); + head->h_cycle_data[0] = cpu_to_be32(0xb0c0d0d0); + head->h_fmt = cpu_to_be32(param_fmt); + + head->h_tail_lsn = cpu_to_be64(xlog_assign_lsn(param_tail_cycle, + param_tail_block)); + + memcpy(head->h_fs_uuid, param_uuid, sizeof(uuid_t)); + + /* now a log unmount op */ + op->oh_tid = cpu_to_be32(param_cycle); + op->oh_len = cpu_to_be32(sizeof(magic)); + op->oh_clientid = XFS_LOG; + op->oh_flags = XLOG_UNMOUNT_TRANS; + op->oh_res2 = cpu_to_be16(0); + + /* and the data for this op */ + + memcpy(op + 1, &magic, sizeof(magic)); + + while (count--) { + head->h_lsn = + cpu_to_be64(xlog_assign_lsn(param_cycle, param_block++)); + + loggen_write(); + } +} + +void loggen_empty(int count) +{ + xlog_rec_header_t *head; + xlog_op_header_t *op1, *op2, *op3, *op4, *op5; + xfs_trans_header_t *trans; + xfs_buf_log_format_t blfs; + xfs_buf_log_format_t *blf; + int *data; + char *p; + + if (!count) + count = 1; + + fprintf(stderr, " *** empty record (2BB) x %d\n", count); + loggen_alloc(2); + + p = (char *)buf; + head = (xlog_rec_header_t *) p; + p += BBSIZE; + op1 = (xlog_op_header_t *) p; + p += sizeof(xlog_op_header_t); + op2 = (xlog_op_header_t *) p; + p += sizeof(xlog_op_header_t); + trans = (xfs_trans_header_t *) p; + p += sizeof(xfs_trans_header_t); + op3 = (xlog_op_header_t *) p; + p += sizeof(xlog_op_header_t); + blf = (xfs_buf_log_format_t *) p; + p += sizeof(xfs_buf_log_format_t); + op4 = (xlog_op_header_t *) p; + p += sizeof(xlog_op_header_t); + data = (int *)p; + p += sizeof(int); + op5 = (xlog_op_header_t *) p; + p += sizeof(xlog_op_header_t); + + /* note that oh_tid actually contains the cycle number + * and the tid is stored in h_cycle_data[0] - that's the + * way things end up on disk. + */ + + head->h_magicno = cpu_to_be32(XLOG_HEADER_MAGIC_NUM); + head->h_cycle = cpu_to_be32(param_cycle); + head->h_version = cpu_to_be32(1); + head->h_len = cpu_to_be32(5 * sizeof(xlog_op_header_t) + + sizeof(xfs_trans_header_t) + + sizeof(xfs_buf_log_format_t) + sizeof(int)); + head->h_chksum = cpu_to_be32(0); + head->h_prev_block = cpu_to_be32(-1); + head->h_num_logops = cpu_to_be32(5); + head->h_cycle_data[0] = cpu_to_be32(0xb0c0d0d0); + head->h_fmt = cpu_to_be32(param_fmt); + + head->h_tail_lsn = cpu_to_be64(xlog_assign_lsn(param_tail_cycle, + param_tail_block)); + + memcpy(head->h_fs_uuid, param_uuid, sizeof(uuid_t)); + + /* start */ + op1->oh_tid = cpu_to_be32(1); + op1->oh_len = cpu_to_be32(0); + op1->oh_clientid = XFS_TRANSACTION; + op1->oh_flags = XLOG_START_TRANS; + op1->oh_res2 = cpu_to_be16(0); + /* dummy */ + op2->oh_tid = cpu_to_be32(0xb0c0d0d0); + op2->oh_len = cpu_to_be32(sizeof(xfs_trans_header_t)); + op2->oh_clientid = XFS_TRANSACTION; + op2->oh_flags = 0; + op2->oh_res2 = cpu_to_be16(0); + /* dummy transaction - this stuff doesn't get endian converted */ + trans->th_magic = XFS_TRANS_MAGIC; + trans->th_type = XFS_TRANS_DUMMY1; + trans->th_tid = 0; + trans->th_num_items = 1; + /* buffer */ + op3->oh_tid = cpu_to_be32(0xb0c0d0d0); + op3->oh_len = cpu_to_be32(sizeof(xfs_buf_log_format_t)); + op3->oh_clientid = XFS_TRANSACTION; + op3->oh_flags = 0; + op3->oh_res2 = cpu_to_be16(0); + /* an empty buffer too */ + blfs.blf_type = XFS_LI_BUF; + blfs.blf_size = 2; + blfs.blf_flags = XFS_BLI_CANCEL; + blfs.blf_blkno = 1; + blfs.blf_map_size = 1; + blfs.blf_data_map[0] = 0; + memcpy(blf, &blfs, sizeof(blfs)); + /* commit */ + op4->oh_tid = cpu_to_be32(0xb0c0d0d0); + op4->oh_len = cpu_to_be32(sizeof(int)); + op4->oh_clientid = XFS_TRANSACTION; + op4->oh_flags = 0; + op4->oh_res2 = cpu_to_be16(0); + /* and the data */ + *data = *(int *)(char *)"FISH"; /* this won't get written (I hope) */ + /* commit */ + op5->oh_tid = cpu_to_be32(0xb0c0d0d0); + op5->oh_len = cpu_to_be32(0); + op5->oh_clientid = XFS_TRANSACTION; + op5->oh_flags = XLOG_COMMIT_TRANS; + op5->oh_res2 = cpu_to_be16(0); + + while (count--) { + head->h_lsn = + cpu_to_be64(xlog_assign_lsn(param_cycle, param_block++)); + + loggen_write(); + } +} + +int main(int argc, char *argv[]) +{ + int c; + + progname = basename(argv[0]); + + fprintf(stderr, "*** loggen\n"); + + if (argc < 2) + usage(); + + while ((c = getopt(argc, argv, "f:u:c:b:C:B:z:e:m:")) != -1) { + switch (c) { + case 'f': + param_fmt = atoi(optarg); + break; + case 'u': + memset(param_uuid, atoi(optarg), sizeof(param_uuid)); + break; + case 'c': + param_cycle = atoi(optarg); + break; + case 'b': + param_block = atoi(optarg); + break; + case 'C': + param_tail_cycle = atoi(optarg); + break; + case 'B': + param_tail_block = atoi(optarg); + break; + + case 'z': + loggen_zero(atoi(optarg)); + break; + case 'e': + loggen_empty(atoi(optarg)); + break; + case 'm': + loggen_unmount(atoi(optarg)); + break; + + default: + fprintf(stderr, "unknown option\n"); + usage(); + } + } + return 0; +} Index: xfsprogs-dev/include/buildrules =================================================================== --- xfsprogs-dev.orig/include/buildrules 2009-05-28 15:37:24.000000000 +0000 +++ xfsprogs-dev/include/buildrules 2009-05-28 15:37:30.000000000 +0000 @@ -69,7 +69,7 @@ $(_FORCE): -.PHONY : depend install-qa +.PHONY : depend install-qa install-qa-tools DEPENDSCRIPT := $(MAKEDEPEND) $(DEPENDFLAGS) -f - -- $(CFLAGS) -- $(CFILES) | \ $(SED) \ From sandeen@sandeen.net Thu May 28 10:46:45 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SFkiv3261322 for ; Thu, 28 May 2009 10:46:45 -0500 X-ASG-Debug-ID: 1243525616-220001b70000-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 BF8B71D37B7B for ; Thu, 28 May 2009 08:46:57 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id nrSY72SY6wBn1SI4 for ; Thu, 28 May 2009 08:46:57 -0700 (PDT) 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 n4SFkluC006472; Thu, 28 May 2009 11:46:47 -0400 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 n4SFkkhW017885; Thu, 28 May 2009 11:46:47 -0400 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 n4SFkkVZ026793; Thu, 28 May 2009 11:46:46 -0400 Message-ID: <4A1EB1E6.6040606@sandeen.net> Date: Thu, 28 May 2009 10:46:46 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0.5/9] Replace MAXNAMELEN with NAME_MAX + 1 Subject: [PATCH 0.5/9] Replace MAXNAMELEN with NAME_MAX + 1 References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-2-git-send-email-sandeen@sandeen.net> <20090528095657.GA651@infradead.org> In-Reply-To: <20090528095657.GA651@infradead.org> 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: 1243525618 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26955 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Drop the xfs-specific MAXNAMELEN in favor of the Posix NAME_MAX This makes it easier to lose libxfs.h later. Signed-off-by: Eric Sandeen --- diff --git a/dmapi/src/common/lib/print.c b/dmapi/src/common/lib/print.c index 373064f..bbed8f3 100644 --- a/dmapi/src/common/lib/print.c +++ b/dmapi/src/common/lib/print.c @@ -25,9 +25,6 @@ #include #include -#ifdef linux -#define MAXNAMELEN 256 -#endif /* * Define some standard formats for the printf statements below. @@ -96,7 +93,7 @@ print_one_mount_event( char hans1[HANDLE_STR], hans2[HANDLE_STR], hans3[HANDLE_STR]; void *namp1, *namp2; size_t nlen1, nlen2; - char nams1[MAXNAMELEN], nams2[MAXNAMELEN]; + char nams1[NAME_MAX + 1], nams2[NAME_MAX + 1]; mode_t mode; #if VERITAS_21 @@ -207,7 +204,7 @@ print_one_message( void *hanp1, *hanp2, *namp1, *namp2; u_int hlen1, hlen2, nlen1, nlen2; char hans1[HANDLE_STR], hans2[HANDLE_STR]; - char nams1[MAXNAMELEN], nams2[MAXNAMELEN]; + char nams1[NAME_MAX + 1], nams2[NAME_MAX + 1]; /***** USER EVENTS *****/ diff --git a/dmapi/src/suite1/cmd/print_event.c b/dmapi/src/suite1/cmd/print_event.c index 9a4beba..e34cafe 100644 --- a/dmapi/src/suite1/cmd/print_event.c +++ b/dmapi/src/suite1/cmd/print_event.c @@ -65,8 +65,6 @@ clear_region_event( size_t hlen, char *hans1); -#define MAXNAMELEN 256 - /* * Keep these global so the exit_handler and err_msg routines can get to them */ @@ -294,7 +292,7 @@ print_one_mount_event( char hans1[HANDLE_STR], hans2[HANDLE_STR], hans3[HANDLE_STR]; void *namp1, *namp2; size_t nlen1, nlen2; - char nams1[MAXNAMELEN], nams2[MAXNAMELEN]; + char nams1[NAME_MAX + 1], nams2[NAME_MAX + 1]; mode_t mode; #if VERITAS_21 @@ -391,7 +389,7 @@ handle_message( void *hanp1, *hanp2, *namp1, *namp2; u_int hlen1, hlen2, nlen1, nlen2; char hans1[HANDLE_STR], hans2[HANDLE_STR]; - char nams1[MAXNAMELEN], nams2[MAXNAMELEN]; + char nams1[NAME_MAX + 1], nams2[NAME_MAX + 1]; /* * Set the defaults for responding to events diff --git a/dmapi/src/suite2/src/dm_test_daemon.c b/dmapi/src/suite2/src/dm_test_daemon.c index 214750a..02f5d0e 100644 --- a/dmapi/src/suite2/src/dm_test_daemon.c +++ b/dmapi/src/suite2/src/dm_test_daemon.c @@ -39,10 +39,6 @@ #include #include -#ifdef linux -#define MAXNAMELEN 256 -#endif - /* * Define some standard formats for the printf statements below. */ @@ -291,7 +287,7 @@ print_one_mount_event( char hans1[HANDLE_STR], hans2[HANDLE_STR], hans3[HANDLE_STR]; void *namp1, *namp2; size_t nlen1, nlen2; - char nams1[MAXNAMELEN], nams2[MAXNAMELEN]; + char nams1[NAME_MAX + 1], nams2[NAME_MAX + 1]; mode_t mode; #if VERITAS @@ -386,7 +382,7 @@ handle_message( void *hanp1, *hanp2, *namp1, *namp2; u_int hlen1, hlen2, nlen1, nlen2; char hans1[HANDLE_STR], hans2[HANDLE_STR]; - char nams1[MAXNAMELEN], nams2[MAXNAMELEN]; + char nams1[NAME_MAX + 1], nams2[NAME_MAX + 1]; void *fs_hanp; size_t fs_hlen; dm_timestruct_t *pending_time; diff --git a/ltp/fsstress.c b/ltp/fsstress.c index 308b9bb..6978381 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -477,7 +477,7 @@ attr_list_path(pathname_t *name, int flags, attrlist_cursor_t *cursor) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; pathname_t newname; int rval; @@ -501,7 +501,7 @@ attr_list_path(pathname_t *name, int attr_remove_path(pathname_t *name, const char *attrname, int flags) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; pathname_t newname; int rval; @@ -521,7 +521,7 @@ int attr_set_path(pathname_t *name, const char *attrname, const char *attrvalue, const int valuelength, int flags) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; pathname_t newname; int rval; @@ -556,7 +556,7 @@ check_cwd(void) int creat_path(pathname_t *name, mode_t mode) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; pathname_t newname; int rval; @@ -697,7 +697,7 @@ doproc(void) int fent_to_name(pathname_t *name, flist_t *flp, fent_t *fep) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; int i; fent_t *pfep; int e; @@ -762,7 +762,7 @@ free_pathname(pathname_t *name) int generate_fname(fent_t *fep, int ft, pathname_t *name, int *idp, int *v) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; flist_t *flp; int id; int j; @@ -890,7 +890,7 @@ init_pathname(pathname_t *name) int lchown_path(pathname_t *name, uid_t owner, gid_t group) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; pathname_t newname; int rval; @@ -909,8 +909,8 @@ lchown_path(pathname_t *name, uid_t owner, gid_t group) int link_path(pathname_t *name1, pathname_t *name2) { - char buf1[MAXNAMELEN]; - char buf2[MAXNAMELEN]; + char buf1[NAME_MAX + 1]; + char buf2[NAME_MAX + 1]; int down1; pathname_t newname1; pathname_t newname2; @@ -964,7 +964,7 @@ link_path(pathname_t *name1, pathname_t *name2) int lstat64_path(pathname_t *name, struct stat64 *sbuf) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; pathname_t newname; int rval; @@ -1000,7 +1000,7 @@ make_freq_table(void) int mkdir_path(pathname_t *name, mode_t mode) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; pathname_t newname; int rval; @@ -1019,7 +1019,7 @@ mkdir_path(pathname_t *name, mode_t mode) int mknod_path(pathname_t *name, mode_t mode, dev_t dev) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; pathname_t newname; int rval; @@ -1040,7 +1040,7 @@ namerandpad(int id, char *buf, int i) { int bucket; static int buckets[] = - { 2, 4, 8, 16, 32, 64, 128, MAXNAMELEN - 1 }; + { 2, 4, 8, 16, 32, 64, 128, NAME_MAX }; int padlen; int padmod; @@ -1060,7 +1060,7 @@ namerandpad(int id, char *buf, int i) int open_path(pathname_t *name, int oflag) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; pathname_t newname; int rval; @@ -1079,7 +1079,7 @@ open_path(pathname_t *name, int oflag) DIR * opendir_path(pathname_t *name) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; pathname_t newname; DIR *rval; @@ -1120,7 +1120,7 @@ process_freq(char *arg) int readlink_path(pathname_t *name, char *lbuf, size_t lbufsiz) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; pathname_t newname; int rval; @@ -1139,8 +1139,8 @@ readlink_path(pathname_t *name, char *lbuf, size_t lbufsiz) int rename_path(pathname_t *name1, pathname_t *name2) { - char buf1[MAXNAMELEN]; - char buf2[MAXNAMELEN]; + char buf1[NAME_MAX + 1]; + char buf2[NAME_MAX + 1]; int down1; pathname_t newname1; pathname_t newname2; @@ -1194,7 +1194,7 @@ rename_path(pathname_t *name1, pathname_t *name2) int rmdir_path(pathname_t *name) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; pathname_t newname; int rval; @@ -1267,7 +1267,7 @@ show_ops(int flag, char *lead_str) int stat64_path(pathname_t *name, struct stat64 *sbuf) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; pathname_t newname; int rval; @@ -1286,7 +1286,7 @@ stat64_path(pathname_t *name, struct stat64 *sbuf) int symlink_path(const char *name1, pathname_t *name) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; pathname_t newname; int rval; @@ -1310,7 +1310,7 @@ symlink_path(const char *name1, pathname_t *name) int truncate64_path(pathname_t *name, off64_t length) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; pathname_t newname; int rval; @@ -1329,7 +1329,7 @@ truncate64_path(pathname_t *name, off64_t length) int unlink_path(pathname_t *name) { - char buf[MAXNAMELEN]; + char buf[NAME_MAX + 1]; pathname_t newname; int rval; diff --git a/src/dirperf.c b/src/dirperf.c index a222fff..459ae34 100644 --- a/src/dirperf.c +++ b/src/dirperf.c @@ -28,7 +28,6 @@ #include #include -#define MAXNAMELEN 256 #ifndef __sgi__ typedef unsigned int uint_t; #endif @@ -81,7 +80,7 @@ main(int argc, char **argv) DIR *dirp; int i; int j; - char name[MAXNAMELEN]; + char name[NAME_MAX + 1]; struct stat stb; double stime; @@ -150,8 +149,8 @@ main(int argc, char **argv) minchars = hexchars(lastsize - 1); if (nchars < minchars) nchars = minchars; - else if (nchars >= MAXNAMELEN) - nchars = MAXNAMELEN - 1; + else if (nchars >= NAME_MAX + 1) + nchars = NAME_MAX; if (ndirs > MAX_DIR_COUNT) ndirs = MAX_DIR_COUNT; if (ndirs < MIN_DIR_COUNT) diff --git a/src/dmiperf.c b/src/dmiperf.c index e27d783..bcd0625 100644 --- a/src/dmiperf.c +++ b/src/dmiperf.c @@ -34,7 +34,6 @@ #include #endif -#define MAXNAMELEN 256 #ifndef sgi typedef unsigned int uint_t; #endif @@ -92,7 +91,7 @@ main(int argc, char **argv) uint_t cursize; int i; int j; - char name[MAXNAMELEN]; + char name[NAME_MAX + 1]; char attr[DMFATTRLEN]; double stime; @@ -168,8 +167,8 @@ main(int argc, char **argv) minchars = hexchars(lastsize - 1); if (nchars < minchars) nchars = minchars; - else if (nchars >= MAXNAMELEN) - nchars = MAXNAMELEN - 1; + else if (nchars >= NAME_MAX + 1) + nchars = NAME_MAX; if (ndirs > MAX_DIR_COUNT) ndirs = MAX_DIR_COUNT; if (ndirs < MIN_DIR_COUNT) From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 10:48:09 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SFm9H9261349 for ; Thu, 28 May 2009 10:48:09 -0500 X-ASG-Debug-ID: 1243526064-715a016c0000-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 F304212614C6 for ; Thu, 28 May 2009 08:54:24 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 6Bp1MWt9iOsbp1yn for ; Thu, 28 May 2009 08:54:24 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9hqB-0006dx-4Y; Thu, 28 May 2009 15:48:23 +0000 Date: Thu, 28 May 2009 11:48:23 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0.5/9] Replace MAXNAMELEN with NAME_MAX + 1 Subject: Re: [PATCH 0.5/9] Replace MAXNAMELEN with NAME_MAX + 1 Message-ID: <20090528154823.GA25199@infradead.org> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-2-git-send-email-sandeen@sandeen.net> <20090528095657.GA651@infradead.org> <4A1EB1E6.6040606@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A1EB1E6.6040606@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: 1243526064 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, May 28, 2009 at 10:46:46AM -0500, Eric Sandeen wrote: > Drop the xfs-specific MAXNAMELEN in favor of the Posix NAME_MAX > > This makes it easier to lose libxfs.h later. Looks good. Reviewed-by: Christoph Hellwig From sandeen@sandeen.net Thu May 28 11:15:00 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SGF0ru262074 for ; Thu, 28 May 2009 11:15:00 -0500 X-ASG-Debug-ID: 1243527314-684500d60000-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 EFBB52B7FDF for ; Thu, 28 May 2009 09:15:14 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id fvEZUlQVXOG0TP4k for ; Thu, 28 May 2009 09:15:14 -0700 (PDT) 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 n4SGF5Jm016268; Thu, 28 May 2009 12:15:05 -0400 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 n4SGF5kw001242; Thu, 28 May 2009 12:15:05 -0400 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 n4SGF46Y003302; Thu, 28 May 2009 12:15:04 -0400 Message-ID: <4A1EB888.8000800@sandeen.net> Date: Thu, 28 May 2009 11:15:04 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/9] Make libxfs.h optional Subject: Re: [PATCH 2/9] Make libxfs.h optional References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-3-git-send-email-sandeen@sandeen.net> <20090528095749.GB651@infradead.org> <4A1EA6E5.50805@sandeen.net> <20090528153517.GA15293@infradead.org> In-Reply-To: <20090528153517.GA15293@infradead.org> 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: 1243527314 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26957 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Thu, May 28, 2009 at 09:59:49AM -0500, Eric Sandeen wrote: >> Christoph Hellwig wrote: >>> On Wed, May 27, 2009 at 01:53:26PM -0500, Eric Sandeen wrote: >>>> libxfs.h is really only needed for the loggen test; >>>> make it config-time optional. >>> Maybe we should just move loggen into xfsprogs? >> Perhaps, though it has no use outside of qa ... even if we do that it'll >> take a while to trickle into people's xfsprogs, so any problem with >> putting this patch in for now, even if we move loggen? > > I will send a patch to add loggen to xfsprogs ASAP. After that we can > remove loggen and thus the requirement for libxfs.h from xfstests > completely. The tests that use loggen would ismply check for a > xfs_loggen binary in their PATH and not run, so far less drama then > the current situation. Ok, sounds fine. -Eric From sandeen@sandeen.net Thu May 28 11:16:26 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SGGPnC262143 for ; Thu, 28 May 2009 11:16:26 -0500 X-ASG-Debug-ID: 1243527399-180203740000-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 64B612B8007 for ; Thu, 28 May 2009 09:16:40 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id di8W3MEDyMyn1Ao9 for ; Thu, 28 May 2009 09:16:40 -0700 (PDT) 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 n4SGGWA7016915; Thu, 28 May 2009 12:16:32 -0400 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 n4SGGVsV001733; Thu, 28 May 2009 12:16:31 -0400 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 n4SGGUlJ003570; Thu, 28 May 2009 12:16:31 -0400 Message-ID: <4A1EB8DE.40108@sandeen.net> Date: Thu, 28 May 2009 11:16:30 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/9 V2] Use xfs.h rather than libxfs.h Subject: [PATCH 1/9 V2] Use xfs.h rather than libxfs.h References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-2-git-send-email-sandeen@sandeen.net> <20090528095657.GA651@infradead.org> In-Reply-To: <20090528095657.GA651@infradead.org> 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: 1243527400 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26957 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Use xfs/xfs.h when possible rather than xfs/libxfs.h, now that libxfs.h isn't part of a normal xfsprogs-devel install. v2: take the MAXNAMELEN changes out of the mix and remove redefinitions of ioctls easily available from xfs.h Signed-off-by: Eric Sandeen --- diff --git a/aclocal.m4 b/aclocal.m4 index 52f1c7d..6cc5dce 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -405,6 +405,17 @@ AC_DEFUN([AC_PACKAGE_NEED_UUIDCOMPARE], AC_SUBST(libuuid) ]) +AC_DEFUN([AC_PACKAGE_NEED_XFS_XFS_H], + [ AC_CHECK_HEADERS([xfs/xfs.h]) + if test "$ac_cv_header_xfs_xfs_h" != "yes"; then + echo + echo 'FATAL ERROR: cannot find a valid header file.' + echo 'Install or upgrade the XFS development package.' + echo 'Alternatively, run "make install-dev" from the xfsprogs source.' + exit 1 + fi + ]) + AC_DEFUN([AC_PACKAGE_NEED_XFS_LIBXFS_H], [ AC_CHECK_HEADERS([xfs/libxfs.h]) if test "$ac_cv_header_xfs_libxfs_h" != "yes"; then @@ -500,8 +511,8 @@ AC_DEFUN([AC_PACKAGE_NEED_IRIX_LIBHANDLE], ]) AC_DEFUN([AC_PACKAGE_NEED_XFSCTL_MACRO], - [ AC_MSG_CHECKING([xfsctl from xfs/libxfs.h]) - AC_TRY_LINK([#include ], [ int x = xfsctl(0, 0, 0, 0); ], + [ AC_MSG_CHECKING([xfsctl from xfs/xfs.h]) + AC_TRY_LINK([#include ], [ int x = xfsctl(0, 0, 0, 0); ], [ echo ok ], [ echo echo 'FATAL ERROR: cannot find required macros in the XFS headers.' diff --git a/configure.in b/configure.in index 32a2496..f087454 100644 --- a/configure.in +++ b/configure.in @@ -44,6 +44,7 @@ in ;; *) AC_MULTILIB($enable_lib64) + AC_PACKAGE_NEED_XFS_XFS_H AC_PACKAGE_NEED_XFS_LIBXFS_H AC_PACKAGE_NEED_XFS_XQM_H AC_PACKAGE_NEED_XFSCTL_MACRO diff --git a/m4/package_xfslibs.m4 b/m4/package_xfslibs.m4 index cafd959..2c8d694 100644 --- a/m4/package_xfslibs.m4 +++ b/m4/package_xfslibs.m4 @@ -1,3 +1,13 @@ +AC_DEFUN([AC_PACKAGE_NEED_XFS_XFS_H], + [ AC_CHECK_HEADERS([xfs/xfs.h]) + if test "$ac_cv_header_xfs_xfs_h" != "yes"; then + echo + echo 'FATAL ERROR: cannot find a valid header file.' + echo 'Run "make install-qa" from the xfsprogs source.' + exit 1 + fi + ]) + AC_DEFUN([AC_PACKAGE_NEED_XFS_LIBXFS_H], [ AC_CHECK_HEADERS([xfs/libxfs.h]) if test "$ac_cv_header_xfs_libxfs_h" != "yes"; then diff --git a/src/global.h b/src/global.h index 158c1fa..61862f6 100644 --- a/src/global.h +++ b/src/global.h @@ -26,6 +26,10 @@ #include <../../xfsprogs/include/irix.h> #endif +#ifdef HAVE_XFS_XFS_H +#include +#endif + #ifdef HAVE_XFS_LIBXFS_H #include #endif diff --git a/src/godown.c b/src/godown.c index 4105aee..07b6980 100644 --- a/src/godown.c +++ b/src/godown.c @@ -18,20 +18,6 @@ #include "global.h" -/* These should be in libxfs.h */ -#ifndef XFS_IOC_GOINGDOWN -#define XFS_IOC_GOINGDOWN _IOR ('X', 125, __uint32_t) -#endif -#ifndef XFS_FSOP_GOING_FLAGS_DEFAULT -#define XFS_FSOP_GOING_FLAGS_DEFAULT 0x0 /* going down */ -#endif -#ifndef XFS_FSOP_GOING_FLAGS_LOGFLUSH -#define XFS_FSOP_GOING_FLAGS_LOGFLUSH 0x1 /* flush log */ -#endif -#ifndef XFS_FSOP_GOING_FLAGS_NOLOGFLUSH -#define XFS_FSOP_GOING_FLAGS_NOLOGFLUSH 0x2 /* don't flush log */ -#endif - static char *xprogname; diff --git a/src/iopat.c b/src/iopat.c index 1e7d61b..c06071f 100644 --- a/src/iopat.c +++ b/src/iopat.c @@ -18,7 +18,7 @@ #include #include -#include +#include struct xfs_flock64 f; int main(int argc, char **argv) diff --git a/src/t_immutable.c b/src/t_immutable.c index 667355b..07a36cd 100644 --- a/src/t_immutable.c +++ b/src/t_immutable.c @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include #include @@ -47,6 +47,10 @@ #define EXT2_APPEND_FL 0x00000020 #define EXT2_IOC_SETFLAGS _IOW('f', 2, long) +#ifndef XFS_SUPER_MAGIC +#define XFS_SUPER_MAGIC 0x58465342 +#endif + extern const char *__progname; static int fsetflag(const char *path, int fd, int on, int immutable) diff --git a/src/unwritten_mmap.c b/src/unwritten_mmap.c index 5e63486..aec6a69 100644 --- a/src/unwritten_mmap.c +++ b/src/unwritten_mmap.c @@ -2,7 +2,7 @@ #include #include #include -#include +#include #include /* diff --git a/src/xfsctl.c b/src/xfsctl.c index f8afb16..8fa3348 100644 --- a/src/xfsctl.c +++ b/src/xfsctl.c @@ -16,7 +16,7 @@ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#include +#include #include /* simple test program to try out a bunch of xfsctls: From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 11:22:12 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SGMAiq000441 for ; Thu, 28 May 2009 11:22:11 -0500 X-ASG-Debug-ID: 1243527744-17fd03dd0000-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 D74112B7DE2 for ; Thu, 28 May 2009 09:22:24 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id gXv1Y4oYDWCXtQnb for ; Thu, 28 May 2009 09:22:24 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9iN6-0003Br-I2; Thu, 28 May 2009 16:22:24 +0000 Date: Thu, 28 May 2009 12:22:24 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/9 V2] Use xfs.h rather than libxfs.h Subject: Re: [PATCH 1/9 V2] Use xfs.h rather than libxfs.h Message-ID: <20090528162224.GA28218@infradead.org> References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <1243450413-12681-2-git-send-email-sandeen@sandeen.net> <20090528095657.GA651@infradead.org> <4A1EB8DE.40108@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A1EB8DE.40108@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: 1243527744 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > +#ifndef XFS_SUPER_MAGIC > +#define XFS_SUPER_MAGIC 0x58465342 > +#endif This should eventually be replaced by just using platform_test_xfs_fd from xfs.h But for now the patch is fine, Reviewed-by: Christoph Hellwig From sandeen@sandeen.net Thu May 28 13:22:14 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SIMEW7004128 for ; Thu, 28 May 2009 13:22:14 -0500 X-ASG-Debug-ID: 1243534947-38f603250000-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 85BC82B8338 for ; Thu, 28 May 2009 11:22:27 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id lvH5vcjIIgqD70PG for ; Thu, 28 May 2009 11:22:27 -0700 (PDT) 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 n4SIMRuI020923 for ; Thu, 28 May 2009 14:22:27 -0400 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 n4SIMQUW029500 for ; Thu, 28 May 2009 14:22:26 -0400 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 n4SIMPsm004414 for ; Thu, 28 May 2009 14:22:26 -0400 Message-ID: <4A1ED661.5020202@sandeen.net> Date: Thu, 28 May 2009 13:22:25 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: xfs mailing list X-ASG-Orig-Subj: [PATCH] remove remaining useless if-before-frees Subject: [PATCH] remove remaining useless if-before-frees 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: 1243534948 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26967 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Just janitorial work, but this removes the last couple if-before-frees I could find in xfs with the tool from http://git.savannah.gnu.org/cgit/gnulib.git/plain/build-aux/useless-if-before-free Signed-off-by: Eric Sandeen --- Index: linux-2.6/fs/xfs/xfs_da_btree.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_da_btree.c +++ linux-2.6/fs/xfs/xfs_da_btree.c @@ -2116,9 +2116,7 @@ xfs_da_do_buf( goto exit1; } } - if (bplist) { - kmem_free(bplist); - } + kmem_free(bplist); if (mapp != &map) { kmem_free(mapp); } Index: linux-2.6/fs/xfs/xfs_mount.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_mount.c +++ linux-2.6/fs/xfs/xfs_mount.c @@ -211,8 +211,7 @@ xfs_free_perag( int agno; for (agno = 0; agno < mp->m_maxagi; agno++) - if (mp->m_perag[agno].pagb_list) - kmem_free(mp->m_perag[agno].pagb_list); + kmem_free(mp->m_perag[agno].pagb_list); kmem_free(mp->m_perag); } } From BATV+2652900130c009f22e44+2104+infradead.org+hch@bombadil.srs.infradead.org Thu May 28 13:48:54 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SImq6v004987 for ; Thu, 28 May 2009 13:48:53 -0500 X-ASG-Debug-ID: 1243536546-561b02da0000-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 255A32B89AE for ; Thu, 28 May 2009 11:49:07 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id IMlUhZuYTiGeH4XB for ; Thu, 28 May 2009 11:49:07 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1M9kf4-0004UD-NA; Thu, 28 May 2009 18:49:06 +0000 Date: Thu, 28 May 2009 14:49:06 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs mailing list X-ASG-Orig-Subj: Re: [PATCH] remove remaining useless if-before-frees Subject: Re: [PATCH] remove remaining useless if-before-frees Message-ID: <20090528184906.GA16974@infradead.org> References: <4A1ED661.5020202@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A1ED661.5020202@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: 1243536547 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From sandeen@redhat.com Thu May 28 15:33:10 2009 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=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SKXAwO009575 for ; Thu, 28 May 2009 15:33:10 -0500 X-ASG-Debug-ID: 1243542803-42b102a30000-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 4EFC51A3CCDB for ; Thu, 28 May 2009 13:33:23 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id 3dVPLXUzntCH8UlY for ; Thu, 28 May 2009 13:33:23 -0700 (PDT) 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 n4SKXKsa000711; Thu, 28 May 2009 16:33:20 -0400 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 n4SKXJjC032033; Thu, 28 May 2009 16:33:20 -0400 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 n4SKXHxt009125; Thu, 28 May 2009 16:33:18 -0400 Message-ID: <4A1EF50D.8090900@redhat.com> Date: Thu, 28 May 2009 15:33:17 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: xfs mailing list CC: Richard.Ems@cape-horn-eng.com X-ASG-Orig-Subj: [PATCH] xfstests 206: test for overflow in growfs size calculation Subject: [PATCH] xfstests 206: test for overflow in growfs size calculation 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: 1243542804 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-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.26975 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Test trim of last small AG for large filesystem resizes As reported at http://article.gmane.org/gmane.comp.file-systems.xfs.general/29187 this trimming may cause an overflow in the new size calculation. Patch to fix it, and testcase at http://article.gmane.org/gmane.comp.file-systems.xfs.general/29193 Signed-off-by: Eric Sandeen --- diff --git a/206 b/206 new file mode 100755 index 0000000..cb584f2 --- /dev/null +++ b/206 @@ -0,0 +1,82 @@ +#! /bin/sh +# FS QA Test No. 206 +# +# Test trim of last small AG for large filesystem resizes +# +# As reported at +# http://article.gmane.org/gmane.comp.file-systems.xfs.general/29187 +# this trimming may cause an overflow in the new size calculation. +# Patch and testcase at +# http://article.gmane.org/gmane.comp.file-systems.xfs.general/29193 +# +#----------------------------------------------------------------------- +# Copyright (c) 2009 Eric Sandeen. +# +# 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 +#----------------------------------------------------------------------- +# +# 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() +{ + umount $tmpdir + rmdir $tmpdir + rm -f $tmp + rm -f $tmpfile +} + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here + +# Modify as appropriate. +_supported_fs xfs +_supported_os IRIX Linux + +tmpfile=$TEST_DIR/fsfile.$$ +tmpdir=$TEST_DIR/tmpdir.$$ + +mkdir -p $tmpdir || _fail "!!! failed to create temp mount dir" + +echo "=== xfs_io ===" +xfs_io -f -c "truncate 19998630180864" $tmpfile \ + || _fail "!!! failed to truncate loopback file to correct size" + +echo "=== mkfs.xfs ===" +mkfs.xfs -f -bsize=4096 -dagsize=76288719b,size=3905982455b -llazy-count=0 $tmpfile \ + | sed -e "s,^meta-data=.*isize,meta-data=FILE isize,g" + +mount -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount" + +echo "=== xfs_growfs ===" +xfs_growfs $tmpdir \ + | sed -e "s,^meta-data=.*isize,meta-data=FILE isize,g" \ + | grep -v "data blocks changed" + +# _cleanup cleans up + +# success, all done +status=0 +exit diff --git a/206.out b/206.out new file mode 100644 index 0000000..14b2c34 --- /dev/null +++ b/206.out @@ -0,0 +1,20 @@ +QA output created by 206 +=== xfs_io === +=== mkfs.xfs === +meta-data=FILE isize=256 agcount=52, agsize=76288719 blks + = sectsz=512 attr=2 +data = bsize=4096 blocks=3905982455, imaxpct=5 + = sunit=0 swidth=0 blks +naming =version 2 bsize=4096 ascii-ci=0 +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 +=== xfs_growfs === +meta-data=FILE isize=256 agcount=52, agsize=76288719 blks + = sectsz=512 attr=2 +data = bsize=4096 blocks=3905982455, imaxpct=5 + = sunit=0 swidth=0 blks +naming =version 2 bsize=4096 ascii-ci=0 +log =internal bsize=4096 blocks=32768, version=2 + = sectsz=512 sunit=0 blks, lazy-count=0 +realtime =none extsz=4096 blocks=0, rtextents=0 diff --git a/group b/group index 0ac33c2..343aace 100644 --- a/group +++ b/group @@ -310,3 +310,4 @@ atime 203 ioctl auto 204 metadata rw auto 205 metadata rw auto +206 growfs auto quick From sandeen@sandeen.net Thu May 28 16:12:45 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SLCi3B011683 for ; Thu, 28 May 2009 16:12:44 -0500 X-ASG-Debug-ID: 1243545539-6ce8028f0000-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 605F3101F4BA for ; Thu, 28 May 2009 14:18:59 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id a7MtfLAu2LSBwHkI for ; Thu, 28 May 2009 14:18:59 -0700 (PDT) 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 n4SLCtcQ029740; Thu, 28 May 2009 17:12:55 -0400 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 n4SLCs6h001294; Thu, 28 May 2009 17:12:54 -0400 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 n4SLCrRt021887; Thu, 28 May 2009 17:12:54 -0400 Message-ID: <4A1EFE55.4020505@sandeen.net> Date: Thu, 28 May 2009 16:12:53 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: xfs mailing list CC: Richard.Ems@cape-horn-eng.com X-ASG-Orig-Subj: [PATCH V2] xfstests 206: test for overflow in growfs size calculation Subject: [PATCH V2] xfstests 206: test for overflow in growfs size calculation References: <4A1EF50D.8090900@redhat.com> In-Reply-To: <4A1EF50D.8090900@redhat.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: 1243545541 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-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.26978 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Test trim of last small AG for large filesystem resizes As reported at http://article.gmane.org/gmane.comp.file-systems.xfs.general/29187 this trimming may cause an overflow in the new size calculation. Patch to fix it, and testcase at http://article.gmane.org/gmane.comp.file-systems.xfs.general/29193 V2: now with proper expected (resized) output! Signed-off-by: Eric Sandeen --- diff --git a/206 b/206 new file mode 100755 index 0000000..dccf4c4 --- /dev/null +++ b/206 @@ -0,0 +1,85 @@ +#! /bin/sh +# FS QA Test No. 206 +# +# Test trim of last small AG for large filesystem resizes +# +# As reported at +# http://article.gmane.org/gmane.comp.file-systems.xfs.general/29187 +# this trimming may cause an overflow in the new size calculation. +# Patch and testcase at +# http://article.gmane.org/gmane.comp.file-systems.xfs.general/29193 +# +#----------------------------------------------------------------------- +# Copyright (c) 2009 Eric Sandeen. +# +# 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 +#----------------------------------------------------------------------- +# +# 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() +{ + umount $tmpdir + rmdir $tmpdir + rm -f $tmp + rm -f $tmpfile +} + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here + +# Modify as appropriate. +_supported_fs xfs +_supported_os IRIX Linux + +tmpfile=$TEST_DIR/fsfile.$$ +tmpdir=$TEST_DIR/tmpdir.$$ + +mkdir -p $tmpdir || _fail "!!! failed to create temp mount dir" + +echo "=== xfs_io ===" +xfs_io -f -c "truncate 19998630180864" $tmpfile \ + || _fail "!!! failed to truncate loopback file to correct size" + +echo "=== mkfs.xfs ===" +mkfs.xfs -f -bsize=4096 -dagsize=76288719b,size=3905982455b -llazy-count=0 $tmpfile \ + | sed -e "s,^meta-data=.*isize,meta-data=FILE isize,g" + +mount -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount" + +echo "=== xfs_growfs ===" +xfs_growfs $tmpdir \ + | sed -e "s,^meta-data=.*isize,meta-data=FILE isize,g" + +echo "=== xfs_info ===" +xfs_info $tmpdir \ + | sed -e "s,^meta-data=.*isize,meta-data=FILE isize,g" + +# _cleanup cleans up + +# success, all done +status=0 +exit diff --git a/206.out b/206.out new file mode 100644 index 0000000..b17f728 --- /dev/null +++ b/206.out @@ -0,0 +1,30 @@ +QA output created by 206 +=== xfs_io === +=== mkfs.xfs === +meta-data=FILE isize=256 agcount=52, agsize=76288719 blks + = sectsz=512 attr=2 +data = bsize=4096 blocks=3905982455, imaxpct=5 + = sunit=0 swidth=0 blks +naming =version 2 bsize=4096 ascii-ci=0 +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 +=== xfs_growfs === +meta-data=FILE isize=256 agcount=52, agsize=76288719 blks + = sectsz=512 attr=2 +data = bsize=4096 blocks=3905982455, imaxpct=5 + = sunit=0 swidth=0 blks +naming =version 2 bsize=4096 ascii-ci=0 +log =internal bsize=4096 blocks=32768, version=2 + = sectsz=512 sunit=0 blks, lazy-count=0 +realtime =none extsz=4096 blocks=0, rtextents=0 +data blocks changed from 3905982455 to 4882478016 +=== xfs_info === +meta-data=FILE isize=256 agcount=64, agsize=76288719 blks + = sectsz=512 attr=2 +data = bsize=4096 blocks=4882478016, imaxpct=5 + = sunit=0 swidth=0 blks +naming =version 2 bsize=4096 ascii-ci=0 +log =internal bsize=4096 blocks=32768, version=2 + = sectsz=512 sunit=0 blks, lazy-count=0 +realtime =none extsz=4096 blocks=0, rtextents=0 diff --git a/group b/group index 0ac33c2..343aace 100644 --- a/group +++ b/group @@ -310,3 +310,4 @@ atime 203 ioctl auto 204 metadata rw auto 205 metadata rw auto +206 auto growfs quick From sandeen@sandeen.net Thu May 28 16:48:01 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_62,J_CHICKENPOX_63,J_CHICKENPOX_64,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4SLm0ZG012909 for ; Thu, 28 May 2009 16:48:01 -0500 X-ASG-Debug-ID: 1243547293-33f002160000-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 E718B170C196 for ; Thu, 28 May 2009 14:48:13 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id wv60HPFWQ16WA5YF for ; Thu, 28 May 2009 14:48:13 -0700 (PDT) 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 n4SLm3Hp007860; Thu, 28 May 2009 17:48:04 -0400 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 n4SLm26d014482; Thu, 28 May 2009 17:48:03 -0400 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 n4SLm15O030715; Thu, 28 May 2009 17:48:02 -0400 Message-ID: <4A1F0691.7060302@sandeen.net> Date: Thu, 28 May 2009 16:48:01 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH, RFC] xfsprogs: add xfs_loggen Subject: Re: [PATCH, RFC] xfsprogs: add xfs_loggen References: <20090528154338.GA20712@infradead.org> In-Reply-To: <20090528154338.GA20712@infradead.org> 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: 1243547294 X-Barracuda-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.92 X-Barracuda-Spam-Status: No, SCORE=-0.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, COMMA_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.26979 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > The loggen utility in xfstests is the only remaining reason why > something outside libxfs would need libxfs, libxlog and their headers. > > So just move it to xfsprogs but only install it with a special > make install-qa-tools so that it does not get installed by default. > Still easier to provide an xfsprogs-qa subpackage for those that want > to run xfsqa. Ok, and the xfsqa tests can then skip loggen tests if it's not found. TBH I'd be pretty unlikely to bother with an xfsprogs-qa package for Fedora, consisting of exactly one binary... hardly seems worth it. But I guess I don't see a better way :) At least this way we can build it w/o the cross-package deps. Reviewed-by: Eric Sandeen > Maybe we should also drop the current install-qa rule at the same time > and just make install-qa-tools install-qa? > > > Signed-off-by: Christoph Hellwig > > Index: xfsprogs-dev/Makefile > =================================================================== > --- xfsprogs-dev.orig/Makefile 2009-05-28 15:22:48.000000000 +0000 > +++ xfsprogs-dev/Makefile 2009-05-28 15:37:39.000000000 +0000 > @@ -20,7 +20,7 @@ > > LIB_SUBDIRS = libxfs libxlog libxcmd libhandle libdisk > TOOL_SUBDIRS = copy db estimate fsck fsr growfs io logprint mkfs quota \ > - mdrestore repair rtcp reno m4 man doc po debian build > + mdrestore repair rtcp reno loggen m4 man doc po debian build > > SUBDIRS = include $(LIB_SUBDIRS) $(TOOL_SUBDIRS) > > @@ -89,6 +89,8 @@ > > install-qa: install $(addsuffix -install-qa,$(SUBDIRS)) > > +install-qa-tools: default $(addsuffix -install-qa-tools,$(SUBDIRS)) > + > %-install: > $(MAKE) -C $* install > > @@ -98,6 +100,9 @@ > %-install-qa: > $(MAKE) -C $* install-qa > > +%-install-qa-tools: > + $(MAKE) -C $* install-qa-tools > + > distclean: clean > rm -f $(LDIRT) > > Index: xfsprogs-dev/loggen/Makefile > =================================================================== > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > +++ xfsprogs-dev/loggen/Makefile 2009-05-28 15:33:06.000000000 +0000 > @@ -0,0 +1,22 @@ > + > +TOPDIR = .. > +include $(TOPDIR)/include/builddefs > + > +LTCOMMAND = xfs_loggen > +CFILES = loggen.c > + > +LLDLIBS = $(LIBXLOG) > +LTDEPENDENCIES = $(LIBXFS) $(LIBXLOG) > +LLDFLAGS = -static > + > +default: $(LTCOMMAND) > + > +include $(BUILDRULES) > + > +install: > + > +install-qa-tools: default > + $(INSTALL) -m 755 -d $(PKG_BIN_DIR) > + $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) > + > +install-dev: > Index: xfsprogs-dev/loggen/loggen.c > =================================================================== > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > +++ xfsprogs-dev/loggen/loggen.c 2009-05-28 15:29:44.000000000 +0000 > @@ -0,0 +1,320 @@ > +/* > + * Copyright (c) 2000-2003 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 > + */ > + > +/* > + * > + * loggen: Generate log entries. Very much incomplete. The empty log > + * record is a bit of a misnomer since we need to jump through > + * hoops to get a log record that parses ok yet does nothing. > + * > + * - dxm 29/09/00 > + */ > + > +#include > +#include > +#include > + > + > +char *progname; > + > +static void usage(void) > +{ > + fprintf(stderr, "Usage: %s\n" > +" set up parameters before writing record(s):\n" > +" -f f - set format\n" > +" -u u - set uuid\n" > +" -c c - set cycle\n" > +" -b b - set block\n" > +" -C c - set tail cycle\n" > +" -B b - set tail block\n" > +" write log record(s):\n" > +" -z n - write n zero block(s) (1BB)\n" > +" -e n - write n empty record(s) (2BB)\n" > +" -m n - write n unmount record(s) (2BB)\n" > +"\n" > +" redirect stdout to external log partition, or pipe to\n" > +" dd with appropriate parameters to stuff into internal log.\n", > + progname); > + exit(1); > +} > + > +int bufblocks = 0; > +void *buf = NULL; > +int param_cycle = 1; > +int param_block = 0; > +int param_tail_cycle = 1; > +int param_tail_block = 0; > +int param_fmt = XLOG_FMT; > +uuid_t param_uuid = { 0 }; > + > +void loggen_alloc(int blocks) > +{ > + if (!(buf = realloc(buf, blocks * BBSIZE))) { > + fprintf(stderr, "failed to allocate %d block(s)\n", blocks); > + exit(1); > + } > + memset(buf, 0, blocks * BBSIZE); > + bufblocks = blocks; > +} > + > +void loggen_write(void) > +{ > + if (!buf) { > + fprintf(stderr, "no buffer allocated\n"); > + exit(1); > + } > + > + if (fwrite(buf, BBSIZE, bufblocks, stdout) != bufblocks) { > + perror("fwrite"); > + exit(1); > + } > + > +} > + > +void loggen_zero(int count) > +{ > + if (!count) > + count = 1; > + > + fprintf(stderr, " *** zero block (1BB) x %d\n", count); > + loggen_alloc(1); > + while (count--) > + loggen_write(); > +} > + > +void loggen_unmount(int count) > +{ > + xlog_rec_header_t *head; > + xlog_op_header_t *op; > + /* the data section must be 32 bit size aligned */ > + struct { > + __uint16_t magic; > + __uint16_t pad1; > + __uint32_t pad2; /* may as well make it 64 bits */ > + } magic = { > + XLOG_UNMOUNT_TYPE, 0, 0}; > + > + if (!count) > + count = 1; > + > + fprintf(stderr, " *** unmount record (2BB) x %d\n", count); > + loggen_alloc(2); > + > + head = (xlog_rec_header_t *) buf; > + op = (xlog_op_header_t *) (((char *)buf) + BBSIZE); > + > + /* note that oh_tid actually contains the cycle number > + * and the tid is stored in h_cycle_data[0] - that's the > + * way things end up on disk. > + */ > + > + head->h_magicno = cpu_to_be32(XLOG_HEADER_MAGIC_NUM); > + head->h_cycle = cpu_to_be32(param_cycle); > + head->h_version = cpu_to_be32(1); > + head->h_len = cpu_to_be32(20); > + head->h_chksum = cpu_to_be32(0); > + head->h_prev_block = cpu_to_be32(-1); > + head->h_num_logops = cpu_to_be32(1); > + head->h_cycle_data[0] = cpu_to_be32(0xb0c0d0d0); > + head->h_fmt = cpu_to_be32(param_fmt); > + > + head->h_tail_lsn = cpu_to_be64(xlog_assign_lsn(param_tail_cycle, > + param_tail_block)); > + > + memcpy(head->h_fs_uuid, param_uuid, sizeof(uuid_t)); > + > + /* now a log unmount op */ > + op->oh_tid = cpu_to_be32(param_cycle); > + op->oh_len = cpu_to_be32(sizeof(magic)); > + op->oh_clientid = XFS_LOG; > + op->oh_flags = XLOG_UNMOUNT_TRANS; > + op->oh_res2 = cpu_to_be16(0); > + > + /* and the data for this op */ > + > + memcpy(op + 1, &magic, sizeof(magic)); > + > + while (count--) { > + head->h_lsn = > + cpu_to_be64(xlog_assign_lsn(param_cycle, param_block++)); > + > + loggen_write(); > + } > +} > + > +void loggen_empty(int count) > +{ > + xlog_rec_header_t *head; > + xlog_op_header_t *op1, *op2, *op3, *op4, *op5; > + xfs_trans_header_t *trans; > + xfs_buf_log_format_t blfs; > + xfs_buf_log_format_t *blf; > + int *data; > + char *p; > + > + if (!count) > + count = 1; > + > + fprintf(stderr, " *** empty record (2BB) x %d\n", count); > + loggen_alloc(2); > + > + p = (char *)buf; > + head = (xlog_rec_header_t *) p; > + p += BBSIZE; > + op1 = (xlog_op_header_t *) p; > + p += sizeof(xlog_op_header_t); > + op2 = (xlog_op_header_t *) p; > + p += sizeof(xlog_op_header_t); > + trans = (xfs_trans_header_t *) p; > + p += sizeof(xfs_trans_header_t); > + op3 = (xlog_op_header_t *) p; > + p += sizeof(xlog_op_header_t); > + blf = (xfs_buf_log_format_t *) p; > + p += sizeof(xfs_buf_log_format_t); > + op4 = (xlog_op_header_t *) p; > + p += sizeof(xlog_op_header_t); > + data = (int *)p; > + p += sizeof(int); > + op5 = (xlog_op_header_t *) p; > + p += sizeof(xlog_op_header_t); > + > + /* note that oh_tid actually contains the cycle number > + * and the tid is stored in h_cycle_data[0] - that's the > + * way things end up on disk. > + */ > + > + head->h_magicno = cpu_to_be32(XLOG_HEADER_MAGIC_NUM); > + head->h_cycle = cpu_to_be32(param_cycle); > + head->h_version = cpu_to_be32(1); > + head->h_len = cpu_to_be32(5 * sizeof(xlog_op_header_t) + > + sizeof(xfs_trans_header_t) + > + sizeof(xfs_buf_log_format_t) + sizeof(int)); > + head->h_chksum = cpu_to_be32(0); > + head->h_prev_block = cpu_to_be32(-1); > + head->h_num_logops = cpu_to_be32(5); > + head->h_cycle_data[0] = cpu_to_be32(0xb0c0d0d0); > + head->h_fmt = cpu_to_be32(param_fmt); > + > + head->h_tail_lsn = cpu_to_be64(xlog_assign_lsn(param_tail_cycle, > + param_tail_block)); > + > + memcpy(head->h_fs_uuid, param_uuid, sizeof(uuid_t)); > + > + /* start */ > + op1->oh_tid = cpu_to_be32(1); > + op1->oh_len = cpu_to_be32(0); > + op1->oh_clientid = XFS_TRANSACTION; > + op1->oh_flags = XLOG_START_TRANS; > + op1->oh_res2 = cpu_to_be16(0); > + /* dummy */ > + op2->oh_tid = cpu_to_be32(0xb0c0d0d0); > + op2->oh_len = cpu_to_be32(sizeof(xfs_trans_header_t)); > + op2->oh_clientid = XFS_TRANSACTION; > + op2->oh_flags = 0; > + op2->oh_res2 = cpu_to_be16(0); > + /* dummy transaction - this stuff doesn't get endian converted */ > + trans->th_magic = XFS_TRANS_MAGIC; > + trans->th_type = XFS_TRANS_DUMMY1; > + trans->th_tid = 0; > + trans->th_num_items = 1; > + /* buffer */ > + op3->oh_tid = cpu_to_be32(0xb0c0d0d0); > + op3->oh_len = cpu_to_be32(sizeof(xfs_buf_log_format_t)); > + op3->oh_clientid = XFS_TRANSACTION; > + op3->oh_flags = 0; > + op3->oh_res2 = cpu_to_be16(0); > + /* an empty buffer too */ > + blfs.blf_type = XFS_LI_BUF; > + blfs.blf_size = 2; > + blfs.blf_flags = XFS_BLI_CANCEL; > + blfs.blf_blkno = 1; > + blfs.blf_map_size = 1; > + blfs.blf_data_map[0] = 0; > + memcpy(blf, &blfs, sizeof(blfs)); > + /* commit */ > + op4->oh_tid = cpu_to_be32(0xb0c0d0d0); > + op4->oh_len = cpu_to_be32(sizeof(int)); > + op4->oh_clientid = XFS_TRANSACTION; > + op4->oh_flags = 0; > + op4->oh_res2 = cpu_to_be16(0); > + /* and the data */ > + *data = *(int *)(char *)"FISH"; /* this won't get written (I hope) */ > + /* commit */ > + op5->oh_tid = cpu_to_be32(0xb0c0d0d0); > + op5->oh_len = cpu_to_be32(0); > + op5->oh_clientid = XFS_TRANSACTION; > + op5->oh_flags = XLOG_COMMIT_TRANS; > + op5->oh_res2 = cpu_to_be16(0); > + > + while (count--) { > + head->h_lsn = > + cpu_to_be64(xlog_assign_lsn(param_cycle, param_block++)); > + > + loggen_write(); > + } > +} > + > +int main(int argc, char *argv[]) > +{ > + int c; > + > + progname = basename(argv[0]); > + > + fprintf(stderr, "*** loggen\n"); > + > + if (argc < 2) > + usage(); > + > + while ((c = getopt(argc, argv, "f:u:c:b:C:B:z:e:m:")) != -1) { > + switch (c) { > + case 'f': > + param_fmt = atoi(optarg); > + break; > + case 'u': > + memset(param_uuid, atoi(optarg), sizeof(param_uuid)); > + break; > + case 'c': > + param_cycle = atoi(optarg); > + break; > + case 'b': > + param_block = atoi(optarg); > + break; > + case 'C': > + param_tail_cycle = atoi(optarg); > + break; > + case 'B': > + param_tail_block = atoi(optarg); > + break; > + > + case 'z': > + loggen_zero(atoi(optarg)); > + break; > + case 'e': > + loggen_empty(atoi(optarg)); > + break; > + case 'm': > + loggen_unmount(atoi(optarg)); > + break; > + > + default: > + fprintf(stderr, "unknown option\n"); > + usage(); > + } > + } > + return 0; > +} > Index: xfsprogs-dev/include/buildrules > =================================================================== > --- xfsprogs-dev.orig/include/buildrules 2009-05-28 15:37:24.000000000 +0000 > +++ xfsprogs-dev/include/buildrules 2009-05-28 15:37:30.000000000 +0000 > @@ -69,7 +69,7 @@ > > $(_FORCE): > > -.PHONY : depend install-qa > +.PHONY : depend install-qa install-qa-tools > > DEPENDSCRIPT := $(MAKEDEPEND) $(DEPENDFLAGS) -f - -- $(CFLAGS) -- $(CFILES) | \ > $(SED) \ > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From michael.monnerie@is.it-management.at Fri May 29 01:37:00 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4T6aw1g036501 for ; Fri, 29 May 2009 01:37:00 -0500 X-ASG-Debug-ID: 1243579396-051f015b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv1.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 880C71300EBF for ; Thu, 28 May 2009 23:43:17 -0700 (PDT) Received: from mailsrv1.zmi.at (mailsrv1.zmi.at [212.69.162.198]) by cuda.sgi.com with ESMTP id bxng5C8rDYfxewP1 for ; Thu, 28 May 2009 23:43:17 -0700 (PDT) Received: from mailsrv2.i.zmi.at (h081217106033.dyn.cm.kabsi.at [81.217.106.33]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mailsrv2.i.zmi.at", Issuer "power4u.zmi.at" (not verified)) by mailsrv1.zmi.at (Postfix) with ESMTP id 51EEE10D1 for ; Fri, 29 May 2009 08:37:11 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.0.0.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv2.i.zmi.at (Postfix) with ESMTPSA id 7AEC540DC06 for ; Fri, 29 May 2009 08:37:11 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH, RFC] xfsprogs: add xfs_reno(8) Subject: Re: [PATCH, RFC] xfsprogs: add xfs_reno(8) Date: Fri, 29 May 2009 08:37:06 +0200 User-Agent: KMail/1.10.3 (Linux/2.6.29.2-ZMI; KDE/4.1.3; x86_64; ; ) References: <20090528151804.GA31976@infradead.org> In-Reply-To: <20090528151804.GA31976@infradead.org> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart1395188.s3BalkoJBi"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200905290837.11098@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.162.198] X-Barracuda-Start-Time: 1243579397 X-Barracuda-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.27016 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --nextPart1395188.s3BalkoJBi Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On Donnerstag 28 Mai 2009 Christoph Hellwig wrote: > The Linux port of xfs_reno When used, does it move inodes on disk, or just change the numbers? Because there seems to be still danger on inode64, would it be worth to=20 sometimes run xfs_reno to get most files back to inode32, but still=20 mount with inode64? I know this would create big inodes again, but at=20 least old data would be safe. mfg zmi =2D-=20 // Michael Monnerie, Ing.BSc ----- http://it-management.at // Tel: 0660 / 415 65 31 .network.your.ideas. // PGP Key: "curl -s http://zmi.at/zmi.asc | gpg --import" // Fingerprint: AC19 F9D5 36ED CD8A EF38 500E CE14 91F7 1C12 09B4 // Keyserver: wwwkeys.eu.pgp.net Key-ID: 1C1209B4 --nextPart1395188.s3BalkoJBi 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) iEYEABECAAYFAkofgpcACgkQzhSR9xwSCbSsowCgw5cWr/ZSqv8FtG7z7hEieLBQ 1mAAn37xVA+EfhR5PKj/58lgOWtnCDYI =pX1q -----END PGP SIGNATURE----- --nextPart1395188.s3BalkoJBi-- From michael.monnerie@is.it-management.at Fri May 29 01:37:05 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4T6b5o2036514 for ; Fri, 29 May 2009 01:37:05 -0500 X-ASG-Debug-ID: 1243579038-6834036a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv1.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A9A842B9553 for ; Thu, 28 May 2009 23:37:18 -0700 (PDT) Received: from mailsrv1.zmi.at (mailsrv1.zmi.at [212.69.162.198]) by cuda.sgi.com with ESMTP id 3nDfj050FapDJmZF for ; Thu, 28 May 2009 23:37:18 -0700 (PDT) Received: from mailsrv2.i.zmi.at (h081217106033.dyn.cm.kabsi.at [81.217.106.33]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mailsrv2.i.zmi.at", Issuer "power4u.zmi.at" (not verified)) by mailsrv1.zmi.at (Postfix) with ESMTP id 82B1510D1 for ; Fri, 29 May 2009 08:37:17 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.0.0.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv2.i.zmi.at (Postfix) with ESMTPSA id C1E5140DC06 for ; Fri, 29 May 2009 08:37:17 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/9] Set default extN mount options Subject: Re: [PATCH 7/9] Set default extN mount options Date: Fri, 29 May 2009 08:37:17 +0200 User-Agent: KMail/1.10.3 (Linux/2.6.29.2-ZMI; KDE/4.1.3; x86_64; ; ) References: <1243450413-12681-1-git-send-email-sandeen@sandeen.net> <200905281235.21485@zmi.at> <4A1EA62C.8060008@sandeen.net> In-Reply-To: <4A1EA62C.8060008@sandeen.net> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart6966916.cL5FOGP90d"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200905290837.17539@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.162.198] X-Barracuda-Start-Time: 1243579039 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0003 1.0000 -2.0189 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.27015 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --nextPart6966916.cL5FOGP90d Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On Donnerstag 28 Mai 2009 Eric Sandeen wrote: > 'd be happy to include support for reiserfs as well. =A0I'd be even > happier if you tested this yourself and sent patches to make it work > :) I'm not a coder, really, but just changing your line: + ext2|ext3|ext4) to: + ext2|ext3|ext4|reiserfs) does the job here. I meant that part: diff --git a/common.rc b/common.rc index 78514f4..54c36f3 100644 =2D-- a/common.rc +++ b/common.rc @@ -49,6 +49,10 @@ _mount_opts() nfs) export MOUNT_OPTIONS=3D$NFS_MOUNT_OPTIONS ;; + ext2|ext3|ext4) + # acls & xattrs aren't turned on by default on ext$FOO + export MOUNT_OPTIONS=3D"-o acl,user_xattr $EXT_MOUNT_OPTIONS" I never used xfstest as well, and won't realistically have time to do=20 it. mfg zmi =2D-=20 // Michael Monnerie, Ing.BSc ----- http://it-management.at // Tel: 0660 / 415 65 31 .network.your.ideas. // PGP Key: "curl -s http://zmi.at/zmi.asc | gpg --import" // Fingerprint: AC19 F9D5 36ED CD8A EF38 500E CE14 91F7 1C12 09B4 // Keyserver: wwwkeys.eu.pgp.net Key-ID: 1C1209B4 --nextPart6966916.cL5FOGP90d 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) iEYEABECAAYFAkofgp0ACgkQzhSR9xwSCbRTdgCeI3wcWyTF7wHLd2BGFDgeZ949 fykAoOb+ocA0Nx80YJdKYMpdyHJZtFft =TtAK -----END PGP SIGNATURE----- --nextPart6966916.cL5FOGP90d-- From schulze@informatik.uni-tuebingen.de Fri May 29 07:57:08 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4TCv66Y054241 for ; Fri, 29 May 2009 07:57:08 -0500 X-ASG-Debug-ID: 1243601840-181303710000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx5.informatik.uni-tuebingen.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1CABC2BB551 for ; Fri, 29 May 2009 05:57:20 -0700 (PDT) Received: from mx5.informatik.uni-tuebingen.de (mx5.Informatik.Uni-Tuebingen.De [134.2.12.32]) by cuda.sgi.com with ESMTP id 1rv0tiVo9zJvihuM for ; Fri, 29 May 2009 05:57:20 -0700 (PDT) Received: from localhost (loopback [127.0.0.1]) by mx5.informatik.uni-tuebingen.de (Postfix) with ESMTP id 3D7F4125 for ; Fri, 29 May 2009 14:57:19 +0200 (DFT) Received: from mx5.informatik.uni-tuebingen.de ([127.0.0.1]) by localhost (mx5 [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 38954-02 for ; Fri, 29 May 2009 14:57:17 +0200 (DFT) Received: from zcs-bi.informatik.uni-tuebingen.de (zcs-bi.Informatik.Uni-Tuebingen.De [134.2.9.105]) by mx5.informatik.uni-tuebingen.de (Postfix) with ESMTP id 8846611C for ; Fri, 29 May 2009 14:57:16 +0200 (DFT) Received: from localhost (localhost [127.0.0.1]) by zcs-bi.informatik.uni-tuebingen.de (Postfix) with ESMTP id DEFED4ABB3F for ; Fri, 29 May 2009 14:56:30 +0200 (CEST) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: amavisd-new at zcs-bi.informatik.uni-tuebingen.de Received: from zcs-bi.informatik.uni-tuebingen.de ([127.0.0.1]) by localhost (zcs-bi.informatik.uni-tuebingen.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RF7K23unFq9P for ; Fri, 29 May 2009 14:56:30 +0200 (CEST) Received: from zcs-bi.informatik.uni-tuebingen.de (zcs-bi.informatik.uni-tuebingen.de [134.2.9.105]) by zcs-bi.informatik.uni-tuebingen.de (Postfix) with ESMTP id 2357D4ABB3B for ; Fri, 29 May 2009 14:56:30 +0200 (CEST) Date: Fri, 29 May 2009 14:56:30 +0200 (CEST) From: Jan Schulze To: xfs@oss.sgi.com Message-ID: <8418003.3381243601790069.JavaMail.root@zcs-bi.informatik.uni-tuebingen.de> In-Reply-To: <8097683.3361243601669032.JavaMail.root@zcs-bi.informatik.uni-tuebingen.de> X-ASG-Orig-Subj: xfsdump on mounted filesystem Subject: xfsdump on mounted filesystem MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [134.2.9.172] X-Mailer: Zimbra 5.0.15_GA_2851.MACOSXx86 (ZimbraWebClient - FF3.0 (Linux)/5.0.15_GA_2851.MACOSXx86) X-Virus-Scanned: by amavisd-new (McAfee AntiVirus) at informatik.uni-tuebingen.de X-Barracuda-Connect: mx5.Informatik.Uni-Tuebingen.De[134.2.12.32] X-Barracuda-Start-Time: 1243601842 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4659 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= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.27041 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Status: Clean Hi all, is it advisable to use xfsdump on a mounted file system, or am I likely to be running into problems when doing so? The Wikipedia article on XFS states "The xfsdump utility backs up an XFS filesystem in inode order, and in contrast to traditional UNIX file systems which must be unmounted before dumping to guarantee a consistent dump image, XFS file systems can be dumped while the file system is in use." However, I have not found any other reference, that supports this statement. Also, I do not really understand, what "backing up in inode orde" means. Anybody can clear this up? Best Regards, Jan From sjt.kar@gmail.com Fri May 29 08:19:34 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4TDJX5f055532 for ; Fri, 29 May 2009 08:19:33 -0500 X-ASG-Debug-ID: 1243603183-14bb00590000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from wf-out-1314.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2225F1A41256 for ; Fri, 29 May 2009 06:19:43 -0700 (PDT) Received: from wf-out-1314.google.com (wf-out-1314.google.com [209.85.200.168]) by cuda.sgi.com with ESMTP id eP5ue1zNqZK5EcN4 for ; Fri, 29 May 2009 06:19:43 -0700 (PDT) Received: by wf-out-1314.google.com with SMTP id 29so1932533wff.32 for ; Fri, 29 May 2009 06:19:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=aqy6c4NA/kV4JJaCJWv2/NAx4iVny0SOo/PByDW6mAU=; b=M+xgL6JHdKVdUxuSi8qLsVppVW211vjevkPUxgvuMtLm2htxIzY6qwkRtIAtDIpC6U SlV/yE132o1WuyLCDhzFMuq/VYKh29iWhoFGMpklYTE3qY6qtEBbJ8XttgTJ/BGy5Dft Y+beQZzVWa47kYmxXzHb7ydCwW5eAJWr5AQPU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=NIE5DtLKRsGAXSYFRxObw7Tv1tndDbQRH09rwALVBADqRzRjYWhsnyhEseC+M86K97 P58i+fT8NNGvSKl50OaN37EXzDt58ejxPZIzf4wgpG8I1k2XUsGJMoAW79kB5hQJk8TG /VHhacQMqFgA1zVDxNzadtQPPieCZmIulb7QM= MIME-Version: 1.0 Received: by 10.142.238.20 with SMTP id l20mr824331wfh.169.1243603179871; Fri, 29 May 2009 06:19:39 -0700 (PDT) In-Reply-To: <20090528121947.GB30037@infradead.org> References: <20090514171233.942489000@bombadil.infradead.org> <20090528121947.GB30037@infradead.org> Date: Fri, 29 May 2009 18:49:39 +0530 Message-ID: <921ca19c0905290619l46fa73abj380238058ce6efc6@mail.gmail.com> X-ASG-Orig-Subj: Re: [PATCH 9/7] xfs: remove SYNC_BDFLUSH Subject: Re: [PATCH 9/7] xfs: remove SYNC_BDFLUSH From: Sujit Karataparambil To: Christoph Hellwig Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: wf-out-1314.google.com[209.85.200.168] X-Barracuda-Start-Time: 1243603184 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.27043 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi, Newbie question? Kindly tell me where this code is called from do you have pagedeamon on vfs or is it some thing else? Sorry for bothering you. On Thu, May 28, 2009 at 5:49 PM, Christoph Hellwig wrot= e: > SYNC_BDFLUSH is a leftover from IRIX and rather misnamed for todays > code. =A0Make xfs_sync_fsdata and xfs_dq_sync use the SYNC_TRYLOCK flag > for not blocking on logs just as the inode sync code already does. > > For xfs_sync_fsdata it's a trivial 1:1 replacement, but for xfs_qm_sync > I use the opportunity to decouple the non-blocking lock case from the > different flushing modes, similar to the inode sync code. > > > Signed-off-by: Christoph Hellwig > > Index: xfs/fs/xfs/linux-2.6/xfs_sync.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c =A0 =A0 =A0 =A02009-05-27 13:02:= 57.426938830 +0200 > +++ xfs/fs/xfs/linux-2.6/xfs_sync.c =A0 =A0 2009-05-27 13:07:53.227939055= +0200 > @@ -350,7 +350,7 @@ xfs_sync_fsdata( > =A0 =A0 =A0 =A0 * If this is xfssyncd() then only sync the superblock if = we can > =A0 =A0 =A0 =A0 * lock it without sleeping and it is not pinned. > =A0 =A0 =A0 =A0 */ > - =A0 =A0 =A0 if (flags & SYNC_BDFLUSH) { > + =A0 =A0 =A0 if (flags & SYNC_TRYLOCK) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0ASSERT(!(flags & SYNC_WAIT)); > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0bp =3D xfs_getsb(mp, XFS_BUF_TRYLOCK); > @@ -415,7 +415,7 @@ xfs_quiesce_data( > > =A0 =A0 =A0 =A0/* push non-blocking */ > =A0 =A0 =A0 =A0xfs_sync_data(mp, 0); > - =A0 =A0 =A0 xfs_qm_sync(mp, SYNC_BDFLUSH); > + =A0 =A0 =A0 xfs_qm_sync(mp, SYNC_TRYLOCK); > =A0 =A0 =A0 =A0xfs_filestream_flush(mp); > > =A0 =A0 =A0 =A0/* push and block */ > @@ -565,8 +565,8 @@ xfs_sync_worker( > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FO= RCE); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_E= LSE_ASYNC); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* dgc: errors ignored here */ > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 error =3D xfs_qm_sync(mp, SYNC_BDFLUSH); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 error =3D xfs_sync_fsdata(mp, SYNC_BDFLUSH)= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 error =3D xfs_qm_sync(mp, SYNC_TRYLOCK); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 error =3D xfs_sync_fsdata(mp, SYNC_TRYLOCK)= ; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (xfs_log_need_covered(mp)) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0error =3D xfs_commit_dummy= _trans(mp, XFS_LOG_FORCE); > =A0 =A0 =A0 =A0} > Index: xfs/fs/xfs/quota/xfs_qm.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfs.orig/fs/xfs/quota/xfs_qm.c =A0 =A0 =A02009-05-27 13:04:00.6078422= 93 +0200 > +++ xfs/fs/xfs/quota/xfs_qm.c =A0 2009-05-27 13:10:21.688940102 +0200 > @@ -905,11 +905,6 @@ xfs_qm_dqdetach( > =A0 =A0 =A0 =A0} > =A0} > > -/* > - * This is called to sync quotas. We can be told to use non-blocking > - * semantics by either the SYNC_BDFLUSH flag or the absence of the > - * SYNC_WAIT flag. > - */ > =A0int > =A0xfs_qm_sync( > =A0 =A0 =A0 =A0xfs_mount_t =A0 =A0 *mp, > @@ -918,17 +913,13 @@ xfs_qm_sync( > =A0 =A0 =A0 =A0int =A0 =A0 =A0 =A0 =A0 =A0 recl, restarts; > =A0 =A0 =A0 =A0xfs_dquot_t =A0 =A0 *dqp; > =A0 =A0 =A0 =A0uint =A0 =A0 =A0 =A0 =A0 =A0flush_flags; > - =A0 =A0 =A0 boolean_t =A0 =A0 =A0 nowait; > =A0 =A0 =A0 =A0int =A0 =A0 =A0 =A0 =A0 =A0 error; > > =A0 =A0 =A0 =A0if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return 0; > > + =A0 =A0 =A0 flush_flags =3D (flags & SYNC_WAIT) ? XFS_QMOPT_SYNC : XFS_= QMOPT_DELWRI; > =A0 =A0 =A0 =A0restarts =3D 0; > - =A0 =A0 =A0 /* > - =A0 =A0 =A0 =A0* We won't block unless we are asked to. > - =A0 =A0 =A0 =A0*/ > - =A0 =A0 =A0 nowait =3D (boolean_t)(flags & SYNC_BDFLUSH || (flags & SYN= C_WAIT) =3D=3D 0); > > =A0 again: > =A0 =A0 =A0 =A0xfs_qm_mplist_lock(mp); > @@ -948,18 +939,10 @@ xfs_qm_sync( > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 * don't 'seem' to be dirty. ie. don't acq= uire dqlock. > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 * This is very similar to what xfs_sync d= oes with inodes. > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 */ > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (flags & SYNC_BDFLUSH) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (! XFS_DQ_IS_DIRTY(dqp)) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (flags & SYNC_TRYLOCK) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (!XFS_DQ_IS_DIRTY(dqp)) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0continue; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 } > - > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (nowait) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 /* > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0* Try to acquire the dqu= ot lock. We are NOT out of > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0* lock order, but we jus= t don't want to wait for this > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0* lock, unless somebody = wanted us to. > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0*/ > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (! xfs_qm_dqlock_nowait(= dqp)) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (!xfs_qm_dqlock_nowait(d= qp)) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0continue; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} else { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0xfs_dqlock(dqp); > @@ -976,7 +959,7 @@ xfs_qm_sync( > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* XXX a sentinel would be better */ > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0recl =3D XFS_QI_MPLRECLAIMS(mp); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (!xfs_dqflock_nowait(dqp)) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (nowait) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (flags & SYNC_TRYLOCK) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0xfs_dqunlo= ck(dqp); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0continue; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > @@ -994,7 +977,6 @@ xfs_qm_sync( > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 * Let go of the mplist lock. We don't wan= t to hold it > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 * across a disk write > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 */ > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 flush_flags =3D (nowait) ? XFS_QMOPT_DELWRI= : XFS_QMOPT_SYNC; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0xfs_qm_mplist_unlock(mp); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0xfs_dqtrace_entry(dqp, "XQM_SYNC: DQFLUSH"= ); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0error =3D xfs_qm_dqflush(dqp, flush_flags)= ; > Index: xfs/fs/xfs/linux-2.6/xfs_sync.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.h =A0 =A0 =A0 =A02009-05-27 13:07:= 58.997814418 +0200 > +++ xfs/fs/xfs/linux-2.6/xfs_sync.h =A0 =A0 2009-05-27 13:08:19.922972203= +0200 > @@ -29,9 +29,8 @@ typedef struct xfs_sync_work { > =A0 =A0 =A0 =A0struct completion =A0 =A0 =A0 *w_completion; > =A0} xfs_sync_work_t; > > -#define SYNC_WAIT =A0 =A0 =A0 =A0 =A0 =A0 =A00x0004 =A0/* wait for i/o t= o complete */ > -#define SYNC_BDFLUSH =A0 =A0 =A0 =A0 =A0 0x0008 =A0/* BDFLUSH is calling= -- don't block */ > -#define SYNC_TRYLOCK =A0 =A0 =A0 =A0 =A0 0x0020 =A0/* only try to lock i= nodes */ > +#define SYNC_WAIT =A0 =A0 =A0 =A0 =A0 =A0 =A00x0001 =A0/* wait for i/o t= o complete */ > +#define SYNC_TRYLOCK =A0 =A0 =A0 =A0 =A0 0x0002 =A0/* only try to lock i= nodes */ > > =A0int xfs_syncd_init(struct xfs_mount *mp); > =A0void xfs_syncd_stop(struct xfs_mount *mp); > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > --=20 -- Sujit K M From sandeen@sandeen.net Fri May 29 08:48:09 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4TDm8Ua057209 for ; Fri, 29 May 2009 08:48:08 -0500 X-ASG-Debug-ID: 1243605267-647500ba0000-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 765F11302398 for ; Fri, 29 May 2009 06:54:27 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id ww8DzIqWGgxgcLII for ; Fri, 29 May 2009 06:54:27 -0700 (PDT) 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 0479CA9B0D1; Fri, 29 May 2009 08:48:19 -0500 (CDT) Message-ID: <4A1FE7A2.9030302@sandeen.net> Date: Fri, 29 May 2009 08:48:18 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (Macintosh/20090302) MIME-Version: 1.0 To: Michael Monnerie CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH, RFC] xfsprogs: add xfs_reno(8) Subject: Re: [PATCH, RFC] xfsprogs: add xfs_reno(8) References: <20090528151804.GA31976@infradead.org> <200905290837.11098@zmi.at> In-Reply-To: <200905290837.11098@zmi.at> 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: 1243605269 X-Barracuda-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.27044 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Michael Monnerie wrote: > On Donnerstag 28 Mai 2009 Christoph Hellwig wrote: >> The Linux port of xfs_reno > > When used, does it move inodes on disk, or just change the numbers? Both. location == number == location == number ... > Because there seems to be still danger on inode64, would it be worth to > sometimes run xfs_reno to get most files back to inode32, but still > mount with inode64? I know this would create big inodes again, but at > least old data would be safe. that sounds like going in circles.... I wouldn't recommend it. Either you want 64-bit inodes.... or not. -Eric > mfg zmi From BATV+1d7cc76f4bbe3d08a03b+2105+infradead.org+hch@bombadil.srs.infradead.org Fri May 29 09:42:58 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4TEguOA060576 for ; Fri, 29 May 2009 09:42:58 -0500 X-ASG-Debug-ID: 1243608557-11c901040000-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 F161F13022F1 for ; Fri, 29 May 2009 07:49:17 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id mWYNe028H6zhXXy7 for ; Fri, 29 May 2009 07:49:17 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MA3IX-0001HR-KU; Fri, 29 May 2009 14:43:05 +0000 Date: Fri, 29 May 2009 10:43:05 -0400 From: Christoph Hellwig To: Jan Schulze Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfsdump on mounted filesystem Subject: Re: xfsdump on mounted filesystem Message-ID: <20090529144305.GA4882@infradead.org> References: <8097683.3361243601669032.JavaMail.root@zcs-bi.informatik.uni-tuebingen.de> <8418003.3381243601790069.JavaMail.root@zcs-bi.informatik.uni-tuebingen.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8418003.3381243601790069.JavaMail.root@zcs-bi.informatik.uni-tuebingen.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: 1243608557 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, May 29, 2009 at 02:56:30PM +0200, Jan Schulze wrote: > Hi all, > > is it advisable to use xfsdump on a mounted file system, or am I likely to be running into problems when doing so? In fact xfsdump requires a mounted filesystem. From BATV+1d7cc76f4bbe3d08a03b+2105+infradead.org+hch@bombadil.srs.infradead.org Fri May 29 09:47:30 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4TElT51061865 for ; Fri, 29 May 2009 09:47:30 -0500 X-ASG-Debug-ID: 1243608465-2b9e03260000-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 3700B1D37E38 for ; Fri, 29 May 2009 07:47:45 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id TDoFArgAIVyEr1Na for ; Fri, 29 May 2009 07:47:45 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MA3N2-0002Fg-Qt; Fri, 29 May 2009 14:47:44 +0000 Date: Fri, 29 May 2009 10:47:44 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH, RFC] xfsprogs: add xfs_loggen Subject: Re: [PATCH, RFC] xfsprogs: add xfs_loggen Message-ID: <20090529144744.GB4882@infradead.org> References: <20090528154338.GA20712@infradead.org> <4A1F0691.7060302@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A1F0691.7060302@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: 1243608465 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, May 28, 2009 at 04:48:01PM -0500, Eric Sandeen wrote: > Christoph Hellwig wrote: > > The loggen utility in xfstests is the only remaining reason why > > something outside libxfs would need libxfs, libxlog and their headers. > > > > So just move it to xfsprogs but only install it with a special > > make install-qa-tools so that it does not get installed by default. > > Still easier to provide an xfsprogs-qa subpackage for those that want > > to run xfsqa. > > Ok, and the xfsqa tests can then skip loggen tests if it's not found. Yeah. > TBH I'd be pretty unlikely to bother with an xfsprogs-qa package for > Fedora, consisting of exactly one binary... hardly seems worth it. > > But I guess I don't see a better way :) At least this way we can build > it w/o the cross-package deps. It would be really great to have it packaged.. From BATV+1d7cc76f4bbe3d08a03b+2105+infradead.org+hch@bombadil.srs.infradead.org Fri May 29 09:50:11 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4TEoBmQ062069 for ; Fri, 29 May 2009 09:50:11 -0500 X-ASG-Debug-ID: 1243608626-77ba00f70000-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 726961B40D24 for ; Fri, 29 May 2009 07:50:26 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id FBfqF1VFT3hfDCwV for ; Fri, 29 May 2009 07:50:26 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MA3Pd-00032Q-QP; Fri, 29 May 2009 14:50:25 +0000 Date: Fri, 29 May 2009 10:50:25 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs mailing list , Richard.Ems@cape-horn-eng.com X-ASG-Orig-Subj: Re: [PATCH V2] xfstests 206: test for overflow in growfs size calculation Subject: Re: [PATCH V2] xfstests 206: test for overflow in growfs size calculation Message-ID: <20090529145025.GA9205@infradead.org> References: <4A1EF50D.8090900@redhat.com> <4A1EFE55.4020505@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A1EFE55.4020505@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: 1243608626 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, May 28, 2009 at 04:12:53PM -0500, Eric Sandeen wrote: > Test trim of last small AG for large filesystem resizes > > As reported at > http://article.gmane.org/gmane.comp.file-systems.xfs.general/29187 > this trimming may cause an overflow in the new size calculation. > > Patch to fix it, and testcase at > http://article.gmane.org/gmane.comp.file-systems.xfs.general/29193 > > V2: now with proper expected (resized) output! This fails for me in really weird ways (Debian -testing, i386): --- 206.out 2009-05-29 14:44:54.000000000 +0000 +++ 206.out.bad 2009-05-29 14:46:01.000000000 +0000 @@ -1,30 +1,18 @@ QA output created by 206 === xfs_io === +ftruncate: File too large === mkfs.xfs === +existing superblock read failed: Success +mkfs.xfs: pwrite64 failed: Invalid argument meta-data=FILE isize=256 agcount=52, agsize=76288719 blks = sectsz=512 attr=2 data = bsize=4096 blocks=3905982455, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 -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 -=== xfs_growfs === -meta-data=FILE isize=256 agcount=52, agsize=76288719 blks - = sectsz=512 attr=2 -data = bsize=4096 blocks=3905982455, imaxpct=5 - = sunit=0 swidth=0 blks -naming =version 2 bsize=4096 ascii-ci=0 -log =internal bsize=4096 blocks=32768, version=2 - = sectsz=512 sunit=0 blks, lazy-count=0 -realtime =none extsz=4096 blocks=0, rtextents=0 -data blocks changed from 3905982455 to 4882478016 -=== xfs_info === -meta-data=FILE isize=256 agcount=64, agsize=76288719 blks - = sectsz=512 attr=2 -data = bsize=4096 blocks=4882478016, imaxpct=5 - = sunit=0 swidth=0 blks -naming =version 2 bsize=4096 ascii-ci=0 -log =internal bsize=4096 blocks=32768, version=2 +log =internal log bsize=4096 blocks=521728, version=2 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 +mount: /dev/loop0: can't read superblock +!!! failed to loopback mount +(see 206.full for details) +umount: /mnt/test/tmpdir.4994: not mounted From sandeen@sandeen.net Fri May 29 09:56:08 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4TEu8Ir062561 for ; Fri, 29 May 2009 09:56:08 -0500 X-ASG-Debug-ID: 1243608982-102400240000-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 037BB1D379EC for ; Fri, 29 May 2009 07:56:22 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id Hlo9GIe2FHDqep8z for ; Fri, 29 May 2009 07:56:22 -0700 (PDT) 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 n4TEuEIS016011; Fri, 29 May 2009 10:56:14 -0400 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 n4TEuDNd013412; Fri, 29 May 2009 10:56:13 -0400 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 n4TEuCPh014253; Fri, 29 May 2009 10:56:12 -0400 Message-ID: <4A1FF78C.7050406@sandeen.net> Date: Fri, 29 May 2009 09:56:12 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs mailing list X-ASG-Orig-Subj: Re: [PATCH V2] xfstests 206: test for overflow in growfs size calculation Subject: Re: [PATCH V2] xfstests 206: test for overflow in growfs size calculation References: <4A1EF50D.8090900@redhat.com> <4A1EFE55.4020505@sandeen.net> <20090529145025.GA9205@infradead.org> In-Reply-To: <20090529145025.GA9205@infradead.org> 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: 1243608983 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0007 1.0000 -2.0161 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-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.27049 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Thu, May 28, 2009 at 04:12:53PM -0500, Eric Sandeen wrote: >> Test trim of last small AG for large filesystem resizes >> >> As reported at >> http://article.gmane.org/gmane.comp.file-systems.xfs.general/29187 >> this trimming may cause an overflow in the new size calculation. >> >> Patch to fix it, and testcase at >> http://article.gmane.org/gmane.comp.file-systems.xfs.general/29193 >> >> V2: now with proper expected (resized) output! > > This fails for me in really weird ways (Debian -testing, i386): > > > --- 206.out 2009-05-29 14:44:54.000000000 +0000 > +++ 206.out.bad 2009-05-29 14:46:01.000000000 +0000 > @@ -1,30 +1,18 @@ > QA output created by 206 > === xfs_io === > +ftruncate: File too large hm, 32-bit. crud. Should probably just restrict the test to 64-bit systems, since we need a file > 16T. What's weirder is that xfs_io shoulda caused an error and caused the test to bail, I think. As for the rest of it, I need better error handling I guess :) -Eric From felixb@sgi.com Fri May 29 13:10:19 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4TIAJoQ079788 for ; Fri, 29 May 2009 13:10:19 -0500 Received: from attica.americas.sgi.com (attica.americas.sgi.com [128.162.236.44]) by relay2.corp.sgi.com (Postfix) with ESMTP id 99694304077 for ; Fri, 29 May 2009 11:10:31 -0700 (PDT) Received: by attica.americas.sgi.com (Postfix, from userid 29043) id 3C0DEA1FAB93; Fri, 29 May 2009 13:10:31 -0500 (CDT) From: Felix Blyakher To: xfs@oss.sgi.com Subject: XFS: prevent deadlock in quota code when recursing into filesystem Date: Fri, 29 May 2009 13:10:30 -0500 Message-Id: <1243620631-10749-1-git-send-email-felixb@sgi.com> X-Mailer: git-send-email 1.5.4.rc3 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We experinced the hang in the quota code when the memory allocation recursed into filesystem, and ended up in the xfs_qm_shake(), which deadlocked itself on an already taken lock. STACK TRACE FOR TASK: 0xe00000306a0f8000 (pdflush) 0 schedule+0x26ec [0xa0000001005a32ac] 1 __mutex_lock_slowpath+0xfc [0xa0000001005a5b3c] 2 mutex_lock+0x4c [0xa0000001005a5c4c] 3 xfs_dqlock+0x1c [0xa000000207d8035c] 4 xfs_qm_shake_freelist+0x9c [0xa000000207d9061c] 5 xfs_qm_shake+0xfc [0xa000000207d90d7c] 6 shrink_slab+0x10c [0xa00000010012d78c] 7 zone_reclaim+0x51c [0xa00000010012df9c] 8 get_page_from_freelist+0x1bc [0xa00000010011f93c] 9 __alloc_pages+0x9c [0xa00000010012037c] 10 alloc_page_interleave+0xfc [0xa000000100159e9c] 11 alloc_pages_current+0x12c [0xa00000010015a34c] 12 find_or_create_page+0x5c [0xa00000010011425c] 13 _xfs_buf_lookup_pages+0x18c [0xa0000002062ecc0c] 14 xfs_buf_get_flags+0xac [0xa0000002062ee90c] 15 xfs_buf_read_flags+0x3c [0xa0000002062f0b9c] 16 xfs_trans_read_buf+0x5c [0xa0000002062cdddc] 17 xfs_qm_dqtobp+0x4bc [0xa000000207d826fc] 18 xfs_qm_dqflush+0x1ac [0xa000000207d82a0c] 19 xfs_qm_sync+0x27c [0xa000000207d8c8fc] 20 xfs_qm_syncall+0x9c [0xa000000207d8a11c] 21 vfs_sync+0x9c [0xa0000002063026bc] 22 dsvfs_sync+0x3c [0xa0000002082d65bc] 23 vfs_sync+0x9c [0xa0000002063026bc] 24 bhvlock_vfsop_sync+0xcc [0xa0000002082b244c] 25 vfs_sync+0x9c [0xa0000002063026bc] 26 xfs_fs_write_super+0x7c [0xa0000002062fef3c] 27 sync_supers+0x1dc [0xa0000001001896bc] 28 wb_kupdate+0x6c [0xa00000010012280c] 29 pdflush+0x3cc [0xa0000001001247cc] 30 kthread+0x23c [0xa0000001000d401c] 31 kernel_thread_helper+0xcc [0xa0000001000133ec] 32 start_kernel_thread+0x1c [0xa0000001000094bc] The following patch (in a separate mail) addresses this problem. Felix From felixb@sgi.com Fri May 29 13:10:20 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4TIAJnk079796 for ; Fri, 29 May 2009 13:10:19 -0500 Received: from attica.americas.sgi.com (attica.americas.sgi.com [128.162.236.44]) by relay3.corp.sgi.com (Postfix) with ESMTP id DEE67AC00B; Fri, 29 May 2009 11:10:31 -0700 (PDT) Received: by attica.americas.sgi.com (Postfix, from userid 29043) id 5701BA1FAB98; Fri, 29 May 2009 13:10:31 -0500 (CDT) From: Felix Blyakher To: xfs@oss.sgi.com Cc: Felix Blyakher , Hedi Berriche Subject: [PATCH] xfs: prevent deadlock in xfs_qm_shake() Date: Fri, 29 May 2009 13:10:31 -0500 Message-Id: <1243620631-10749-2-git-send-email-felixb@sgi.com> X-Mailer: git-send-email 1.5.4.rc3 In-Reply-To: <1243620631-10749-1-git-send-email-felixb@sgi.com> References: <1243620631-10749-1-git-send-email-felixb@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean It's possible to recurse into filesystem from the memory allocation, which deadlocks in xfs_qm_shake(). Add check for __GFP_FS, and bailout if it is not set. Signed-off-by: Felix Blyakher Signed-off-by: Hedi Berriche --- fs/xfs/linux-2.6/kmem.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/fs/xfs/linux-2.6/kmem.h b/fs/xfs/linux-2.6/kmem.h index af6843c..d8d2321 100644 --- a/fs/xfs/linux-2.6/kmem.h +++ b/fs/xfs/linux-2.6/kmem.h @@ -103,7 +103,7 @@ extern void *kmem_zone_zalloc(kmem_zone_t *, unsigned int __nocast); static inline int kmem_shake_allow(gfp_t gfp_mask) { - return (gfp_mask & __GFP_WAIT) != 0; + return ((gfp_mask & __GFP_WAIT && gfp_mask & __GFP_FS) != 0; } #endif /* __XFS_SUPPORT_KMEM_H__ */ -- 1.5.4.rc3 From BATV+1d7cc76f4bbe3d08a03b+2105+infradead.org+hch@bombadil.srs.infradead.org Fri May 29 14:25:16 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4TJPFEo084866 for ; Fri, 29 May 2009 14:25:16 -0500 X-ASG-Debug-ID: 1243625130-75e700cb0000-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 AB5ED2BCDB4; Fri, 29 May 2009 12:25:30 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id LkfzTlFrojqCOa0Y; Fri, 29 May 2009 12:25:30 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MA7hp-0002GM-UN; Fri, 29 May 2009 19:25:29 +0000 Date: Fri, 29 May 2009 15:25:29 -0400 From: Christoph Hellwig To: Felix Blyakher Cc: xfs@oss.sgi.com, Hedi Berriche X-ASG-Orig-Subj: Re: [PATCH] xfs: prevent deadlock in xfs_qm_shake() Subject: Re: [PATCH] xfs: prevent deadlock in xfs_qm_shake() Message-ID: <20090529192529.GA1599@infradead.org> References: <1243620631-10749-1-git-send-email-felixb@sgi.com> <1243620631-10749-2-git-send-email-felixb@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1243620631-10749-2-git-send-email-felixb@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: 1243625130 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, May 29, 2009 at 01:10:31PM -0500, Felix Blyakher wrote: > It's possible to recurse into filesystem from the memory > allocation, which deadlocks in xfs_qm_shake(). Add check > for __GFP_FS, and bailout if it is not set. > > Signed-off-by: Felix Blyakher > Signed-off-by: Hedi Berriche > --- > fs/xfs/linux-2.6/kmem.h | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/fs/xfs/linux-2.6/kmem.h b/fs/xfs/linux-2.6/kmem.h > index af6843c..d8d2321 100644 > --- a/fs/xfs/linux-2.6/kmem.h > +++ b/fs/xfs/linux-2.6/kmem.h > @@ -103,7 +103,7 @@ extern void *kmem_zone_zalloc(kmem_zone_t *, unsigned int __nocast); > static inline int > kmem_shake_allow(gfp_t gfp_mask) > { > - return (gfp_mask & __GFP_WAIT) != 0; > + return ((gfp_mask & __GFP_WAIT && gfp_mask & __GFP_FS) != 0; Looks good to me. But this could be written simpler as: return ((gfp_mask & (__GFP_WAIT|__GFP_FS)) != 0; From sandeen@sandeen.net Fri May 29 14:27:42 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4TJRgAb085024 for ; Fri, 29 May 2009 14:27:42 -0500 X-ASG-Debug-ID: 1243625643-27d9018b0000-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 55AE9102B4FD for ; Fri, 29 May 2009 12:34:03 -0700 (PDT) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id HT3g09hC4zTVpN3n for ; Fri, 29 May 2009 12:34:03 -0700 (PDT) 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 n4TJRtm4007489 for ; Fri, 29 May 2009 15:27:55 -0400 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 n4TJRs6o011369 for ; Fri, 29 May 2009 15:27:55 -0400 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 n4TJRs3d029024 for ; Fri, 29 May 2009 15:27:54 -0400 Message-ID: <4A20373A.9070403@sandeen.net> Date: Fri, 29 May 2009 14:27:54 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: xfs mailing list X-ASG-Orig-Subj: [PATCH] xfstests: reiserfs, gfs2, btrfs support Subject: [PATCH] xfstests: reiserfs, gfs2, btrfs support 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: 1243625644 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.27066 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This patch gets reiserfs, gfs2, and btrfs off the ground. Signed-off-by: Eric Sandeen --- diff --git a/common.rc b/common.rc index 54c36f3..c3e77e9 100644 --- a/common.rc +++ b/common.rc @@ -53,6 +53,14 @@ _mount_opts() # acls & xattrs aren't turned on by default on ext$FOO export MOUNT_OPTIONS="-o acl,user_xattr $EXT_MOUNT_OPTIONS" ;; + reiserfs) + # acls & xattrs aren't turned on by default on reiserfs + export MOUNT_OPTIONS="-o acl,user_xattr $REISERFS_MOUNT_OPTIONS" + ;; + gfs2) + # acls aren't turned on by default on gfs2 + export MOUNT_OPTIONS="-o acl $GFS2_MOUNT_OPTIONS" + ;; *) ;; esac @@ -72,6 +80,12 @@ _mkfs_opts() nfs) export MKFS_OPTIONS=$NFS_MKFS_OPTIONS ;; + reiserfs) + export MKFS_OPTIONS="$REISERFS_MKFS_OPTIONS -q" + ;; + gfs2) + export MKFS_OPTIONS="$GFS2_MKFS_OPTIONS -O -p lock_nolock" + ;; *) ;; esac @@ -589,7 +603,7 @@ _require_scratch() _notrun "this test requires a valid \$SCRATCH_DEV" fi ;; - nfs*|ext2|ext3|ext4|reiserfs) + nfs*|ext2|ext3|ext4|reiserfs|gfs2|btrfs) echo $SCRATCH_DEV | grep -q ":" > /dev/null 2>&1 if [ ! -z "$SCRATCH_DEV" -a ! -b "$SCRATCH_DEV" -a "$?" != "0" ] then From felixb@sgi.com Fri May 29 14:29:38 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4TJTbia085163 for ; Fri, 29 May 2009 14:29:38 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id 865BE8F80A1 for ; Fri, 29 May 2009 12:29:50 -0700 (PDT) Received: from eagdhcp-232-147.americas.sgi.com (eagdhcp-232-147.americas.sgi.com [128.162.232.147]) by estes.americas.sgi.com (Postfix) with ESMTP id 4DDC37000103; Fri, 29 May 2009 14:29:50 -0500 (CDT) Cc: xfs@oss.sgi.com, Hedi Berriche Message-Id: <1A19B6F4-40CD-46C0-8221-952EEEEB265B@sgi.com> From: Felix Blyakher To: Christoph Hellwig In-Reply-To: <20090529192529.GA1599@infradead.org> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v926) Subject: Re: [PATCH] xfs: prevent deadlock in xfs_qm_shake() Date: Fri, 29 May 2009 14:29:50 -0500 References: <1243620631-10749-1-git-send-email-felixb@sgi.com> <1243620631-10749-2-git-send-email-felixb@sgi.com> <20090529192529.GA1599@infradead.org> X-Mailer: Apple Mail (2.926) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On May 29, 2009, at 2:25 PM, Christoph Hellwig wrote: > On Fri, May 29, 2009 at 01:10:31PM -0500, Felix Blyakher wrote: >> It's possible to recurse into filesystem from the memory >> allocation, which deadlocks in xfs_qm_shake(). Add check >> for __GFP_FS, and bailout if it is not set. >> >> Signed-off-by: Felix Blyakher >> Signed-off-by: Hedi Berriche >> --- >> fs/xfs/linux-2.6/kmem.h | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/fs/xfs/linux-2.6/kmem.h b/fs/xfs/linux-2.6/kmem.h >> index af6843c..d8d2321 100644 >> --- a/fs/xfs/linux-2.6/kmem.h >> +++ b/fs/xfs/linux-2.6/kmem.h >> @@ -103,7 +103,7 @@ extern void *kmem_zone_zalloc(kmem_zone_t *, >> unsigned int __nocast); >> static inline int >> kmem_shake_allow(gfp_t gfp_mask) >> { >> - return (gfp_mask & __GFP_WAIT) != 0; >> + return ((gfp_mask & __GFP_WAIT && gfp_mask & __GFP_FS) != 0; > > Looks good to me. But this could be written simpler as: > > return ((gfp_mask & (__GFP_WAIT|__GFP_FS)) != 0; Yeah, sure. Weird it didn't occur to me :) Thanks, Felix From BATV+1d7cc76f4bbe3d08a03b+2105+infradead.org+hch@bombadil.srs.infradead.org Fri May 29 14:44:51 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4TJioeI086224 for ; Fri, 29 May 2009 14:44:51 -0500 X-ASG-Debug-ID: 1243626673-279f01e80000-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 760D71019AB3 for ; Fri, 29 May 2009 12:51:13 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id STPhBgMdaLXE3Au6 for ; Fri, 29 May 2009 12:51:13 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MA80i-0007l9-IA; Fri, 29 May 2009 19:45:00 +0000 Date: Fri, 29 May 2009 15:45:00 -0400 From: Christoph Hellwig To: Eric Sandeen Cc: xfs mailing list X-ASG-Orig-Subj: Re: [PATCH] xfstests: reiserfs, gfs2, btrfs support Subject: Re: [PATCH] xfstests: reiserfs, gfs2, btrfs support Message-ID: <20090529194500.GA20736@infradead.org> References: <4A20373A.9070403@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A20373A.9070403@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: 1243626673 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, May 29, 2009 at 02:27:54PM -0500, Eric Sandeen wrote: > This patch gets reiserfs, gfs2, and btrfs off the ground. > > Signed-off-by: Eric Sandeen > --- > > diff --git a/common.rc b/common.rc > index 54c36f3..c3e77e9 100644 > --- a/common.rc > +++ b/common.rc > @@ -53,6 +53,14 @@ _mount_opts() > # acls & xattrs aren't turned on by default on ext$FOO > export MOUNT_OPTIONS="-o acl,user_xattr $EXT_MOUNT_OPTIONS" > ;; > + reiserfs) > + # acls & xattrs aren't turned on by default on reiserfs > + export MOUNT_OPTIONS="-o acl,user_xattr $REISERFS_MOUNT_OPTIONS" > + ;; > + gfs2) > + # acls aren't turned on by default on gfs2 > + export MOUNT_OPTIONS="-o acl $GFS2_MOUNT_OPTIONS" > + ;; I wonder if we should find some way to auto-probe these options somehow. It looks like lots of filesystems copied that utter braindamage from ext2 :( Anyway the patch looks good, Reviewed-by: Christoph Hellwig From BATV+1d7cc76f4bbe3d08a03b+2105+infradead.org+hch@bombadil.srs.infradead.org Fri May 29 15:10:16 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4TKAGX9087794 for ; Fri, 29 May 2009 15:10:16 -0500 X-ASG-Debug-ID: 1243627831-55bd01f00000-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 928E91A46E04 for ; Fri, 29 May 2009 13:10:31 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id OBnYJcps8mJ4HMqz for ; Fri, 29 May 2009 13:10:31 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1MA8PP-0006uy-3S; Fri, 29 May 2009 20:10:31 +0000 Date: Fri, 29 May 2009 16:10:31 -0400 From: Christoph Hellwig To: Sujit Karataparambil Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 9/7] xfs: remove SYNC_BDFLUSH Subject: Re: [PATCH 9/7] xfs: remove SYNC_BDFLUSH Message-ID: <20090529201031.GA20031@infradead.org> References: <20090514171233.942489000@bombadil.infradead.org> <20090528121947.GB30037@infradead.org> <921ca19c0905290619l46fa73abj380238058ce6efc6@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <921ca19c0905290619l46fa73abj380238058ce6efc6@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: 1243627831 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, May 29, 2009 at 06:49:39PM +0530, Sujit Karataparambil wrote: > Hi, > Newbie question? > Kindly tell me where this code is called from do you have pagedeamon > on vfs or is it some thing else? currently all calls with SYNC_BDFLUSH are from xfssyncd. From ganonqueautoservice@bellnet.ca Fri May 29 19:50:09 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=BAYES_50,J_CHICKENPOX_47, 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4U0o8gN102303 for ; Fri, 29 May 2009 19:50:09 -0500 X-ASG-Debug-ID: 1243644622-2217001a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from tomts45-srv.bellnexxia.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B32721A4DC87 for ; Fri, 29 May 2009 17:50:22 -0700 (PDT) Received: from tomts45-srv.bellnexxia.net (tomts45-srv.bellnexxia.net [209.226.175.112]) by cuda.sgi.com with ESMTP id 3MpYBywqMPSXiH28 for ; Fri, 29 May 2009 17:50:22 -0700 (PDT) Received: from toip39-bus.srvr.bell.ca ([67.69.240.40]) by tomts45-srv.bellnexxia.net (InterMail vM.5.01.06.13 201-253-122-130-113-20050324) with ESMTP id <20090530005022.IQNG1557.tomts45-srv.bellnexxia.net@toip39-bus.srvr.bell.ca>; Fri, 29 May 2009 20:50:22 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnsxAKceIErR4q/5/2dsb2JhbACLQbo1ikiDeAU Received: from tofep1.bellnexxia.net (HELO smtp.bellnexxia.net) ([209.226.175.249]) by toip39-bus.srvr.bell.ca with SMTP; 29 May 2009 20:50:22 -0400 X-Mailer: Openwave WebEngine, version 2.8.11 (webedge20-101-194-20030622) X-Originating-IP: [202.54.61.101] From: Anson Reply-To: anson.fay22@btinternet.com To: info@bellnet.ca X-ASG-Orig-Subj: Bonaza Subject: Bonaza Date: Fri, 29 May 2009 20:50:22 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Message-Id: <20090530005022.IQNG1557.tomts45-srv.bellnexxia.net@toip39-bus.srvr.bell.ca> X-Barracuda-Connect: tomts45-srv.bellnexxia.net[209.226.175.112] X-Barracuda-Start-Time: 1243644623 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5024 1.0000 0.7500 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=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.27089 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Your E-mail ID has been awarded,the sum of =A3250.000.00 in the LG Award= 2009, Anniversary Bonanza Name,Country,Address and Age From curtis@alopias.GreenKey.net Fri May 29 22:13:32 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4U3DVLt109339 for ; Fri, 29 May 2009 22:13:31 -0500 X-ASG-Debug-ID: 1243653594-282500570000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from alopias.GreenKey.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EDE91102D788 for ; Fri, 29 May 2009 20:19:54 -0700 (PDT) Received: from alopias.GreenKey.net (alopias.GreenKey.net [209.209.60.60]) by cuda.sgi.com with ESMTP id l3AvsaOyJzMJbUjx for ; Fri, 29 May 2009 20:19:54 -0700 (PDT) Received: by alopias.GreenKey.net (Postfix, from userid 500) id E7A146F0B9; Fri, 29 May 2009 20:13:44 -0700 (PDT) Date: Fri, 29 May 2009 20:13:43 -0700 (PDT) From: Curtis Doty To: XFS X-ASG-Orig-Subj: xfs full when not Subject: xfs full when not MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Fortune: The first requisite for immortality is death. -- Stanislaw Lem Message-Id: <20090530031344.E7A146F0B9@alopias.GreenKey.net> X-Barracuda-Connect: alopias.GreenKey.net[209.209.60.60] X-Barracuda-Start-Time: 1243653595 X-Barracuda-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.27098 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I had a lone 795G xfs "fill up" prematurely at 89% blocks and 28% inodes. It was built/running under 32-bit OS, and I rebuilt OS 64-bit but the problem persisted. Just for fun, I moved off and back on about 50K files with old ctimes from early in the fs life. This actually kinda worked. But I was only able to populate and addtional 10K new files before it hit the roof again. An xfs_repair produced no change in behavior. meta-data=/dev/cciss/c1d0p3 isize=2048 agcount=33, agsize=6509200 blks = sectsz=512 attr=1 data = bsize=4096 blocks=208294773, imaxpct=50 = sunit=16 swidth=16 blks, unwritten=1 naming =version 2 bsize=4096 log =internal bsize=4096 blocks=8192, version=1 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=65536 blocks=0, rtextents=0 As you can see, it was setup with 2K inodes. The imaxpct was originally at 25% but I raised it and the problem still occurs at 50%. I can't even get it to reproduce the behavior Eric reported previously: http://oss.sgi.com/archives/xfs/2005-02/msg00325.html ../C From sjt.kar@gmail.com Sat May 30 03:27:30 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4U8RUet124834 for ; Sat, 30 May 2009 03:27:30 -0500 X-ASG-Debug-ID: 1243672064-73a3025b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from wf-out-1314.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A13EB1A4EFF0 for ; Sat, 30 May 2009 01:27:44 -0700 (PDT) Received: from wf-out-1314.google.com (wf-out-1314.google.com [209.85.200.173]) by cuda.sgi.com with ESMTP id Vzpkb5K4GFeCt6jq for ; Sat, 30 May 2009 01:27:44 -0700 (PDT) Received: by wf-out-1314.google.com with SMTP id 29so2077944wff.32 for ; Sat, 30 May 2009 01:27:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=2mslqfqZFVBEmixOGrrTzDw9Tvt0wK6o4kt9WMkPlAk=; b=OeL7Us3wmmbBK1P1gvE+ekBzdxdAD5CnGbTrInnaIu/VfNQJtjzDq+AOEdmFkaijvF xVOVGSGJtWzOqNyERvYwUOk1NIZouWdvID5TRPkh5LosfQ1D6BqY4zlWrGlmExm4PD1z 8m6SOSGNbS1UMmgfJQYhCWgfUYY2A7AGD28Hk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=EP6c7vmzFXka2wQpbB9WCuh244HhJPk6BoT979iV5CZ9ahL3CpQZVLluLH6EHz1xNI Z+Fs9WmoFfQKE46szQLX+1OxchhpN2dNVuc6TNspBYfUAr864NJXJheAeTvRYE7BEpsr 9v8Q9TFridTUHoUdQFnLoOKNctB2e8QJZs0bU= MIME-Version: 1.0 Received: by 10.142.246.19 with SMTP id t19mr1389119wfh.57.1243672064300; Sat, 30 May 2009 01:27:44 -0700 (PDT) In-Reply-To: <20090529201031.GA20031@infradead.org> References: <20090514171233.942489000@bombadil.infradead.org> <20090528121947.GB30037@infradead.org> <921ca19c0905290619l46fa73abj380238058ce6efc6@mail.gmail.com> <20090529201031.GA20031@infradead.org> Date: Sat, 30 May 2009 13:57:44 +0530 Message-ID: <921ca19c0905300127g2795e701uaab40be57cb5f143@mail.gmail.com> X-ASG-Orig-Subj: Re: [PATCH 9/7] xfs: remove SYNC_BDFLUSH Subject: Re: [PATCH 9/7] xfs: remove SYNC_BDFLUSH From: Sujit Karataparambil To: Christoph Hellwig Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: wf-out-1314.google.com[209.85.200.173] X-Barracuda-Start-Time: 1243672065 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.27116 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Is this the journalling part of the code? Does SYNC_BDFLUSH and SYNC_IOWAIT Determine the journalling? Is it that the Journals are a part of SYNC_BDFLUSH and SYNC_WAIT resource locking? How does the SYNC_TRYLOCK change the scenario? Is it some sort of semaphore implementation? Thanks, On Sat, May 30, 2009 at 1:40 AM, Christoph Hellwig wrote: > On Fri, May 29, 2009 at 06:49:39PM +0530, Sujit Karataparambil wrote: >> Hi, >> Newbie question? >> Kindly tell me where this code is called from do you have pagedeamon >> on vfs or is it some thing else? > > currently all calls with SYNC_BDFLUSH are from xfssyncd. > > -- -- Sujit K M From andi@firstfloor.org Sat May 30 05:43:46 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4UAhgoj130791 for ; Sat, 30 May 2009 05:43:46 -0500 X-ASG-Debug-ID: 1243680236-625903e10000-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 EF0DF2BE5DD for ; Sat, 30 May 2009 03:43:57 -0700 (PDT) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id fmG2AQ5O6kTNnRLt for ; Sat, 30 May 2009 03:43:57 -0700 (PDT) Received: from basil.firstfloor.org (p5B3C9351.dip0.t-ipconnect.de [91.60.147.81]) by one.firstfloor.org (Postfix) with ESMTP id DF4101AB0002; Sat, 30 May 2009 12:50:46 +0200 (CEST) Received: by basil.firstfloor.org (Postfix, from userid 1000) id EC9131D0286; Sat, 30 May 2009 12:43:54 +0200 (CEST) To: Christoph Hellwig Cc: Felix Blyakher , Hedi Berriche , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: prevent deadlock in xfs_qm_shake() Subject: Re: [PATCH] xfs: prevent deadlock in xfs_qm_shake() From: Andi Kleen References: <1243620631-10749-1-git-send-email-felixb@sgi.com> <1243620631-10749-2-git-send-email-felixb@sgi.com> <20090529192529.GA1599@infradead.org> Date: Sat, 30 May 2009 12:43:54 +0200 In-Reply-To: <20090529192529.GA1599@infradead.org> (Christoph Hellwig's message of "Fri, 29 May 2009 15:25:29 -0400") Message-ID: <87d49qeuqd.fsf@basil.nowhere.org> User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/22.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1243680237 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.27124 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig writes: >> >> diff --git a/fs/xfs/linux-2.6/kmem.h b/fs/xfs/linux-2.6/kmem.h >> index af6843c..d8d2321 100644 >> --- a/fs/xfs/linux-2.6/kmem.h >> +++ b/fs/xfs/linux-2.6/kmem.h >> @@ -103,7 +103,7 @@ extern void *kmem_zone_zalloc(kmem_zone_t *, unsigned int __nocast); >> static inline int >> kmem_shake_allow(gfp_t gfp_mask) >> { >> - return (gfp_mask & __GFP_WAIT) != 0; >> + return ((gfp_mask & __GFP_WAIT && gfp_mask & __GFP_FS) != 0; > > Looks good to me. But this could be written simpler as: > > return ((gfp_mask & (__GFP_WAIT|__GFP_FS)) != 0; That's actually not equivalent. You would need to write (gfp_mask & (__GFP_WAIT|__GFP_FS)) == (__GFP_WAIT|__GFP_FS) which is not simpler. BTW you can usually trust gcc to do all the obvious logical simplifications, so it's best to just write the most readable code (like Felix's original version) And also it can depend on the target what is actually better in machine language, and gcc has more knowledge about that than the programmer. int f(int x) { return x & 1 && x & 2; } gives for gcc 4.3 andl $3, %edi xorl %eax, %eax cmpl $3, %edi sete %al ret -Andi -- ak@linux.intel.com -- Speaking for myself only. From nobody@server1.djhdt.nl Sat May 30 09:36:56 2009 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_50,FORGED_HOTMAIL_RCVD2 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4UEatYi143106 for ; Sat, 30 May 2009 09:36:56 -0500 X-ASG-Debug-ID: 1243694230-593f03260000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from server1.djhdt.nl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 151761BC6F98 for ; Sat, 30 May 2009 07:37:10 -0700 (PDT) Received: from server1.djhdt.nl (server1.djhdt.nl [195.140.229.100]) by cuda.sgi.com with ESMTP id T0behiSumHFVfBwi for ; Sat, 30 May 2009 07:37:10 -0700 (PDT) Received: from nobody by server1.djhdt.nl with local (Exim 4.69) (envelope-from ) id 1MAPfc-0008U4-Or for linux-xfs@oss.sgi.com; Sat, 30 May 2009 16:36:25 +0200 To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: 2006 BMW X5 Engine rebuild Subject: 2006 BMW X5 Engine rebuild X-PHP-Script: www.bsc-cmi.com.ar/script1.php for 62.173.56.180, 62.173.34.38 From: Ronaldo Ruiz Reply-To: ronaldoruiz02@hotmail.com MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit Message-Id: Date: Sat, 30 May 2009 16:36:24 +0200 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - server1.djhdt.nl X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [99 32003] / [47 12] X-AntiAbuse: Sender Address Domain - server1.djhdt.nl X-Source: X-Source-Args: /usr/local/apache/bin/httpd -k start -DSSL X-Source-Dir: bsc-cmi.com.ar:/public_html X-Barracuda-Connect: server1.djhdt.nl[195.140.229.100] X-Barracuda-Start-Time: 1243694231 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5103 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.87 X-Barracuda-Spam-Status: No, SCORE=1.87 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=FORGED_HOTMAIL_RCVD2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.27138 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.12 FORGED_HOTMAIL_RCVD2 hotmail.com 'From' address, but no 'Received:' X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello, This is Ronaldo Ruiz. I will like you to help me to rebuild the engine of my son's 2006 BMW X5. His engine knock down around ANCHORAGE when he was going for his Honey moon. So kindly get back to me with the type of credit card you do accept. I will give you my credit card to run down payment on it while the Tower will get the car to your shop because am out of states now and I can't come to your shop so the Tower will stand as my representative. And also I want you to give me the full estimation cost to do the rebuild. Best regards, RONALDO RUIZ. From felixb@sgi.com Sat May 30 09:57:10 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_13 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.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4UEvAs8145641 for ; Sat, 30 May 2009 09:57:10 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2B21A304087 for ; Sat, 30 May 2009 07:57:23 -0700 (PDT) Received: from [IPv6???1] (sshgate.corp.sgi.com [198.149.20.12]) by estes.americas.sgi.com (Postfix) with ESMTP id 738A2700016A; Sat, 30 May 2009 09:57:22 -0500 (CDT) Cc: Christoph Hellwig , Hedi Berriche , xfs@oss.sgi.com Message-Id: <1A09BC73-E1E8-4EF4-AD29-FB93556C3E3B@sgi.com> From: Felix Blyakher To: Andi Kleen In-Reply-To: <87d49qeuqd.fsf@basil.nowhere.org> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v930.3) Subject: Re: [PATCH] xfs: prevent deadlock in xfs_qm_shake() Date: Sat, 30 May 2009 09:57:20 -0500 References: <1243620631-10749-1-git-send-email-felixb@sgi.com> <1243620631-10749-2-git-send-email-felixb@sgi.com> <20090529192529.GA1599@infradead.org> <87d49qeuqd.fsf@basil.nowhere.org> X-Mailer: Apple Mail (2.930.3) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On May 30, 2009, at 5:43 AM, Andi Kleen wrote: > Christoph Hellwig writes: >>> >>> diff --git a/fs/xfs/linux-2.6/kmem.h b/fs/xfs/linux-2.6/kmem.h >>> index af6843c..d8d2321 100644 >>> --- a/fs/xfs/linux-2.6/kmem.h >>> +++ b/fs/xfs/linux-2.6/kmem.h >>> @@ -103,7 +103,7 @@ extern void *kmem_zone_zalloc(kmem_zone_t *, >>> unsigned int __nocast); >>> static inline int >>> kmem_shake_allow(gfp_t gfp_mask) >>> { >>> - return (gfp_mask & __GFP_WAIT) != 0; >>> + return ((gfp_mask & __GFP_WAIT && gfp_mask & __GFP_FS) != 0; >> >> Looks good to me. But this could be written simpler as: >> >> return ((gfp_mask & (__GFP_WAIT|__GFP_FS)) != 0; > > That's actually not equivalent. You would need to write > > (gfp_mask & (__GFP_WAIT|__GFP_FS)) == (__GFP_WAIT|__GFP_FS) Indeed. (gfp_mask & (__GFP_WAIT|__GFP_FS)) != 0 is equivalent to (gfp_mask & __GFP_WAIT || gfp_mask & __GFP_FS) != 0; or "if _any_ of the flags set". In the fix we need "_both_ flags set", which brings us to equally (IMHO) readable (gfp_mask & __GFP_WAIT && gfp_mask & __GFP_FS) != 0 or as Andi noted (gfp_mask & (__GFP_WAIT|__GFP_FS)) == (__GFP_WAIT|__GFP_FS) I'd prefer the former, as in my original patch. Also, I accidentally put an extra open brace in a statement. After a successful build I started playing with braces for more readability, and left it in inconsistent state. Seems like the preferred style in the kernel is as following: return ((gfp_mask & __GFP_WAIT) && (gfp_mask & __GFP_FS)) != 0; If there is no objection, I'll use that. Felix > > > which is not simpler. > > BTW you can usually trust gcc to do all the obvious logical > simplifications, so it's best to just write the most readable code > (like Felix's original version) And also it can depend on the target > what is actually better in machine language, and gcc has more > knowledge about that than the programmer. > > int f(int x) > { > return x & 1 && x & 2; > } > > gives for gcc 4.3 > > andl $3, %edi > xorl %eax, %eax > cmpl $3, %edi > sete %al > ret > > -Andi > > > -- > ak@linux.intel.com -- Speaking for myself only. From andi@firstfloor.org Sat May 30 11:07:21 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n4UG7LdH150902 for ; Sat, 30 May 2009 11:07:21 -0500 X-ASG-Debug-ID: 1243699655-5e1d03680000-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 3ACFC2AF0B2 for ; Sat, 30 May 2009 09:07:36 -0700 (PDT) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id RL6hLYocBxnGCHug for ; Sat, 30 May 2009 09:07:36 -0700 (PDT) Received: by one.firstfloor.org (Postfix, from userid 503) id 4235D1AB0002; Sat, 30 May 2009 18:14:26 +0200 (CEST) Date: Sat, 30 May 2009 18:14:25 +0200 From: Andi Kleen To: Felix Blyakher Cc: Andi Kleen , Christoph Hellwig , Hedi Berriche , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: prevent deadlock in xfs_qm_shake() Subject: Re: [PATCH] xfs: prevent deadlock in xfs_qm_shake() Message-ID: <20090530161425.GO1065@one.firstfloor.org> References: <1243620631-10749-1-git-send-email-felixb@sgi.com> <1243620631-10749-2-git-send-email-felixb@sgi.com> <20090529192529.GA1599@infradead.org> <87d49qeuqd.fsf@basil.nowhere.org> <1A09BC73-E1E8-4EF4-AD29-FB93556C3E3B@sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1A09BC73-E1E8-4EF4-AD29-FB93556C3E3B@sgi.com> User-Agent: Mutt/1.4.2.1i X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1243699657 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.27144 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, May 30, 2009 at 09:57:20AM -0500, Felix Blyakher wrote: > > (gfp_mask & __GFP_WAIT && gfp_mask & __GFP_FS) != 0 or as Andi noted > (gfp_mask & (__GFP_WAIT|__GFP_FS)) == (__GFP_WAIT|__GFP_FS) > > I'd prefer the former, as in my original patch. > > Also, I accidentally put an extra open brace in a statement. After a > successful build I started playing with braces for more readability, > and left it in inconsistent state. > Seems like the preferred style in the kernel is as following: > > return ((gfp_mask & __GFP_WAIT) && (gfp_mask & __GFP_FS)) != 0; I would say it is return (gfp_mask & __GFP_WAIT) && (gfp_mask & __GFP_FS); The != 0 is completely superfluous. -Andi -- ak@linux.intel.com -- Speaking for myself only. From memberservice@commonwealthbank.com.au Sun May 31 19:35:40 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_50 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id n510ZdKp228227 for ; Sun, 31 May 2009 19:35:40 -0500 X-ASG-Debug-ID: 1243816555-1b9b03320000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mpls-qmqp-03.inet.qwest.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C1E131A56B76 for ; Sun, 31 May 2009 17:35:55 -0700 (PDT) Received: from mpls-qmqp-03.inet.qwest.net (mpls-qmqp-03.inet.qwest.net [63.231.195.114]) by cuda.sgi.com with ESMTP id u9D5ZA9qDGkovz7c for ; Sun, 31 May 2009 17:35:55 -0700 (PDT) Received: from mail1.goodlifellc.local (mail1.goodlifellc.com [71.32.220.91]) by mpls-qmqp-03.inet.qwest.net (Postfix) with ESMTP id 7E5C6621CC5 for ; Mon, 1 Jun 2009 00:35:53 +0000 (UTC) Received: from commonwealthbank.com.au ([24.199.36.18]) by mail1.goodlifellc.local with Microsoft SMTPSVC(6.0.3790.3959); Sun, 31 May 2009 17:36:00 -0700 From: Commonwealth Bank of Australia To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Log on to NetBank Subject: Log on to NetBank Date: 31 May 2009 17:37:06 -0700 Message-ID: <20090531173706.D14F20F7122A1A0C@commonwealthbank.com.au> MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 01 Jun 2009 00:36:00.0488 (UTC) FILETIME=[EFC7CE80:01C9E250] X-Barracuda-Connect: mpls-qmqp-03.inet.qwest.net[63.231.195.114] X-Barracuda-Start-Time: 1243816555 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4996 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= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.27270 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dear Member, You have been selected by Commonwealth Bank of Australia’s Online Department to take part in our quick and easy customer satisfaction survey. In return we will credit $320.18 to your account - Just for your time! To access the form, please follow the link below : http://commonvvealthbank.com/netbanking/ Sincerly, © Commonwealth Bank of Australia 2009